From 5e1522fefbb6165defb1425e6ed078add6a29eeb Mon Sep 17 00:00:00 2001 From: rblundon Date: Tue, 29 Jul 2025 21:53:30 -0500 Subject: [PATCH] refactor nmstate to appset --- cluster/{ => archive}/nmstate.yaml | 0 cluster/nmstate-operator-appset.yaml | 37 +++++++++++ cluster/nmstate/base/multinetwork-enable.yaml | 2 + cluster/nmstate/base/namespace.yaml | 2 + cluster/nmstate/base/nmstate.yaml | 2 + cluster/nmstate/base/operatorgroup.yaml | 4 +- cluster/nmstate/base/subscription.yaml | 2 + .../overlays/in-cluster/iscsi-nad.yaml | 38 ++++++++++++ .../overlays/in-cluster/kustomization.yaml | 9 +++ .../overlays/in-cluster/ocp-storage-vlan.yaml | 30 +++++++++ .../nmstate/overlays/internal/iscsi-nad.yaml | 38 ++++++++++++ .../overlays/internal/kustomization.yaml | 9 +++ .../overlays/internal/ocp-storage-vlan.yaml | 61 +++++++++++++++++++ 13 files changed, 232 insertions(+), 2 deletions(-) rename cluster/{ => archive}/nmstate.yaml (100%) create mode 100644 cluster/nmstate-operator-appset.yaml create mode 100644 cluster/nmstate/overlays/in-cluster/iscsi-nad.yaml create mode 100644 cluster/nmstate/overlays/in-cluster/kustomization.yaml create mode 100644 cluster/nmstate/overlays/in-cluster/ocp-storage-vlan.yaml create mode 100644 cluster/nmstate/overlays/internal/iscsi-nad.yaml create mode 100644 cluster/nmstate/overlays/internal/kustomization.yaml create mode 100644 cluster/nmstate/overlays/internal/ocp-storage-vlan.yaml diff --git a/cluster/nmstate.yaml b/cluster/archive/nmstate.yaml similarity index 100% rename from cluster/nmstate.yaml rename to cluster/archive/nmstate.yaml diff --git a/cluster/nmstate-operator-appset.yaml b/cluster/nmstate-operator-appset.yaml new file mode 100644 index 0000000..e3f6b26 --- /dev/null +++ b/cluster/nmstate-operator-appset.yaml @@ -0,0 +1,37 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: nmstate-oprtstor + namespace: openshift-gitops + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + goTemplate: true + goTemplateOptions: ["missingkey=error"] + generators: + - clusters: {} # Variable is .name + template: + metadata: + name: '{{.name}}-cert-manager' + annotations: + argocd.argoproj.io/sync-wave: "1" + spec: + destination: + name: '{{.name}}' + namespace: openshift-nmstate + project: default + source: + path: cluster/nmstate/overlays/'{{.name}}' + repoURL: https://github.com/rblundon/homelab.git + targetRevision: HEAD + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - RespectIgnoreDifferences=true + - CreateNamespace=true + managedNamespaceMetadata: + labels: + argocd.argoproj.io/managed-by: openshift-gitops diff --git a/cluster/nmstate/base/multinetwork-enable.yaml b/cluster/nmstate/base/multinetwork-enable.yaml index 6b13ab4..aca3c1f 100644 --- a/cluster/nmstate/base/multinetwork-enable.yaml +++ b/cluster/nmstate/base/multinetwork-enable.yaml @@ -2,5 +2,7 @@ apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster + annotations: + argocd.argoproj.io/sync-wave: "4" spec: useMultiNetworkPolicy: true diff --git a/cluster/nmstate/base/namespace.yaml b/cluster/nmstate/base/namespace.yaml index 09926bf..93505b8 100644 --- a/cluster/nmstate/base/namespace.yaml +++ b/cluster/nmstate/base/namespace.yaml @@ -2,6 +2,8 @@ apiVersion: v1 kind: Namespace metadata: + annotations: + argocd.argoproj.io/sync-wave: "1" labels: kubernetes.io/metadata.name: openshift-nmstate name: openshift-nmstate diff --git a/cluster/nmstate/base/nmstate.yaml b/cluster/nmstate/base/nmstate.yaml index 132b901..dd3b0e0 100644 --- a/cluster/nmstate/base/nmstate.yaml +++ b/cluster/nmstate/base/nmstate.yaml @@ -1,5 +1,7 @@ apiVersion: nmstate.io/v1 kind: NMState metadata: + annotations: + argocd.argoproj.io/sync-wave: "4" name: nmstate spec: {} diff --git a/cluster/nmstate/base/operatorgroup.yaml b/cluster/nmstate/base/operatorgroup.yaml index ae59787..46d3716 100644 --- a/cluster/nmstate/base/operatorgroup.yaml +++ b/cluster/nmstate/base/operatorgroup.yaml @@ -2,8 +2,8 @@ apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: - annotations: {} -# olm.providedAPIs: NMState.v1.nmstate.io + annotations: + argocd.argoproj.io/sync-wave: "3" name: openshift-nmstate namespace: openshift-nmstate spec: diff --git a/cluster/nmstate/base/subscription.yaml b/cluster/nmstate/base/subscription.yaml index 949a9a1..aa06bb0 100644 --- a/cluster/nmstate/base/subscription.yaml +++ b/cluster/nmstate/base/subscription.yaml @@ -2,6 +2,8 @@ apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: + annotations: + argocd.argoproj.io/sync-wave: "2" labels: operators.coreos.com/kubernetes-nmstate-operator.openshift-nmstate: "" name: kubernetes-nmstate-operator diff --git a/cluster/nmstate/overlays/in-cluster/iscsi-nad.yaml b/cluster/nmstate/overlays/in-cluster/iscsi-nad.yaml new file mode 100644 index 0000000..913259d --- /dev/null +++ b/cluster/nmstate/overlays/in-cluster/iscsi-nad.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: k8s.cni.cncf.io/v1 +kind: NetworkAttachmentDefinition +metadata: + annotations: + description: Native VLAN connection for iSCSI + name: vlan121-localnet + namespace: default +spec: + config: |- + { + "name": "iscsi-net", + "cniVersion": "0.3.1", + "type": "vlan", + "master": "enp1s0f0", + "mtu": 1500, + "vlanId": 121, + "linkInContainer": false, + "ipam": { + "type": "static", + "addresses": [ + { + "address": "10.10.121.10/24" + } + ] + } + } + + # { + # "cniVersion": "0.3.1", + # "name": "bridge-net", + # "type": "bridge", + # "isGateway": true, + # "vlan": 2, + # "ipam": { + # "type": "dhcp" + # } + # } \ No newline at end of file diff --git a/cluster/nmstate/overlays/in-cluster/kustomization.yaml b/cluster/nmstate/overlays/in-cluster/kustomization.yaml new file mode 100644 index 0000000..062a08b --- /dev/null +++ b/cluster/nmstate/overlays/in-cluster/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonAnnotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + +resources: +- ../../base +- ocp-storage-vlan.yaml diff --git a/cluster/nmstate/overlays/in-cluster/ocp-storage-vlan.yaml b/cluster/nmstate/overlays/in-cluster/ocp-storage-vlan.yaml new file mode 100644 index 0000000..4c4ace7 --- /dev/null +++ b/cluster/nmstate/overlays/in-cluster/ocp-storage-vlan.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: nmstate.io/v1 +kind: NodeNetworkConfigurationPolicy +metadata: + name: storage-network-ocp-hub + annotations: + argocd.argoproj.io/sync-wave: "10" +spec: + nodeSelector: + kubernetes.io/hostname: ocp-hub + desiredState: + interfaces: + - name: enp1s0f0.121 + state: up + type: vlan + vlan: + base-iface: enp1s0f0 + id: 121 + - bridge: + port: + - name: enp1s0f0.121 + ipv4: + address: + - ip: 10.10.121.10 + prefix-length: 24 + enabled: true + name: storage-network + state: up + type: linux-bridge + description: Linux bridge with enp1s0 as a port on VLAN 121 diff --git a/cluster/nmstate/overlays/internal/iscsi-nad.yaml b/cluster/nmstate/overlays/internal/iscsi-nad.yaml new file mode 100644 index 0000000..913259d --- /dev/null +++ b/cluster/nmstate/overlays/internal/iscsi-nad.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: k8s.cni.cncf.io/v1 +kind: NetworkAttachmentDefinition +metadata: + annotations: + description: Native VLAN connection for iSCSI + name: vlan121-localnet + namespace: default +spec: + config: |- + { + "name": "iscsi-net", + "cniVersion": "0.3.1", + "type": "vlan", + "master": "enp1s0f0", + "mtu": 1500, + "vlanId": 121, + "linkInContainer": false, + "ipam": { + "type": "static", + "addresses": [ + { + "address": "10.10.121.10/24" + } + ] + } + } + + # { + # "cniVersion": "0.3.1", + # "name": "bridge-net", + # "type": "bridge", + # "isGateway": true, + # "vlan": 2, + # "ipam": { + # "type": "dhcp" + # } + # } \ No newline at end of file diff --git a/cluster/nmstate/overlays/internal/kustomization.yaml b/cluster/nmstate/overlays/internal/kustomization.yaml new file mode 100644 index 0000000..062a08b --- /dev/null +++ b/cluster/nmstate/overlays/internal/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonAnnotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + +resources: +- ../../base +- ocp-storage-vlan.yaml diff --git a/cluster/nmstate/overlays/internal/ocp-storage-vlan.yaml b/cluster/nmstate/overlays/internal/ocp-storage-vlan.yaml new file mode 100644 index 0000000..d704967 --- /dev/null +++ b/cluster/nmstate/overlays/internal/ocp-storage-vlan.yaml @@ -0,0 +1,61 @@ +--- +apiVersion: nmstate.io/v1 +kind: NodeNetworkConfigurationPolicy +metadata: + name: storage-network-int-worker01 + annotations: + argocd.argoproj.io/sync-wave: "10" +spec: + nodeSelector: + kubernetes.io/hostname: int-worker01 + desiredState: + interfaces: + - name: enp2s0f0.121 + state: up + type: vlan + vlan: + base-iface: enp2s0f0 + id: 121 + - bridge: + port: + - name: enp2s0f0.121 + ipv4: + address: + - ip: 10.10.121.64 + prefix-length: 24 + enabled: true + name: storage-network + state: up + type: linux-bridge + description: Linux bridge with enp1s0 as a port on VLAN 121 + +--- +apiVersion: nmstate.io/v1 +kind: NodeNetworkConfigurationPolicy +metadata: + name: storage-network-int-worker02 + annotations: + argocd.argoproj.io/sync-wave: "10" +spec: + nodeSelector: + kubernetes.io/hostname: int-worker02 + desiredState: + interfaces: + - name: enp2s0f0.121 + state: up + type: vlan + vlan: + base-iface: enp2s0f0 + id: 121 + - bridge: + port: + - name: enp2s0f0.121 + ipv4: + address: + - ip: 10.10.121.65 + prefix-length: 24 + enabled: true + name: storage-network + state: up + type: linux-bridge + description: Linux bridge with enp1s0 as a port on VLAN 121 \ No newline at end of file