Add version catalogues
This takes advantage of version catalogue replacement, which was added to airshipctl in the changes below. It also refactors the kustomize structure a bit to support that well. This adds a treasuremap clusterctl function, which kustomizes the same function from airshipctl to correct for paths. This replaces the previous site-level clusterctl entrypoints. This gives each type and site a catalogues entrypoint, which are wired together (site inheriting from type, and network-cloud from airship-core) for inheritance. Each phase that needs catalogue-based replacement now pulls in its' site's catalogues definition, and then applies any phase specific overrides only when necessary. https://review.opendev.org/#/c/746608 https://review.opendev.org/#/c/746764/ Change-Id: I18364083f72628f9519af3d2fab0d6a4879d2d14 Relates-To: https://github.com/airshipit/airshipctl/issues/316
This commit is contained in:
parent
339f6dbc97
commit
6e0d9e83b0
4
manifests/function/clusterctl/README.md
Normal file
4
manifests/function/clusterctl/README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Treasuremap Clusterctl
|
||||||
|
|
||||||
|
This patches the airshipctl `clusterctl` function to correct for
|
||||||
|
relative paths back to airshipctl's CAPI functions.
|
13
manifests/function/clusterctl/clusterctl-patch.yaml
Normal file
13
manifests/function/clusterctl/clusterctl-patch.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
- op: replace
|
||||||
|
path: /providers/0/versions/v0.3.2
|
||||||
|
value: ../airshipctl/manifests/function/capm3/v0.3.2
|
||||||
|
- op: replace
|
||||||
|
path: /providers/1/versions/v0.3.7
|
||||||
|
value: ../airshipctl/manifests/function/cabpk/v0.3.7
|
||||||
|
- op: replace
|
||||||
|
path: /providers/2/versions/v0.3.7
|
||||||
|
value: ../airshipctl/manifests/function/capi/v0.3.7
|
||||||
|
- op: replace
|
||||||
|
path: /providers/3/versions/v0.3.7
|
||||||
|
value: ../airshipctl/manifests/function/cacpk/v0.3.7
|
||||||
|
|
9
manifests/function/clusterctl/kustomization.yaml
Normal file
9
manifests/function/clusterctl/kustomization.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
resources:
|
||||||
|
- ../../../../airshipctl/manifests/function/clusterctl
|
||||||
|
patchesJson6902:
|
||||||
|
- target:
|
||||||
|
group: airshipit.org
|
||||||
|
version: v1alpha1
|
||||||
|
kind: Clusterctl
|
||||||
|
name: clusterctl-v1
|
||||||
|
path: clusterctl-patch.yaml
|
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../../../../../airshipctl/manifests/function/clusterctl/replacements
|
@ -1,128 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
data:
|
|
||||||
password: cjAwdG1l
|
|
||||||
username: cm9vdA==
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
airshipit.org/k8s-role: controlplane-host
|
|
||||||
name: node01-bmc-secret
|
|
||||||
type: Opaque
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
airshipit.org/k8s-role: controlplane-host
|
|
||||||
name: node01-network-data
|
|
||||||
stringData:
|
|
||||||
networkData: "links:\n-\n id: oam\n mtu: \"1500\"\n name: enp0s3\n type: phy\n
|
|
||||||
\ \n ethernet_mac_address: 52:54:00:9b:27:4c\n-\n id: pxe\n mtu: \"1500\"\n
|
|
||||||
\ name: enp0s4\n type: phy\n \n ethernet_mac_address: 52:54:00:b6:ed:31\nnetworks:\n-\n
|
|
||||||
\ id: oam-ipv4\n link: oam\n netmask: 255.255.255.0\n routes:\n - gateway:
|
|
||||||
10.23.25.1\n netmask: 0.0.0.0\n network: 0.0.0.0\n type: ipv4\n \n ip_address:
|
|
||||||
10.23.25.102\n-\n id: pxe-ipv4\n link: pxe\n netmask: 255.255.255.0\n type:
|
|
||||||
ipv4\n \n ip_address: 10.23.24.102\nservices:\n - address: 8.8.8.8\n type:
|
|
||||||
dns\n - address: 8.8.4.4\n type: dns\n \n"
|
|
||||||
type: Opaque
|
|
||||||
---
|
|
||||||
apiVersion: cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: Cluster
|
|
||||||
metadata:
|
|
||||||
name: target-cluster
|
|
||||||
spec:
|
|
||||||
clusterNetwork:
|
|
||||||
pods:
|
|
||||||
cidrBlocks:
|
|
||||||
- 192.168.0.0/18
|
|
||||||
serviceDomain: cluster.local
|
|
||||||
services:
|
|
||||||
cidrBlocks:
|
|
||||||
- 10.96.0.0/12
|
|
||||||
controlPlaneRef:
|
|
||||||
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: KubeadmControlPlane
|
|
||||||
name: cluster-controlplane
|
|
||||||
infrastructureRef:
|
|
||||||
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: Metal3Cluster
|
|
||||||
name: target-cluster
|
|
||||||
---
|
|
||||||
apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: KubeadmControlPlane
|
|
||||||
metadata:
|
|
||||||
name: cluster-controlplane
|
|
||||||
spec:
|
|
||||||
infrastructureTemplate:
|
|
||||||
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: Metal3MachineTemplate
|
|
||||||
name: cluster-controlplane
|
|
||||||
kubeadmConfigSpec:
|
|
||||||
files:
|
|
||||||
- content: |
|
|
||||||
kubernetes:
|
|
||||||
version: 1.17.3
|
|
||||||
container_runtime:
|
|
||||||
type: docker
|
|
||||||
owner: root:root
|
|
||||||
path: /konfigadm.yml
|
|
||||||
permissions: "0640"
|
|
||||||
initConfiguration:
|
|
||||||
nodeRegistration:
|
|
||||||
kubeletExtraArgs:
|
|
||||||
node-labels: metal3.io/uuid={{ ds.meta_data.uuid }}
|
|
||||||
name: '{{ ds.meta_data.local_hostname }}'
|
|
||||||
joinConfiguration:
|
|
||||||
controlPlane: {}
|
|
||||||
nodeRegistration:
|
|
||||||
kubeletExtraArgs:
|
|
||||||
node-labels: metal3.io/uuid={{ ds.meta_data.uuid }}
|
|
||||||
name: '{{ ds.meta_data.local_hostname }}'
|
|
||||||
postKubeadmCommands:
|
|
||||||
- kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
|
|
||||||
preKubeadmCommands:
|
|
||||||
- wget -O "/usr/bin/konfigadm" https://github.com/flanksource/konfigadm/releases/download/v0.5.3/konfigadm
|
|
||||||
&& chmod +x "/usr/bin/konfigadm"
|
|
||||||
- konfigadm apply --config=/konfigadm.yml
|
|
||||||
replicas: 1
|
|
||||||
version: v1.17.0
|
|
||||||
---
|
|
||||||
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: Metal3Cluster
|
|
||||||
metadata:
|
|
||||||
name: target-cluster
|
|
||||||
spec:
|
|
||||||
controlPlaneEndpoint:
|
|
||||||
host: 10.23.25.102
|
|
||||||
port: 6443
|
|
||||||
noCloudProvider: true
|
|
||||||
---
|
|
||||||
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
|
||||||
kind: Metal3MachineTemplate
|
|
||||||
metadata:
|
|
||||||
name: cluster-controlplane
|
|
||||||
spec:
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
hostSelector:
|
|
||||||
matchLabels:
|
|
||||||
airshipit.org/k8s-role: controlplane-host
|
|
||||||
image:
|
|
||||||
checksum: http://10.23.24.1:8099/target-image.qcow2.md5sum
|
|
||||||
url: http://10.23.24.1:8099/target-image.qcow2
|
|
||||||
---
|
|
||||||
apiVersion: metal3.io/v1alpha1
|
|
||||||
kind: BareMetalHost
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
airshipit.org/k8s-role: controlplane-host
|
|
||||||
name: node01
|
|
||||||
spec:
|
|
||||||
bmc:
|
|
||||||
address: redfish+http://10.23.25.1:8000/redfish/v1/Systems/air-target-1
|
|
||||||
credentialsName: node01-bmc-secret
|
|
||||||
bootMACAddress: 52:54:00:b6:ed:31
|
|
||||||
networkData:
|
|
||||||
name: node01-network-data
|
|
||||||
namespace: default
|
|
||||||
online: false
|
|
@ -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
|
|
@ -2,8 +2,11 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
|||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- ../../../../type/airship-core/ephemeral/controlplane
|
- ../../../../type/airship-core/ephemeral/controlplane
|
||||||
|
- ../../shared/catalogues
|
||||||
# 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
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- control-machine-template-patch.yaml
|
- versions-catalogue-patch.yaml
|
||||||
|
transformers:
|
||||||
|
- ../../../../type/airship-core/ephemeral/controlplane/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,4 +1,7 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../../../type/airship-core/ephemeral/initinfra
|
- ../../../../type/airship-core/ephemeral/initinfra
|
||||||
|
- ../../shared/catalogues
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- patch_bmo_config.yaml
|
- patch_bmo_config.yaml
|
||||||
|
transformers:
|
||||||
|
- ../../../../type/airship-core/ephemeral/initinfra/replacements
|
@ -3,6 +3,8 @@
|
|||||||
apiVersion: airshipit.org/v1alpha1
|
apiVersion: airshipit.org/v1alpha1
|
||||||
kind: VariableCatalogue
|
kind: VariableCatalogue
|
||||||
metadata:
|
metadata:
|
||||||
|
labels:
|
||||||
|
airshipit.org/deploy-k8s: "false"
|
||||||
name: host-catalogue
|
name: host-catalogue
|
||||||
hosts:
|
hosts:
|
||||||
m3:
|
m3:
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../../../type/airship-core/target/initinfra
|
- ../../../../type/airship-core/target/initinfra
|
||||||
|
- ../../shared/catalogues
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- patch_bmo_config.yaml
|
- patch_bmo_config.yaml
|
||||||
|
transformers:
|
||||||
|
- ../../../../type/airship-core/target/initinfra/replacements
|
||||||
|
@ -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
|
|
@ -2,8 +2,11 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
|||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- ../../../../type/network-cloud/ephemeral/controlplane
|
- ../../../../type/network-cloud/ephemeral/controlplane
|
||||||
|
- ../../shared/catalogues
|
||||||
# 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
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- control-machine-template-patch.yaml
|
- versions-catalogue-patch.yaml
|
||||||
|
transformers:
|
||||||
|
- ../../../../type/network-cloud/ephemeral/controlplane/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,4 +1,7 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../../../type/network-cloud/ephemeral/initinfra
|
- ../../../../type/network-cloud/ephemeral/initinfra
|
||||||
|
- ../../shared/catalogues
|
||||||
patchesStrategicMerge:
|
patchesStrategicMerge:
|
||||||
- patch_bmo_config.yaml
|
- patch_bmo_config.yaml
|
||||||
|
transformers:
|
||||||
|
- ../../../../type/airship-core/ephemeral/initinfra/replacements
|
@ -3,6 +3,8 @@
|
|||||||
apiVersion: airshipit.org/v1alpha1
|
apiVersion: airshipit.org/v1alpha1
|
||||||
kind: VariableCatalogue
|
kind: VariableCatalogue
|
||||||
metadata:
|
metadata:
|
||||||
|
labels:
|
||||||
|
airshipit.org/deploy-k8s: "false"
|
||||||
name: host-catalogue
|
name: host-catalogue
|
||||||
hosts:
|
hosts:
|
||||||
m3:
|
m3:
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../../../../../../../airshipctl/manifests/function/k8scontrol/replacements
|
@ -1,5 +1,5 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../shared/clusterctl
|
- ../../../../function/clusterctl
|
||||||
- ../../../../../../airshipctl/manifests/composite/infra/
|
- ../../../../../../airshipctl/manifests/composite/infra/
|
||||||
- ../../../../../../airshipctl/manifests/function/baremetal-operator/
|
- ../../../../../../airshipctl/manifests/function/baremetal-operator/
|
||||||
commonLabels:
|
commonLabels:
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
resources:
|
||||||
|
- ../../../../../../../airshipctl/manifests/function/baremetal-operator/replacements
|
@ -3,6 +3,8 @@
|
|||||||
apiVersion: airshipit.org/v1alpha1
|
apiVersion: airshipit.org/v1alpha1
|
||||||
kind: VariableCatalogue
|
kind: VariableCatalogue
|
||||||
metadata:
|
metadata:
|
||||||
|
labels:
|
||||||
|
airshipit.org/deploy-k8s: "false"
|
||||||
name: common-networking-catalogue
|
name: common-networking-catalogue
|
||||||
commonNetworking:
|
commonNetworking:
|
||||||
links:
|
links:
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
|
- ../../../../../../airshipctl/manifests/function/airshipctl-catalogues/
|
||||||
- common-networking.yaml
|
- common-networking.yaml
|
||||||
|
# Uncomment to patch versions catalogue once needed
|
||||||
|
# patchesStrategicMerge:
|
||||||
|
# - versions.yaml
|
||||||
|
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
# NOTE(drewwalters96): This patch file is applied to override the
|
||||||
|
# airship-core versions catalogue.
|
@ -1,31 +0,0 @@
|
|||||||
apiVersion: airshipit.org/v1alpha1
|
|
||||||
kind: Clusterctl
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
airshipit.org/deploy-k8s: "false"
|
|
||||||
name: clusterctl-v1
|
|
||||||
init-options:
|
|
||||||
core-provider: "cluster-api:v0.3.3"
|
|
||||||
bootstrap-providers:
|
|
||||||
- "kubeadm:v0.3.3"
|
|
||||||
infrastructure-providers:
|
|
||||||
- "metal3:v0.3.1"
|
|
||||||
control-plane-providers:
|
|
||||||
- "kubeadm:v0.3.3"
|
|
||||||
providers:
|
|
||||||
- name: "metal3"
|
|
||||||
type: "InfrastructureProvider"
|
|
||||||
versions:
|
|
||||||
v0.3.1: ../airshipctl/manifests/function/capm3/v0.3.1
|
|
||||||
- name: "kubeadm"
|
|
||||||
type: "BootstrapProvider"
|
|
||||||
versions:
|
|
||||||
v0.3.3: ../airshipctl/manifests/function/cabpk/v0.3.3
|
|
||||||
- name: "cluster-api"
|
|
||||||
type: "CoreProvider"
|
|
||||||
versions:
|
|
||||||
v0.3.3: ../airshipctl/manifests/function/capi/v0.3.3
|
|
||||||
- name: "kubeadm"
|
|
||||||
type: "ControlPlaneProvider"
|
|
||||||
versions:
|
|
||||||
v0.3.3: ../airshipctl/manifests/function/cacpk/v0.3.3
|
|
@ -1,2 +0,0 @@
|
|||||||
resources:
|
|
||||||
- clusterctl.yaml
|
|
@ -1,7 +1,8 @@
|
|||||||
resources:
|
resources:
|
||||||
- ../../shared/clusterctl
|
- ../../../../function/clusterctl
|
||||||
- ../../../../../../airshipctl/manifests/composite/infra/
|
- ../../../../../../airshipctl/manifests/composite/infra/
|
||||||
- ../../../../../../airshipctl/manifests/function/baremetal-operator/
|
- ../../../../../../airshipctl/manifests/function/baremetal-operator/
|
||||||
- ../../../../../../airshipctl/manifests/function/helm-operator/
|
- ../../../../../../airshipctl/manifests/function/helm-operator/
|
||||||
commonLabels:
|
commonLabels:
|
||||||
airshipit.org/stage: initinfra
|
airshipit.org/stage: initinfra
|
||||||
|
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
resources:
|
||||||
|
- ../../../../../../../airshipctl/manifests/function/baremetal-operator/replacements
|
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../../../../airship-core/ephemeral/controlplane/replacements
|
@ -0,0 +1,2 @@
|
|||||||
|
resources:
|
||||||
|
- ../../../../airship-core/ephemeral/initinfra/replacements
|
@ -6,3 +6,7 @@ resources:
|
|||||||
# NOTE(drewwalters96): Uncomment to patch common-networking catalogue.
|
# NOTE(drewwalters96): Uncomment to patch common-networking catalogue.
|
||||||
# patchesStrategicMerge:
|
# patchesStrategicMerge:
|
||||||
# - common-networking.yaml
|
# - common-networking.yaml
|
||||||
|
# Uncomment to patch versions catalogue once needed
|
||||||
|
# patchesStrategicMerge:
|
||||||
|
# - versions.yaml
|
||||||
|
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
# NOTE(drewwalters96): This patch file is applied to override the
|
||||||
|
# airship-core versions catalogue.
|
Loading…
Reference in New Issue
Block a user