Add airshipctl versions catalogue & replacements
This extracts the container, disk image, and Kubernetes versions that are defined in airshipctl functions, into an `versions-airshipctl` catalogue in the `airshipctl-catalogues` function. The default version values have been left in-place in their resources as well, and will be used if the user decides not to apply the catalogue via a transformer at the site level (it's not currently required to actually use the catalogue or associate replacment rules). Please see the READMEs in this change for more information. Note: replacement of CAPI component container versions must be done through a slightly different mechanism and will be in a follow-on changeset. Note that this also incorporates a fix to pin the Ironic images, which are currently not compatible at the :latest tag. Co-Authored-By: Alexander Noskov <anoskov@mirantis.com> Change-Id: Iafe1d185a7e7d3932576055eda819d2270b02482 Relates-To: https://github.com/airshipit/airshipctl/issues/316
This commit is contained in:
parent
61633d30fc
commit
f15e7e5e41
27
manifests/function/airshipctl-catalogues/README.md
Normal file
27
manifests/function/airshipctl-catalogues/README.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Function: airshipctl-catalogues
|
||||||
|
===============================
|
||||||
|
|
||||||
|
This function defines some default VariableCatalogue resources,
|
||||||
|
which can be consumed and used (via ReplacementTransformer) to change the
|
||||||
|
versioning and resource locations used by functions in the airshipctl project.
|
||||||
|
More base catalogues will be added here in the future.
|
||||||
|
|
||||||
|
This catalogue can be used as-is to simply apply defaults, or a different
|
||||||
|
catalogue may be supplied (with the same ``versions-airshipctl`` name)
|
||||||
|
as a kustomize resource. The catalogue in this function can also be
|
||||||
|
patched at the composite, type, or site level to reconfigure the versions.
|
||||||
|
|
||||||
|
The versions info falls under these keys:
|
||||||
|
|
||||||
|
* charts: Helm chart locations and versions
|
||||||
|
|
||||||
|
* files: image file (etc) locations and versions
|
||||||
|
|
||||||
|
* images: container image registries and versions
|
||||||
|
|
||||||
|
* kubernetes: a standalone key for the Kubernetes version to use
|
||||||
|
|
||||||
|
Versions that are defined for specific resources in specific functions
|
||||||
|
(e.g., container images) are categorized in the catalogue according
|
||||||
|
to the function and resource they will be applied to.
|
||||||
|
E.g., ``images.baremetal_operator.ironic.dnsmasq``.
|
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- versions-airshipctl.yaml
|
@ -0,0 +1,49 @@
|
|||||||
|
# The default versions catalogue for functions hosted in the airshipctl project.
|
||||||
|
# These values can be overridden at the site, type, etc levels as appropriate.
|
||||||
|
apiVersion: airshipit.org/v1alpha1
|
||||||
|
kind: VariableCatalogue
|
||||||
|
metadata:
|
||||||
|
name: versions-airshipctl
|
||||||
|
labels:
|
||||||
|
airshipit.org/deploy-k8s: "false"
|
||||||
|
|
||||||
|
charts:
|
||||||
|
dex:
|
||||||
|
# TODO: match this data to what is expected by helm-operator or image builder
|
||||||
|
location: TODO
|
||||||
|
reference: TODO
|
||||||
|
subpath: TODO
|
||||||
|
type: TODO
|
||||||
|
|
||||||
|
files:
|
||||||
|
k8scontrol:
|
||||||
|
cluster_controlplane_image:
|
||||||
|
url: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
|
||||||
|
checksum: 4a6909d1480ac30d676accd7b37ec711
|
||||||
|
|
||||||
|
images:
|
||||||
|
capm3: # Images specific to the camp3 function; etc.
|
||||||
|
manager: quay.io/metal3-io/cluster-api-provider-metal3
|
||||||
|
auth_proxy: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0
|
||||||
|
cacpk:
|
||||||
|
manager: us.gcr.io/k8s-artifacts-prod/cluster-api/kubeadm-control-plane-controller:v0.3.3
|
||||||
|
auth_proxy: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.1
|
||||||
|
cabpk:
|
||||||
|
manager: us.gcr.io/k8s-artifacts-prod/cluster-api/kubeadm-bootstrap-controller:v0.3.3
|
||||||
|
auth_proxy: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.1
|
||||||
|
capi:
|
||||||
|
manager: us.gcr.io/k8s-artifacts-prod/cluster-api/cluster-api-controller:v0.3.3
|
||||||
|
auth_proxy: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.1
|
||||||
|
baremetal_operator:
|
||||||
|
ironic: # ironic Deployment
|
||||||
|
init_bootstrap: centos
|
||||||
|
dnsmasq: quay.io/metal3-io/ironic:capm3-v0.4.0
|
||||||
|
httpd: quay.io/metal3-io/ironic:capm3-v0.4.0
|
||||||
|
ironic: quay.io/metal3-io/ironic:capm3-v0.4.0
|
||||||
|
ironic_inspector: quay.io/metal3-io/ironic-inspector:capm3-v0.4.0
|
||||||
|
metal3_baremetal_operator: # metal3-baremetal-operator Deployment
|
||||||
|
baremetal_operator: quay.io/metal3-io/baremetal-operator:capm3-v0.4.0
|
||||||
|
ironic_proxy: alpine/socat
|
||||||
|
ironic_inspector_proxy: alpine/socat
|
||||||
|
|
||||||
|
kubernetes: v1.18.6
|
11
manifests/function/baremetal-operator/README.md
Normal file
11
manifests/function/baremetal-operator/README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Function: baremetal-operator
|
||||||
|
============================
|
||||||
|
|
||||||
|
This function defines a deployment of the Metal3 baremetal-operator,
|
||||||
|
including both the operator itself and Ironic.
|
||||||
|
|
||||||
|
Optional: a ``versions-airshipctl`` VariableCatalogue may be used to
|
||||||
|
override the default container images.
|
||||||
|
A base example for this catalogue can be found in the ``airshipctl-catalogues``
|
||||||
|
function. If using the catalogue, apply the ``replacements/`` entrypoint
|
||||||
|
at the site level, as a Kustomize transformer.
|
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- versions.yaml
|
@ -0,0 +1,82 @@
|
|||||||
|
# These rules inject host-specific information from the `host-catalogue`
|
||||||
|
# into the hostgenerator-m3 function's Template plugin config.
|
||||||
|
apiVersion: airshipit.org/v1alpha1
|
||||||
|
kind: ReplacementTransformer
|
||||||
|
metadata:
|
||||||
|
name: baremetal-operator-versions-replacements
|
||||||
|
replacements:
|
||||||
|
# Container versions for the ironic Deployment
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.ironic.init_bootstrap
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: ironic
|
||||||
|
fieldrefs: ["spec.template.spec.initContainers[name=init-bootstrap].image"]
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.ironic.dnsmasq
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: ironic
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=dnsmasq].image"]
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.ironic.httpd
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: ironic
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=httpd].image"]
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.ironic.ironic
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: ironic
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=ironic].image"]
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.ironic.ironic_inspector
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: ironic
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=ironic-inspector].image"]
|
||||||
|
# Container versions for the metal3-baremetal-operator Deployment
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.metal3_baremetal_operator.baremetal_operator
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: metal3-baremetal-operator
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=baremetal-operator].image"]
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.metal3_baremetal_operator.ironic_proxy
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: metal3-baremetal-operator
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=ironic-proxy].image"]
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: images.baremetal_operator.metal3_baremetal_operator.ironic_inspector_proxy
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Deployment
|
||||||
|
name: metal3-baremetal-operator
|
||||||
|
fieldrefs: ["spec.template.spec.containers[name=ironic-inspector-proxy].image"]
|
||||||
|
|
12
manifests/function/k8scontrol/README.md
Normal file
12
manifests/function/k8scontrol/README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Function: k8scontrol
|
||||||
|
====================
|
||||||
|
|
||||||
|
This function defines a KubeADM and Metal3 control plane, including
|
||||||
|
Cluster, Metal3Cluster, KubeadmControlPlane, and Metal3MachineTemplate
|
||||||
|
resources.
|
||||||
|
|
||||||
|
Optional: a ``versions-airshipctl`` VariableCatalogue may be used to
|
||||||
|
override the default Kubernetes version and controlplane disk image.
|
||||||
|
A base example for this catalogue can be found in the ``airshipctl-catalogues``
|
||||||
|
function. If using the catalogue, apply the ``replacements/`` entrypoint
|
||||||
|
at the site level, as a Kubernetes transformer.
|
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- versions.yaml
|
27
manifests/function/k8scontrol/replacements/versions.yaml
Normal file
27
manifests/function/k8scontrol/replacements/versions.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# These rules inject versioned artifacts into the k8scontrol function.
|
||||||
|
apiVersion: airshipit.org/v1alpha1
|
||||||
|
kind: ReplacementTransformer
|
||||||
|
metadata:
|
||||||
|
name: k8scontrol-versions-replacements
|
||||||
|
replacements:
|
||||||
|
# Replace the Kubernetes version in the KubeadmControlPlane
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: kubernetes
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: KubeadmControlPlane
|
||||||
|
name: cluster-controlplane
|
||||||
|
fieldrefs: ["spec.version"]
|
||||||
|
# Replace the controlplane disk image in the Metal3MachineTemplate
|
||||||
|
- source:
|
||||||
|
objref:
|
||||||
|
name: versions-airshipctl
|
||||||
|
fieldref: files.k8scontrol.cluster_controlplane_image
|
||||||
|
target:
|
||||||
|
objref:
|
||||||
|
kind: Metal3MachineTemplate
|
||||||
|
name: cluster-controlplane
|
||||||
|
fieldrefs: ["spec.template.spec.image"]
|
||||||
|
|
@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: Metal3MachineTemplate
|
|
||||||
metadata:
|
|
||||||
name: cluster-controlplane
|
|
||||||
spec:
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
image:
|
|
||||||
url: http://10.23.24.1:8099/target-image.qcow2
|
|
||||||
checksum: http://10.23.24.1:8099/target-image.qcow2.md5sum
|
|
@ -4,6 +4,9 @@ resources:
|
|||||||
# TODO (dukov) It's recocommended to upload BareMetalHost objects separately
|
# TODO (dukov) It's recocommended to upload BareMetalHost objects separately
|
||||||
# otherwise nodes will hang in 'registering' state for quite a long time
|
# otherwise nodes will hang in 'registering' state for quite a long time
|
||||||
- nodes
|
- nodes
|
||||||
|
- ../../../../function/airshipctl-catalogues
|
||||||
- ../../../../function/k8scontrol
|
- ../../../../function/k8scontrol
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- control-machine-template-patch.yaml
|
- versions-catalogue-patch.yaml
|
||||||
|
transformers:
|
||||||
|
- ../../../../function/k8scontrol/replacements
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
# Patch the versions catalogue to use the site-specific local image URL
|
||||||
|
# TODO: patch this in from a site-networking catalogue in the future
|
||||||
|
apiVersion: airshipit.org/v1alpha1
|
||||||
|
kind: VariableCatalogue
|
||||||
|
metadata:
|
||||||
|
name: versions-airshipctl
|
||||||
|
files:
|
||||||
|
k8scontrol:
|
||||||
|
cluster_controlplane_image:
|
||||||
|
url: http://10.23.24.1:8099/target-image.qcow2
|
||||||
|
checksum: http://10.23.24.1:8099/target-image.qcow2.md5sum
|
@ -1,8 +1,11 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../../../composite/infra
|
- ../../../../composite/infra
|
||||||
- ../../shared/clusterctl
|
- ../../shared/clusterctl
|
||||||
|
- ../../../../function/airshipctl-catalogues
|
||||||
- ../../../../function/baremetal-operator
|
- ../../../../function/baremetal-operator
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- patch_bmo_config.yaml
|
- patch_bmo_config.yaml
|
||||||
commonLabels:
|
commonLabels:
|
||||||
airshipit.org/stage: initinfra
|
airshipit.org/stage: initinfra
|
||||||
|
transformers:
|
||||||
|
- ../../../../function/baremetal-operator/replacements
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../../../composite/infra
|
- ../../../../composite/infra
|
||||||
- ../../shared/clusterctl
|
- ../../shared/clusterctl
|
||||||
|
- ../../../../function/airshipctl-catalogues
|
||||||
- ../../../../function/baremetal-operator
|
- ../../../../function/baremetal-operator
|
||||||
- ../../../../function/helm-operator
|
- ../../../../function/helm-operator
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- patch_bmo_config.yaml
|
- patch_bmo_config.yaml
|
||||||
commonLabels:
|
commonLabels:
|
||||||
airshipit.org/stage: initinfra
|
airshipit.org/stage: initinfra
|
||||||
|
transformers:
|
||||||
|
- ../../../../function/baremetal-operator/replacements
|
||||||
|
Loading…
Reference in New Issue
Block a user