
This updates the Kustomize dependency for airshipctl to api/v0.3.1, which is the oldest version which will support the Replacement Transformer plugin. Some changes were needed to accomodate the fact that various apis that airshipctl was relying on were moved to kustomize-insternal packages, namely: - Integrated with the krusty.Kustomizer to drive kustomization - Removed the custom plugin loader which leveraged the Unknown type - Worked around NoFieldError becoming private, inc. removing a test As a follow on we'll need to re-integrate plugin functionality somehow. Also, in this release Kustomize has implemented support for the "config.kubernetes.io/local-config" annotation, which we'd planned to use to to avoid deploying some documents to the Kubernetes API. It turns out the semantics are different than we anticipated; Kustomize also fails to return these docs via document *selection*. Therefore, this change reverts to an earlier approach which uses a custom airshipit.org/deploy-k8s label. Change-Id: I7022e12464ea7b6a3ca8609f99f3699bf8da0edd
airshipctl
What is airshipctl
The airshipctl
project is a CLI tool and Golang library for declarative
management of infrastructure and software.
The goal for the project is to provide a seamless experience to operators wishing to leverage the best of breed open source options such as the Cluster API, Metal3-io, Kustomize, Kubeadm, and Argo -- into a straight forward and easily approachable tool.
This project is the heart of the effort to produce Airship 2.0, which has three main evolutions from 1.0:
- Expand our use of entrenched upstream projects.
- Embrace Kubernetes Custom Resource Definitions (CRD) – Everything becomes an Object in Kubernetes.
- Make the Airship control plane ephemeral.
To learn more about the Airship 2.0 evolution, please check out the Airship Blog Series.
Contributing
This project is under heavy active development to reach an alpha state.
New developers should read the contributing guide as well as the developer guide in order to get started.
Architecture
The airshipctl
tool is designed to work against declarative infrastructure
housed in source control and manage the lifecycle of a site.
Example Usage
In a nutshell, users of airshipctl
should be able to do the following:
- Create an
airshipctl
Airship Configuration for their site - sort of like a kubeconfig file. - Create a set of declarative documents representing the infrastructure (baremetal, cloud) and software.
- Run
airshipctl document pull
to clone the document repositories in your Airship Configuration. - When deploying against baremetal infrastructure, run
airshipctl bootstrap isogen
to generate a self-contained ISO that can be used to boot the first host in the cluster into an ephemeral Kubernetes node. - When deploying against baremetal infrastructure, run
airshipctl bootstrap remotedirect
to remotely provision the first machine in the cluster using the generated ISO, providing an ephemeral Kubernetes instance thatairshipctl
can communicate with for subsequent steps. This ephemeral host provides a foothold in the target environment so we can follow the standard cluster-api bootstrap flow. - Run
airshipctl cluster initinfra --clustertype=ephemeral
to bootstrap the new ephemeral cluster with enough of the chosen cluster-api provider components to provision the target cluster. - Run
airshipctl clusterctl
to use the ephemeral Kubernetes host to provision at least one node of the target cluster using the cluster-api bootstrap flow. - Run
airshipctl cluster initinfra --clustertype=target
to bootstrap the new target cluster with any remaining infrastructure necessary to begin running more complex workflows such as Argo. - Run
airshipctl workflow submit sitemanage
to run the out of the box sitemanage workflow, which will leverage Argo to handle bootstrapping the remaining infrastructure as well as deploying and/or updating software.
As users evolve their sites declaration, whether adding additional
infrastructure, or software declarations, they can re-run airshipctl workflow submit sitemanage
to introduce those changes to the site.
Project Resources
- Airship Website - airshipit.org
- Airship UI Project - opendev.org/airship/airshipui
- airshipctl Issue Tracker - https://github.com/airshipit/airshipctl/issues