diff --git a/manifests/function/k8scontrol-ha/kustomization.yaml b/manifests/function/k8scontrol-ha/kustomization.yaml new file mode 100644 index 000000000..320cb93d4 --- /dev/null +++ b/manifests/function/k8scontrol-ha/kustomization.yaml @@ -0,0 +1,13 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../../airshipctl/manifests/function/k8scontrol + +patchesJson6902: +- target: + group: controlplane.cluster.x-k8s.io + version: v1alpha3 + kind: KubeadmControlPlane + name: cluster-controlplane + path: vrrp_keepalived_patch.yaml diff --git a/manifests/function/k8scontrol-ha/replacements/kustomization.yaml b/manifests/function/k8scontrol-ha/replacements/kustomization.yaml new file mode 100644 index 000000000..7870a0ce1 --- /dev/null +++ b/manifests/function/k8scontrol-ha/replacements/kustomization.yaml @@ -0,0 +1,2 @@ +resources: + - networking-ha.yaml diff --git a/manifests/function/k8scontrol-ha/replacements/networking-ha.yaml b/manifests/function/k8scontrol-ha/replacements/networking-ha.yaml new file mode 100644 index 000000000..f6fb7276c --- /dev/null +++ b/manifests/function/k8scontrol-ha/replacements/networking-ha.yaml @@ -0,0 +1,49 @@ +apiVersion: airshipit.org/v1alpha1 +kind: ReplacementTransformer +metadata: + name: networking-ha-replacements + annotations: + config.kubernetes.io/function: |- + container: + image: quay.io/airshipit/replacement-transformer:latest +replacements: +- source: + objref: + kind: VariableCatalogue + name: networking-ha + fieldref: vrrp.kubernetes.virtual_ipaddress + target: + objref: + kind: KubeadmControlPlane + fieldrefs: + - "spec.kubeadmConfigSpec.files[path=/etc/keepalived/keepalived.conf].content%REPLACEMENT_VIP_1%" +- source: + objref: + kind: VariableCatalogue + name: networking-ha + fieldref: vrrp.ingress.virtual_ipaddress + target: + objref: + kind: KubeadmControlPlane + fieldrefs: + - "spec.kubeadmConfigSpec.files[path=/etc/keepalived/keepalived.conf].content%REPLACEMENT_VIP_2%" +- source: + objref: + kind: VariableCatalogue + name: networking-ha + fieldref: vrrp.kubernetes.interface + target: + objref: + kind: KubeadmControlPlane + fieldrefs: + - "spec.kubeadmConfigSpec.files[path=/etc/keepalived/keepalived.conf].content%REPLACEMENT_INTERFACE_1%" +- source: + objref: + kind: VariableCatalogue + name: networking-ha + fieldref: vrrp.ingress.interface + target: + objref: + kind: KubeadmControlPlane + fieldrefs: + - "spec.kubeadmConfigSpec.files[path=/etc/keepalived/keepalived.conf].content%REPLACEMENT_INTERFACE_2%" diff --git a/manifests/function/k8scontrol-ha/vrrp_keepalived_patch.yaml b/manifests/function/k8scontrol-ha/vrrp_keepalived_patch.yaml new file mode 100644 index 000000000..e18a0bc35 --- /dev/null +++ b/manifests/function/k8scontrol-ha/vrrp_keepalived_patch.yaml @@ -0,0 +1,33 @@ +- op: add + path: "/spec/kubeadmConfigSpec/files/-" + value: + path: /etc/keepalived/keepalived.conf + content: | + ! Configuration File for keepalived + global_defs { + } + vrrp_instance KUBERNETES { + state BACKUP + interface REPLACEMENT_INTERFACE_1 + virtual_router_id 101 + priority 101 + advert_int 1 + virtual_ipaddress { + REPLACEMENT_VIP_1 + } + } + vrrp_instance INGRESS { + state BACKUP + interface REPLACEMENT_INTERFACE_2 + virtual_router_id 102 + priority 102 + advert_int 1 + virtual_ipaddress { + REPLACEMENT_VIP_2 + } + } +- op: add + path: "/spec/kubeadmConfigSpec/preKubeadmCommands/-" + value: + apt-get update && apt-get install -y bridge-utils keepalived ipset ipvsadm + systemctl enable --now keepalived diff --git a/manifests/function/treasuremap-base-catalogues/kustomization.yaml b/manifests/function/treasuremap-base-catalogues/kustomization.yaml index 10aba081f..7682c1b87 100644 --- a/manifests/function/treasuremap-base-catalogues/kustomization.yaml +++ b/manifests/function/treasuremap-base-catalogues/kustomization.yaml @@ -1,2 +1,3 @@ resources: - - versions-treasuremap.yaml \ No newline at end of file + - versions-treasuremap.yaml + - networking-ha.yaml diff --git a/manifests/function/treasuremap-base-catalogues/networking-ha.yaml b/manifests/function/treasuremap-base-catalogues/networking-ha.yaml new file mode 100644 index 000000000..885a40dce --- /dev/null +++ b/manifests/function/treasuremap-base-catalogues/networking-ha.yaml @@ -0,0 +1,15 @@ +# This catalogue alone needs to be overriden at site level based on the +# networkign requirement like HA +apiVersion: airshipit.org/v1alpha1 +kind: VariableCatalogue +metadata: + name: networking-ha + labels: + airshipit.org/deploy-k8s: "false" +vrrp: + kubernetes: + interface: bond.51 + virtual_ipaddress: 10.23.25.101 + ingress: + interface: bond.51 + virtual_ipaddress: 10.23.25.102 diff --git a/manifests/site/test-site/ephemeral/catalogues/cleanup/smp.yaml b/manifests/site/test-site/ephemeral/catalogues/cleanup/smp.yaml index be71de4c6..b55faf6f3 100644 --- a/manifests/site/test-site/ephemeral/catalogues/cleanup/smp.yaml +++ b/manifests/site/test-site/ephemeral/catalogues/cleanup/smp.yaml @@ -33,3 +33,9 @@ patches: |- metadata: name: versions-treasuremap $patch: delete + --- + apiVersion: airshipit.org/v1alpha1 + kind: VariableCatalogue + metadata: + name: networking-ha + $patch: delete diff --git a/manifests/site/test-site/target/catalogues/cleanup/smp.yaml b/manifests/site/test-site/target/catalogues/cleanup/smp.yaml index be71de4c6..b55faf6f3 100644 --- a/manifests/site/test-site/target/catalogues/cleanup/smp.yaml +++ b/manifests/site/test-site/target/catalogues/cleanup/smp.yaml @@ -33,3 +33,9 @@ patches: |- metadata: name: versions-treasuremap $patch: delete + --- + apiVersion: airshipit.org/v1alpha1 + kind: VariableCatalogue + metadata: + name: networking-ha + $patch: delete diff --git a/manifests/site/test-site/target/catalogues/kustomization.yaml b/manifests/site/test-site/target/catalogues/kustomization.yaml index f284cc319..f3604168f 100644 --- a/manifests/site/test-site/target/catalogues/kustomization.yaml +++ b/manifests/site/test-site/target/catalogues/kustomization.yaml @@ -9,3 +9,4 @@ resources: patchesStrategicMerge: - versions-airshipctl.yaml - networking.yaml + - networking-ha.yaml diff --git a/manifests/site/test-site/target/catalogues/networking-ha.yaml b/manifests/site/test-site/target/catalogues/networking-ha.yaml new file mode 100644 index 000000000..097173955 --- /dev/null +++ b/manifests/site/test-site/target/catalogues/networking-ha.yaml @@ -0,0 +1,15 @@ +# This catalogue alone needs to be overriden at site level based on the +# networkign requirement like HA +apiVersion: airshipit.org/v1alpha1 +kind: VariableCatalogue +metadata: + name: networking-ha + labels: + airshipit.org/deploy-k8s: "false" +vrrp: + kubernetes: + interface: bond.41 + virtual_ipaddress: 10.23.25.103 + ingress: + interface: bond.41 + virtual_ipaddress: 10.23.25.104 diff --git a/manifests/site/test-site/target/catalogues/networking.yaml b/manifests/site/test-site/target/catalogues/networking.yaml index dc4dd4641..ccd81be00 100644 --- a/manifests/site/test-site/target/catalogues/networking.yaml +++ b/manifests/site/test-site/target/catalogues/networking.yaml @@ -13,7 +13,6 @@ spec: controlPlaneEndpoint: host: "10.23.25.102" apiserverCertSANs: "[10.23.25.102, 10.23.24.102]" - ironic: provisioningIp: "10.23.24.102" dhcpRange: "10.23.24.200,10.23.24.250" diff --git a/manifests/site/virtual-network-cloud/ephemeral/catalogues/cleanup/smp.yaml b/manifests/site/virtual-network-cloud/ephemeral/catalogues/cleanup/smp.yaml index be71de4c6..b55faf6f3 100644 --- a/manifests/site/virtual-network-cloud/ephemeral/catalogues/cleanup/smp.yaml +++ b/manifests/site/virtual-network-cloud/ephemeral/catalogues/cleanup/smp.yaml @@ -33,3 +33,9 @@ patches: |- metadata: name: versions-treasuremap $patch: delete + --- + apiVersion: airshipit.org/v1alpha1 + kind: VariableCatalogue + metadata: + name: networking-ha + $patch: delete diff --git a/manifests/site/virtual-network-cloud/ephemeral/controlplane/hostgenerator/patch-delete-catalogues.yaml b/manifests/site/virtual-network-cloud/ephemeral/controlplane/hostgenerator/patch-delete-catalogues.yaml index 8d078e28e..d174e9375 100644 --- a/manifests/site/virtual-network-cloud/ephemeral/controlplane/hostgenerator/patch-delete-catalogues.yaml +++ b/manifests/site/virtual-network-cloud/ephemeral/controlplane/hostgenerator/patch-delete-catalogues.yaml @@ -39,3 +39,9 @@ patches: |- metadata: name: versions-treasuremap $patch: delete + --- + apiVersion: airshipit.org/v1alpha1 + kind: VariableCatalogue + metadata: + name: networking-ha + $patch: delete diff --git a/manifests/site/virtual-network-cloud/target/catalogues/cleanup/smp.yaml b/manifests/site/virtual-network-cloud/target/catalogues/cleanup/smp.yaml index be71de4c6..b55faf6f3 100644 --- a/manifests/site/virtual-network-cloud/target/catalogues/cleanup/smp.yaml +++ b/manifests/site/virtual-network-cloud/target/catalogues/cleanup/smp.yaml @@ -33,3 +33,9 @@ patches: |- metadata: name: versions-treasuremap $patch: delete + --- + apiVersion: airshipit.org/v1alpha1 + kind: VariableCatalogue + metadata: + name: networking-ha + $patch: delete diff --git a/manifests/type/airship-core/ephemeral/controlplane/kustomization.yaml b/manifests/type/airship-core/ephemeral/controlplane/kustomization.yaml index 1101e5947..1e67cca84 100644 --- a/manifests/type/airship-core/ephemeral/controlplane/kustomization.yaml +++ b/manifests/type/airship-core/ephemeral/controlplane/kustomization.yaml @@ -1,7 +1,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - - ../../../../../../airshipctl/manifests/function/k8scontrol + - ../../../../function/k8scontrol-ha - dex-apiserver/apiserver-certs-secret.yaml patchesJson6902: diff --git a/manifests/type/airship-core/ephemeral/controlplane/replacements/kustomization.yaml b/manifests/type/airship-core/ephemeral/controlplane/replacements/kustomization.yaml index 01c1fddc6..425b2bfc2 100644 --- a/manifests/type/airship-core/ephemeral/controlplane/replacements/kustomization.yaml +++ b/manifests/type/airship-core/ephemeral/controlplane/replacements/kustomization.yaml @@ -1,4 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: + - ../../../../../function/k8scontrol-ha/replacements - ../../../../../../../airshipctl/manifests/function/k8scontrol/replacements