Today we released v0.2.0 of Acorn. You can check it out here or just follow our installation guide to get the latest version. Our initial release was one month ago. Since then, we’ve made five v0.1.x patch releases to address minor bugs and improvements, but v0.2.0 marks our first feature release. Let’s take a look at some of the interesting features dropping.
Improved installation experience
One of the things we want to do with Acorn is make Kuberenetes more accessible to the average developer. As such, we assume users are coming to us with little Kubernetes knowledge. We want to make the installation process as easy as possible. Early feedback showed us users were getting tripped up when their clusters didn’t have the Kubernetes features required by Acorn. These are pretty standard for production-grade clusters, but most of our users are trying Acorn out on a development cluster that may be missing features or misconfigured. First and foremost on this list of installation issues was missing Ingress; others included missing a default storage class or RBAC issues. Now when you install Acorn, we’ll check all those things for you and report what’s likely to trip you up. If you’re using Docker Desktop and don’t have an Ingress, we’ll even install Traefik for you.
Container image listing
One of the most unique aspects of Acorn is the fact that your application is bundled into a single Acorn image artifact. This concept deserves a blog post of its own, but a key feature of this is that it packages the actual container images used by your app. Previously, the container images packaged by an Acorn were not transparent. Now, to get a list of all the container images your app uses, you can add the –containers flag to the images command. This output can be fed directly into image scanners. Here’s an example of using the flag:
# Verbose form, good for humans: acorn images --containers #REPOSITORY TAG IMAGE-ID CONTAINER DIGEST acorn-monitoring-operator sha256:7d34aa6fc9374b39f35cd3e77705651a60b9286aee9564131b84096592968146 ghcr.io/acorn-io/library/registry latest ddf2840f12ff registry sha256:1ea1b40d2a72e41d37b5a8d22552c89ad847600c9fed29a22b5446ae91d9e88a ghcr.io/acorn-io/library/registry latest ddf2840f12ff htpasswd-create sha256:18eac8138e63f223f3e695494c11b0c49478cc59024780d004827fbd5bd0d86e ghcr.io/acorn-io/library/registry latest ghcr.io/acorn-io/library/registry:[email protected]:363c28df7ed04e8a8813d558b696a0b010646f3021b25159696721d354732e95 redis-0-0 sha256:a9c957fd95370e75a266c926a2b740fbab4a28d7408ad29b1b9be8e2bd722f36 # Quiet form, good for computers, scripts: acorn images -c -q ghcr.io/acorn-io/library/registry:[email protected]:1ea1b40d2a72e41d37b5a8d22552c89ad847600c9fed29a22b5446ae91d9e88a ghcr.io/acorn-io/library/registry:[email protected]:18eac8138e63f223f3e695494c11b0c49478cc59024780d004827fbd5bd0d86e ghcr.io/acorn-io/library/registry:[email protected]:a9c957fd95370e75a266c926a2b740fbab4a28d7408ad29b1b9be8e2bd722f36
This feature has many applications, but an important one is image scanning. With the quiet form, you can feed the output directly into an image scanner, like Trivy.
Labels and Annotation Support
One recurring piece of feedback we have been receiving is “How do I integrated Acorn with Kubernetes technology X?” Generally, these K8s technologies offer two ways to leverage their features: CRDs and annotations on the core Kubernetes resources. We are still figuring out CRD integration, but in the meantime, you can now specify labels and annotations in your Acornfile or via the CLI and have those propagated down to the underlying core Kubernetes resources that Acorn manages. Our users will be able to use this feature to do things like leverage the advanced features of their Ingress controller or automatically provision certs through cert-manager. Here’s just a couple examples of leveraging this feature from the command line:
# Add the annotation that will cause cert-manager to automatically provision a certificate # for all containers in the app acorn run --annotation containers:"cert-manager.io/cluster-issuer=my-prod-issuer" . # Add an arbitrary label to the volumed named "data" that will be created by the app acorn run --label volumes:data:storage-tier=gold .
Wrapping it up
And that does it for the major features in v0.2.0. Let us know what you think. We’ve made many other bug fixes and minor quality-of-life improvements along the way as well. Thanks so much to the great community of users who have given Acorn a spin and provided us with amazing feedback. As always, you can reach us via:
- GitHub issues and discussion
- @acornlabs on Twitter
- Acorn Labs on LinkedIn