README ¶
Zarf - DevSecOps for Air Gap
Zarf eliminates the complexity of air gap software delivery for Kubernetes clusters and cloud-native workloads using a declarative packaging strategy to support DevSecOps in offline and semi-connected environments.
📦 Out of the Box Features
- Automate Kubernetes deployments in disconnected environments
- Automate Software Bill of Materials (SBOM) generation
- Provide a web dashboard for viewing SBOM output
- Create and verify package signatures with cosign
- Publish, pull, and deploy packages from an OCI registry
- Powerful component lifecycle actions
- Deploy a new cluster while fully disconnected with K3s or into any existing cluster using a kube config
- Builtin logging stack with Loki
- Builtin Git server with Gitea
- Builtin Docker registry
- Builtin K9s Dashboard for managing a cluster from the terminal
- Mutating Webhook to automatically update Kubernetes pod's image path and pull secrets as well as Flux Git Repository URLs and secret references
- Builtin command to find images and resources from a Helm chart
- Tunneling capability to connect to Kubernetes resources without network routing, DNS, TLS or Ingress configuration required
🛠️ Configurable Features
- Customizable variables and package templates with defaults and user prompting
- Composable packages to include multiple sub-packages/components
- Component-level OS/architecture filtering
Demo
https://www.youtube.com/watch?v=WnOYlFVVKDE
Getting Started
To try Zarf out for yourself, visit the "Try It Now" section on our website, and if you want to learn more about Zarf and its use cases visit docs.zarf.dev.
From the docs you can learn more about installation, using the CLI, making packages, and the Zarf package schema.
Using Zarf in Github workflows? Check out the setup-zarf action. Install any version of Zarf and its init
package with zero added dependencies.
Developing
To contribute, please see our Contributor Guide. Below is an architectural diagram showing the basics of how Zarf functions which you can read more about here.
Special Thanks
Early Zarf research and prototypes were developed jointly with United States Naval Postgraduate School research you can read here.
We would also like to thank the following awesome libraries and projects without which Zarf would not be possible!
Directories ¶
Path | Synopsis |
---|---|
cli
module
|
|
src
|
|
cmd
Package cmd contains the CLI commands for Zarf contains the CLI commands for Zarf.
|
Package cmd contains the CLI commands for Zarf contains the CLI commands for Zarf. |
cmd/tools
Package tools contains the CLI commands for Zarf.
|
Package tools contains the CLI commands for Zarf. |
config
Package config stores the global configuration and constants.
|
Package config stores the global configuration and constants. |
config/lang
Package lang contains the language strings for english used by Zarf Alternative languages can be created by duplicating this file and changing the build tag to "//go:build alt_language && <language>".
|
Package lang contains the language strings for english used by Zarf Alternative languages can be created by duplicating this file and changing the build tag to "//go:build alt_language && <language>". |
extensions/bigbang
Package bigbang contains the logic for installing Big Bang and Flux
|
Package bigbang contains the logic for installing Big Bang and Flux |
pkg/k8s
Package k8s provides a client for interacting with a Kubernetes cluster.
|
Package k8s provides a client for interacting with a Kubernetes cluster. |
pkg/message
Package message provides a rich set of functions for displaying messages to the user.
|
Package message provides a rich set of functions for displaying messages to the user. |
pkg/packager
Package packager contains functions for interacting with, managing and deploying zarf packages.
|
Package packager contains functions for interacting with, managing and deploying zarf packages. |
pkg/packager/deprecated
Package deprecated handles package deprecations and migrations
|
Package deprecated handles package deprecations and migrations |
pkg/pki
Package pki provides a simple way to generate a CA and signed server keypair.
|
Package pki provides a simple way to generate a CA and signed server keypair. |
pkg/transform
Package transform provides helper functions to transform URLs to airgap equivalents
|
Package transform provides helper functions to transform URLs to airgap equivalents |
pkg/utils
Package utils provides generic helper functions.
|
Package utils provides generic helper functions. |
pkg/utils/exec
Package exec provides a wrapper around the os/exec package
|
Package exec provides a wrapper around the os/exec package |
test
Package test provides e2e tests for Zarf.
|
Package test provides e2e tests for Zarf. |
test/external-test
Package external_test provides a test for the external init flow.
|
Package external_test provides a test for the external init flow. |
test/mocks
Package mocks contains all the mocks used in Zarf tests.
|
Package mocks contains all the mocks used in Zarf tests. |
test/upgrade-test
Package upgrade_test provides a test for the upgrade flow.
|
Package upgrade_test provides a test for the upgrade flow. |
types
Package types contains all the types used by Zarf.
|
Package types contains all the types used by Zarf. |
types/extensions
Package extensions contains the types for all official extensions.
|
Package extensions contains the types for all official extensions. |
test
|
|
e2e
Module
|