soci-snapshotter
containers-roadmap
soci-snapshotter | containers-roadmap | |
---|---|---|
6 | 80 | |
470 | 5,149 | |
4.0% | 0.5% | |
9.2 | 2.0 | |
2 days ago | 9 months ago | |
Go | Shell | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
soci-snapshotter
- Seekable OCI - Lazy Loading Container Images on ECS and Fargate
-
Kubernetes SidecarContainers feature is merged
So I can give some behind the scenes insight on that. I don't think image caching will be a thing in the way people are explicitly asking, but we are exploring some alternative approaches to speeding up container launch that we think will actually be even more effective than what people are asking for.
First of all we want to leverage some of the learnings from AWS Lambda, in specific some of the research we've done that shows that about 75% of container images only contain 5% unique bytes (https://brooker.co.za/blog/2023/05/23/snapshot-loading.html). This makes deduplication incredibly effective, and allows the deployment of a smart cache that holds the 95% of popular recurring files and file chunks from container images, while letting the unique 5% be loaded over the network. There will be outliers of course, but if you base your image off a well used base image then it will already be in the cache. This is partially implemented. You will notice that if you use certain base images your Fargate container seems to start a bit faster. (Unfortunately we do not really publish this list or commit to what base images are in the cache at this time).
In another step along this path we are working on SOCI Snapshotter (https://github.com/awslabs/soci-snapshotter) forked off of Stargz Snapshotter. This allows a container image to have an attached index file that actually allows it to start up before all the contents are downloaded, and lazy load in remaining chunks of the image as needed. This takes advantage of another aspect of container images which is that many of them don't actually use all of the bytes in the image anyway.
Over time we want to make these two pieces (deduplication and lazy loading) completely behind the scenes so you just upload your image to Elastic Container Registry and AWS Fargate seems to magically start your image dramatically faster than you could locally if downloading the image from scratch.
-
What is a containerd snapshotter?
This behavior allows us to set up snapshots out of band, that is outside the "normal" workflow. One such example is the soci snapshotter which allows image lazy loading. The snapshotter ships with a "rpull" command which performs this out of band prep. During rpull, the command calls the soci snapshotter which creates fuse mounts for each layer that has an index (remote snapshot). For layers that do not have an index, it downloads them as usual (local snapshot). The local snapshot is created with overlay mount. Anyway, this is just a detail, the important bit is that folders created for a local snapshot only contain that layer, which is exactly what overlay does. For example, after rpull we'll see something like the following:
-
A Hidden Gem: Two Ways to Improve AWS Fargate Container Launch Times
Seekable OCI (SOCI) is a technology open-sourced by AWS that enables containers to launch faster by lazily loading the container image. It’s usually not possible to fetch individual files from gzipped tar files. With SOCI, AWS borrowed some of the design principles from stargz-snapshotter, but took a different approach. A SOCI index is generated separately from the container image and is stored in the registry as an OCI Artifact and linked back to the container image by OCI Reference Types. This means that the container images do not need to be converted, image digests do not change, and image signatures remain valid.
- GitHub - awslabs/soci-snapshotter
- awslabs/soci-snapshotter
containers-roadmap
-
General Availability of the AWS SDK for Rust
Thanks for showing up and answering questions. Congratulations on the release.
What kind of plans for support of Rust's evolving async ecosystem?
Any particular reason why the public roadmap does not show the columns similar to "Researching", "We're Working On It" like the other similar public AWS Roadmaps? See example for Containers: https://github.com/aws/containers-roadmap/projects/1
Would be nice to have fully working examples on Github, for most common scenarios across most AWS services. This is something that historically
-
Architecting for Resilience: Crafting Opinionated EKS Clusters with Karpenter & Cilium Cluster Mesh — Part 1
Second, We will only rely on one managed node group, but we will leverage Karpenter; however, karpenter needs to be deployed on a node. (This may change soon once the Karpenter is available on the EKS Control Plane.) [EKS] Karpenter inside control plane · Issue #1792 · aws/containers-roadmap
-
Running a Web Application with 100% AWS Fargate Spot Containers 🤘
As written in the AWS documentation, during periods of extremely high demand, Fargate Spot capacity might be unavailable. In concrete terms, if your ECS service is set up to execute tasks in 100% Spot, there is a risk of running out of capacity. A workaround has been created in the hope that one day this issue will be implemented by the AWS team. This workaround allows you to set up two ECS services :
-
Kubernetes SidecarContainers feature is merged
Deploying Fargate with CDK has to have been the most pleasant developer experience I have ever had with any product so far.
If image caching becomes a reality with Fargate I can't imagine a need to ever use anything else
https://github.com/aws/containers-roadmap/issues/696
- AWS Config supports recording exclusions by resource type
- Announcing pull through cache for registry.k8s.io in Amazon Elastic Container Registry
-
EKS/Spot vs EKS Fargate/Spot?
Eks Fargate doesn't support spot yet https://github.com/aws/containers-roadmap/issues/622
- audit logging of the master plane in EKS
-
How to use Podman inside of a container
Until podman could be used with AWS ECR/ECS it's pretty much moot in my case: https://github.com/aws/containers-roadmap/issues/626
- How to keep 100% availability with a single ec2 spot instance?
What are some alternatives?
stargz-snapshotter - Fast container image distribution plugin with lazy pulling
eks-nvme-ssd-provisioner - EKS NVMe SSD provisioner for Amazon EC2 Instance Stores
cloudsql-proxy - A utility for connecting securely to your Cloud SQL instances [Moved to: https://github.com/GoogleCloudPlatform/cloud-sql-proxy]
kube-fledged - A kubernetes operator for creating and managing a cache of container images directly on the cluster worker nodes, so application pods start almost instantly
zstd - Zstandard - Fast real-time compression algorithm
netshoot - a Docker + Kubernetes network trouble-shooting swiss-army container
enhancements - Enhancements tracking repo for Kubernetes
kraken - P2P Docker registry capable of distributing TBs of data in seconds
kubernetes - Production-Grade Container Scheduling and Management
juicefs - JuiceFS is a distributed POSIX file system built on top of Redis and S3.
copilot-cli - The AWS Copilot CLI is a tool for developers to build, release and operate production ready containerized applications on AWS App Runner or Amazon ECS on AWS Fargate.
piku - The tiniest PaaS you've ever seen. Piku allows you to do git push deployments to your own servers.