TreasureMap
Rationale
- Investigate the feasibility of converting airship-treasuremap site descriptions
into kustomize site descriptions (Kubernetes CRD based).
- The kustomize layering are beeing leverage (global, type, site).
This is not a "replacement" for airship treasuremap. This POC merely aims at highlighting what would have to be done to adapt treasuremap to tools such as kustomize, argo...
Lessons Learned
Data Layering, Substitions and Validation
-
It is possible to support the current airship layering (global, type, site). The three subfolders have be created.
Each kustomization.yaml is using an entry “base”. Check airsloop
-
kustomize supports variables by default
- Regex is using $(xxx) format.
- Improvments have been proposed to address what kustomize could not do by default: PR
-
simple variable:
- Definition in the kustomization.yaml: global
- Tree and structure can be inlined: inline
- Variable value extracted from a catalog CRD: value
-
simple inlining:
- Definition in the kustomization.yaml: global
- Tree and structure can be inlined: inline
- Variable value extracted from a catalog CRD: value
-
parent inlining (for multipass replacement) are currently used the following way:
- Definition in the kustomization.yaml: global
- Tree and structure can be inlined: inline
- Variable value extracted from a catalog CRD: value
-
Some of the OpenAPI V3 construct are not supported yet by CRDs.
Operator experience
kubectl get act --all--namespaces provides the user with a view at a glance of his deployment.
- TBD
Documentation
Associated GIT Repos
Test airsloop site rendering
Build
Check that your configuration is correct. Invokes kustomize build and compare the output with
a previously generated output. Be sure to have build the allinone version of kustomize.
make rendering-test-airsloop
Deploy the CRDs without operators
make deploy-airsloop
kubectl get all act --all-namespaces
Branches
master site manifests which require the inline function but autovar feature is not used.
autovar autovar feature of kustomize is enabled, hence no need for 3000 lines of vars and varreferences:
Important Issues and Release Notes
kubernetes
The definition of the CRD will soon be using v1 instead of v1beta1. The schema will be mandatory and the handling of the unknown field will change.