jackal

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2024 License: Apache-2.0 Imports: 4 Imported by: 0

README

Jackal - DevSecOps for Air Gap

Latest Release Go version Build Status Jackal Documentation Status OpenSSF Scorecard

jackal logo

Jackal Website Jackal Documentation Jackal Slack Channel Community Meetups

Jackal 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.

Why Use Jackal

  • 💸 Free and Open-Source. Jackal will always be free to use and maintained by the open-source community.
  • ⭐️ Zero Dependencies. As a statically compiled binary, the Jackal CLI has zero dependencies to run on any machine.
  • 🔓 No Vendor Lock. There is no proprietary software that locks you into using Jackal. If you want to remove it, you can still use your Helm charts to deploy your software manually.
  • 💻 OS Agnostic. Jackal supports numerous operating systems. A full matrix of supported OSes, architectures, and feature sets is coming soon.
  • 📦 Highly Distributable. Integrate and deploy software from multiple secure development environments, including edge, embedded systems, secure cloud, data centers, and even local environments.
  • 🚀 Develop Connected, Deploy Disconnected. Teams can build and configure individual applications or entire DevSecOps environments while connected to the internet. Once created, they can be packaged and shipped to a disconnected environment to be deployed.
  • 💿 Single File Deployments. Jackal allows you to package the parts of the internet your app needs into a single compressed file to be installed without connectivity.
  • ♻️ Declarative Deployments. Jackal packages define the precise state for your application, enabling it to be deployed the same way every time.
  • 🦖 Inherit Legacy Code. Jackal packages can wrap legacy code and projects - allowing them to be deployed to modern DevSecOps environments.

📦 Out of the Box Features

🛠️ Configurable Features

Demo

preview

https://www.youtube.com/watch?v=WnOYlFVVKDE

✅ Getting Started

To try Jackal out for yourself, visit the "Try It Now" section on our website.

To learn more about Jackal and its use cases, visit docs.jackal.dev. From the docs, you can learn more about:

Using Jackal in GitHub workflows? Check out the setup-jackal action. Install any version of Jackal and its init package with zero added dependencies.

🫶 Our Community

Join our community and developers on the #Jackal slack hosted on K8s slack. Our active community of developers, users, and contributors are available to answer questions, share examples, and find new ways use Jackal together!

We are so grateful to our Jackal community for contributing bug fixes and collaborating on new features:

Made with contrib.rocks.

💻 Contributing

Want to contribute to Jackal? Check out our Contributor Guide to learn more about how to set up your development environment and begin contributing. We also recommend checking out our architectural diagram.

To dive deeper into the tech, you can read the Nerd Notes in our Docs.

Architecture Diagram

Source DrawIO

⭐️ Special Thanks

Early Jackal 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 Jackal would not be possible!

pterm/pterm mholt/archiver spf13/cobra go-git/go-git sigstore/cosign helm.sh/helm kubernetes

Documentation

Overview

Package main is the entrypoint for the Jackal binary.

Directories

Path Synopsis
src
cmd
Package cmd contains the CLI commands for Jackal contains the CLI commands for Jackal.
Package cmd contains the CLI commands for Jackal contains the CLI commands for Jackal.
cmd/common
Package common handles command configuration across all commands
Package common handles command configuration across all commands
cmd/tools
Package tools contains the CLI commands for Jackal.
Package tools contains the CLI commands for Jackal.
cmd/tools/helm
Package helm is a copy of the main package from helm to include a subset of the helm CLI in Jackal
Package helm is a copy of the main package from helm to include a subset of the helm CLI in Jackal
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 Jackal 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 Jackal 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
internal/agent
Package agent holds the mutating webhook server.
Package agent holds the mutating webhook server.
internal/agent/hooks
Package hooks contains the mutation hooks for the Jackal agent.
Package hooks contains the mutation hooks for the Jackal agent.
internal/agent/http
Package http provides a http server for the webhook and proxy.
Package http provides a http server for the webhook and proxy.
internal/agent/operations
Package operations provides functions for the mutating webhook.
Package operations provides functions for the mutating webhook.
internal/agent/state
Package state provides helpers for interacting with the Jackal agent state.
Package state provides helpers for interacting with the Jackal agent state.
internal/packager/git
Package git contains functions for interacting with git repositories.
Package git contains functions for interacting with git repositories.
internal/packager/helm
Package helm contains operations for working with helm charts.
Package helm contains operations for working with helm charts.
internal/packager/images
Package images provides functions for building and pushing images.
Package images provides functions for building and pushing images.
internal/packager/kustomize
Package kustomize provides functions for building kustomizations.
Package kustomize provides functions for building kustomizations.
internal/packager/sbom
Package sbom contains tools for generating SBOMs.
Package sbom contains tools for generating SBOMs.
internal/packager/template
Package template provides functions for templating yaml files.
Package template provides functions for templating yaml files.
internal/packager/validate
Package validate provides Jackal package validation functions.
Package validate provides Jackal package validation functions.
pkg/cluster
Package cluster contains Jackal-specific cluster management functions.
Package cluster contains Jackal-specific cluster management functions.
pkg/interactive
Package interactive contains functions for interacting with the user via STDIN.
Package interactive contains functions for interacting with the user via STDIN.
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/layout
Package layout contains functions for interacting with Jackal's package layout on disk.
Package layout contains functions for interacting with Jackal's package layout on disk.
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 Jackal packages.
Package packager contains functions for interacting with, managing and deploying Jackal packages.
pkg/packager/actions
Package actions contains functions for running component actions within Jackal packages.
Package actions contains functions for running component actions within Jackal packages.
pkg/packager/composer
Package composer contains functions for composing components within Jackal packages.
Package composer contains functions for composing components within Jackal packages.
pkg/packager/creator
Package creator contains functions for creating Jackal packages.
Package creator contains functions for creating Jackal packages.
pkg/packager/deprecated
Package deprecated handles package deprecations and migrations
Package deprecated handles package deprecations and migrations
pkg/packager/filters
Package filters contains core implementations of the ComponentFilterStrategy interface.
Package filters contains core implementations of the ComponentFilterStrategy interface.
pkg/packager/lint
Package lint contains functions for verifying jackal yaml files are valid
Package lint contains functions for verifying jackal yaml files are valid
pkg/packager/sources
Package sources contains core implementations of the PackageSource interface.
Package sources contains core implementations of the PackageSource interface.
pkg/packager/variables
Package variables contains functions for working with variables within Jackal packages.
Package variables contains functions for working with variables within Jackal packages.
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 utility functions.
Package utils provides generic utility functions.
pkg/utils/exec
Package exec provides a wrapper around the os/exec package
Package exec provides a wrapper around the os/exec package
pkg/zoci
Package zoci contains functions for interacting with Jackal packages stored in OCI registries.
Package zoci contains functions for interacting with Jackal packages stored in OCI registries.
test
Package test provides e2e tests for Jackal.
Package test provides e2e tests for Jackal.
test/external
Package external provides a test for interacting with external resources
Package external provides a test for interacting with external resources
test/mocks
Package mocks contains all the mocks used in Jackal tests.
Package mocks contains all the mocks used in Jackal tests.
types
Package types contains all the types used by Jackal.
Package types contains all the types used by Jackal.
types/extensions
Package extensions contains the types for all official extensions.
Package extensions contains the types for all official extensions.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL