From c85d4f7a3ddf860cd6bfddc8532effabf6893c48 Mon Sep 17 00:00:00 2001 From: rblundon Date: Sat, 2 Aug 2025 18:04:16 -0500 Subject: [PATCH] deploy nginx ingress to internal cluster --- .../{ => base}/externalsecrets.yaml | 0 .../{ => base}/kustomization.yaml | 0 .../external-dns/{ => base}/namespace.yaml | 0 .../{ => base}/operatorgroup.yaml | 0 cluster/external-dns/{ => base}/scc.yaml | 0 .../external-dns/{ => base}/subscription.yaml | 0 .../{ => overlays/external}/cloudflare.yaml | 3 +- .../overlays/external/kustomization.yaml | 8 ++++ .../overlays/internal/configmap.yaml | 5 ++ .../overlays/internal/kustomization.yaml | 8 ++++ .../overlays/internal/rfc2136.yaml | 40 ++++++++++++++++ .../overlays/hub/kustomization.yaml | 10 ---- cluster/ingress-nginx-appset.yaml | 48 +++++++++++++++++++ cluster/ingress-nginx/Chart.yaml | 14 ++++++ .../base}/kustomization.yaml | 2 - cluster/ingress-nginx/base/namespace.yaml | 14 ++++++ .../base}/nginx-ingress-operator.yaml | 0 cluster/ingress-nginx/base/pvcs.yaml | 13 +++++ .../base}/scc.yaml | 0 .../base}/subscription.yaml | 0 .../overlays/external/ingresscontroller.yaml} | 0 .../overlays/external/kustomization.yaml | 8 ++++ .../overlays/internal/ingresscontroller.yaml} | 0 .../overlays/internal/kustomization.yaml | 8 ++++ cluster/ingress-nginx/values-internal.yaml | 6 +++ cluster/nginx-ingress-operator/namespace.yaml | 24 ---------- cluster/nginx-ingress-operator/pvcs.yaml | 26 ---------- 27 files changed, 173 insertions(+), 64 deletions(-) rename cluster/external-dns/{ => base}/externalsecrets.yaml (100%) rename cluster/external-dns/{ => base}/kustomization.yaml (100%) rename cluster/external-dns/{ => base}/namespace.yaml (100%) rename cluster/external-dns/{ => base}/operatorgroup.yaml (100%) rename cluster/external-dns/{ => base}/scc.yaml (100%) rename cluster/external-dns/{ => base}/subscription.yaml (100%) rename cluster/external-dns/{ => overlays/external}/cloudflare.yaml (97%) create mode 100644 cluster/external-dns/overlays/external/kustomization.yaml create mode 100644 cluster/external-dns/overlays/internal/configmap.yaml create mode 100644 cluster/external-dns/overlays/internal/kustomization.yaml create mode 100644 cluster/external-dns/overlays/internal/rfc2136.yaml delete mode 100644 cluster/external-secrets/overlays/hub/kustomization.yaml create mode 100644 cluster/ingress-nginx-appset.yaml create mode 100644 cluster/ingress-nginx/Chart.yaml rename cluster/{nginx-ingress-operator => ingress-nginx/base}/kustomization.yaml (80%) create mode 100644 cluster/ingress-nginx/base/namespace.yaml rename cluster/{nginx-ingress-operator => ingress-nginx/base}/nginx-ingress-operator.yaml (100%) create mode 100644 cluster/ingress-nginx/base/pvcs.yaml rename cluster/{nginx-ingress-operator => ingress-nginx/base}/scc.yaml (100%) rename cluster/{nginx-ingress-operator => ingress-nginx/base}/subscription.yaml (100%) rename cluster/{nginx-ingress-operator/ingresscontroller-external.yaml => ingress-nginx/overlays/external/ingresscontroller.yaml} (100%) create mode 100644 cluster/ingress-nginx/overlays/external/kustomization.yaml rename cluster/{nginx-ingress-operator/ingresscontroller-internal.yaml => ingress-nginx/overlays/internal/ingresscontroller.yaml} (100%) create mode 100644 cluster/ingress-nginx/overlays/internal/kustomization.yaml create mode 100644 cluster/ingress-nginx/values-internal.yaml delete mode 100644 cluster/nginx-ingress-operator/namespace.yaml delete mode 100644 cluster/nginx-ingress-operator/pvcs.yaml diff --git a/cluster/external-dns/externalsecrets.yaml b/cluster/external-dns/base/externalsecrets.yaml similarity index 100% rename from cluster/external-dns/externalsecrets.yaml rename to cluster/external-dns/base/externalsecrets.yaml diff --git a/cluster/external-dns/kustomization.yaml b/cluster/external-dns/base/kustomization.yaml similarity index 100% rename from cluster/external-dns/kustomization.yaml rename to cluster/external-dns/base/kustomization.yaml diff --git a/cluster/external-dns/namespace.yaml b/cluster/external-dns/base/namespace.yaml similarity index 100% rename from cluster/external-dns/namespace.yaml rename to cluster/external-dns/base/namespace.yaml diff --git a/cluster/external-dns/operatorgroup.yaml b/cluster/external-dns/base/operatorgroup.yaml similarity index 100% rename from cluster/external-dns/operatorgroup.yaml rename to cluster/external-dns/base/operatorgroup.yaml diff --git a/cluster/external-dns/scc.yaml b/cluster/external-dns/base/scc.yaml similarity index 100% rename from cluster/external-dns/scc.yaml rename to cluster/external-dns/base/scc.yaml diff --git a/cluster/external-dns/subscription.yaml b/cluster/external-dns/base/subscription.yaml similarity index 100% rename from cluster/external-dns/subscription.yaml rename to cluster/external-dns/base/subscription.yaml diff --git a/cluster/external-dns/cloudflare.yaml b/cluster/external-dns/overlays/external/cloudflare.yaml similarity index 97% rename from cluster/external-dns/cloudflare.yaml rename to cluster/external-dns/overlays/external/cloudflare.yaml index f07d178..8319d12 100644 --- a/cluster/external-dns/cloudflare.yaml +++ b/cluster/external-dns/overlays/external/cloudflare.yaml @@ -17,7 +17,7 @@ spec: serviceAccountName: external-dns containers: - name: cloudflare - image: registry.k8s.io/external-dns/external-dns:v0.15.0 + image: registry.k8s.io/external-dns/external-dns:v0.18.0 args: # - --source=service # ingress is also possible - --source=ingress @@ -27,7 +27,6 @@ spec: # - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request - --policy=sync # or upsert-only - env: - name: CF_API_TOKEN valueFrom: diff --git a/cluster/external-dns/overlays/external/kustomization.yaml b/cluster/external-dns/overlays/external/kustomization.yaml new file mode 100644 index 0000000..03b3cd4 --- /dev/null +++ b/cluster/external-dns/overlays/external/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonAnnotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + +resources: +- ../../base \ No newline at end of file diff --git a/cluster/external-dns/overlays/internal/configmap.yaml b/cluster/external-dns/overlays/internal/configmap.yaml new file mode 100644 index 0000000..94b7dff --- /dev/null +++ b/cluster/external-dns/overlays/internal/configmap.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + creationTimestamp: null + name: krb5.conf \ No newline at end of file diff --git a/cluster/external-dns/overlays/internal/kustomization.yaml b/cluster/external-dns/overlays/internal/kustomization.yaml new file mode 100644 index 0000000..03b3cd4 --- /dev/null +++ b/cluster/external-dns/overlays/internal/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonAnnotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + +resources: +- ../../base \ No newline at end of file diff --git a/cluster/external-dns/overlays/internal/rfc2136.yaml b/cluster/external-dns/overlays/internal/rfc2136.yaml new file mode 100644 index 0000000..669ceb6 --- /dev/null +++ b/cluster/external-dns/overlays/internal/rfc2136.yaml @@ -0,0 +1,40 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: external-dns +spec: + strategy: + type: Recreate + selector: + matchLabels: + app: external-dns + template: + metadata: + labels: + app: external-dns + spec: + serviceAccountName: external-dns + containers: + - name: rfc2136 + image: registry.k8s.io/external-dns/external-dns:v0.18.0 + args: + - --registry=txt + - --txt-prefix=external-dns- + - --txt-owner-id=k8s + - --provider=rfc2136 + - --rfc2136-host=infra01.int.mk-labs.cloud + - --rfc2136-port=53 + - --rfc2136-zone=int.mk-labs.cloud + - --rfc2136-tsig-secret=96Ah/a2g0/nLeFGK+d/0tzQcccf9hCEIy34PoXX2Qg8= + - --rfc2136-tsig-secret-alg=hmac-sha256 + - --rfc2136-tsig-keyname=externaldns-key + - --rfc2136-tsig-axfr + - --source=ingress + - --domain-filter=int.mk-labs.cloud + env: + - name: FREEIPA_API_TOKEN + valueFrom: + secretKeyRef: + name: rfc2136-api-token + key: api-token diff --git a/cluster/external-secrets/overlays/hub/kustomization.yaml b/cluster/external-secrets/overlays/hub/kustomization.yaml deleted file mode 100644 index d083cf0..0000000 --- a/cluster/external-secrets/overlays/hub/kustomization.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -commonAnnotations: - argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true - -resources: -# - github.com/redhat-cop/gitops-catalog/external-secrets-operator/operator/overlays/stable -# - github.com/redhat-cop/gitops-catalog/external-secrets-operator/instance/overlays/default -- ../../base \ No newline at end of file diff --git a/cluster/ingress-nginx-appset.yaml b/cluster/ingress-nginx-appset.yaml new file mode 100644 index 0000000..4b64523 --- /dev/null +++ b/cluster/ingress-nginx-appset.yaml @@ -0,0 +1,48 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: ingress-nginx + namespace: openshift-gitops + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + goTemplate: true + goTemplateOptions: ["missingkey=error"] + generators: + # - clusters: {} # Variable is .name + - list: # Variable is .cluster + elements: + - cluster: internal + template: + metadata: + name: '{{.cluster}}-ingress-nginx' + annotations: + argocd.argoproj.io/sync-wave: "3" + spec: + destination: + name: '{{.cluster}}' + namespace: ingress-nginx + project: default + source: + path: cluster/ingress-nginx + repoURL: https://github.com/rblundon/homelab.git + targetRevision: HEAD + helm: + valueFiles: + - values-{{.cluster}}.yaml + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - RespectIgnoreDifferences=true + - CreateNamespace=true + managedNamespaceMetadata: + labels: + argocd.argoproj.io/managed-by: openshift-gitops + ignoreDifferences: + - group: apps + kind: Deployment + jsonPointers: + - /spec/replicas \ No newline at end of file diff --git a/cluster/ingress-nginx/Chart.yaml b/cluster/ingress-nginx/Chart.yaml new file mode 100644 index 0000000..4492028 --- /dev/null +++ b/cluster/ingress-nginx/Chart.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: v2 +name: ingress-nginx-umbrella +description: A helm chart to include ingress-nginx with values +type: application +version: 0.1.0 +appVersion: 0.1.0 + +dependencies: +- name: ingress-nginx + version: v1.13.0 + repository: https://charts.jetstack.io + alias: ingress-nginx + condition: ingress-nginx.enabled diff --git a/cluster/nginx-ingress-operator/kustomization.yaml b/cluster/ingress-nginx/base/kustomization.yaml similarity index 80% rename from cluster/nginx-ingress-operator/kustomization.yaml rename to cluster/ingress-nginx/base/kustomization.yaml index ae49899..6efe024 100644 --- a/cluster/nginx-ingress-operator/kustomization.yaml +++ b/cluster/ingress-nginx/base/kustomization.yaml @@ -12,5 +12,3 @@ resources: - scc.yaml - namespace.yaml - pvcs.yaml -- ingresscontroller-external.yaml -- ingresscontroller-internal.yaml \ No newline at end of file diff --git a/cluster/ingress-nginx/base/namespace.yaml b/cluster/ingress-nginx/base/namespace.yaml new file mode 100644 index 0000000..1d3ec40 --- /dev/null +++ b/cluster/ingress-nginx/base/namespace.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + annotations: + argocd.argoproj.io/sync-wave: "1" + labels: + kubernetes.io/metadata.name: nginx-ingress + name: nginx-ingress + argocd.argoproj.io/managed-by: openshift-gitops-operator + name: nginx-ingress +spec: + finalizers: + - kubernetes diff --git a/cluster/nginx-ingress-operator/nginx-ingress-operator.yaml b/cluster/ingress-nginx/base/nginx-ingress-operator.yaml similarity index 100% rename from cluster/nginx-ingress-operator/nginx-ingress-operator.yaml rename to cluster/ingress-nginx/base/nginx-ingress-operator.yaml diff --git a/cluster/ingress-nginx/base/pvcs.yaml b/cluster/ingress-nginx/base/pvcs.yaml new file mode 100644 index 0000000..b07a889 --- /dev/null +++ b/cluster/ingress-nginx/base/pvcs.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nginx-cache + namespace: nginx-ingress +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 5Gi + storageClassName: synology-nfs diff --git a/cluster/nginx-ingress-operator/scc.yaml b/cluster/ingress-nginx/base/scc.yaml similarity index 100% rename from cluster/nginx-ingress-operator/scc.yaml rename to cluster/ingress-nginx/base/scc.yaml diff --git a/cluster/nginx-ingress-operator/subscription.yaml b/cluster/ingress-nginx/base/subscription.yaml similarity index 100% rename from cluster/nginx-ingress-operator/subscription.yaml rename to cluster/ingress-nginx/base/subscription.yaml diff --git a/cluster/nginx-ingress-operator/ingresscontroller-external.yaml b/cluster/ingress-nginx/overlays/external/ingresscontroller.yaml similarity index 100% rename from cluster/nginx-ingress-operator/ingresscontroller-external.yaml rename to cluster/ingress-nginx/overlays/external/ingresscontroller.yaml diff --git a/cluster/ingress-nginx/overlays/external/kustomization.yaml b/cluster/ingress-nginx/overlays/external/kustomization.yaml new file mode 100644 index 0000000..03b3cd4 --- /dev/null +++ b/cluster/ingress-nginx/overlays/external/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonAnnotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + +resources: +- ../../base \ No newline at end of file diff --git a/cluster/nginx-ingress-operator/ingresscontroller-internal.yaml b/cluster/ingress-nginx/overlays/internal/ingresscontroller.yaml similarity index 100% rename from cluster/nginx-ingress-operator/ingresscontroller-internal.yaml rename to cluster/ingress-nginx/overlays/internal/ingresscontroller.yaml diff --git a/cluster/ingress-nginx/overlays/internal/kustomization.yaml b/cluster/ingress-nginx/overlays/internal/kustomization.yaml new file mode 100644 index 0000000..03b3cd4 --- /dev/null +++ b/cluster/ingress-nginx/overlays/internal/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonAnnotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + +resources: +- ../../base \ No newline at end of file diff --git a/cluster/ingress-nginx/values-internal.yaml b/cluster/ingress-nginx/values-internal.yaml new file mode 100644 index 0000000..9a9e7b0 --- /dev/null +++ b/cluster/ingress-nginx/values-internal.yaml @@ -0,0 +1,6 @@ +--- +## nginx configuration +## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/index.md + +ingress-nginx: + enabled: true diff --git a/cluster/nginx-ingress-operator/namespace.yaml b/cluster/nginx-ingress-operator/namespace.yaml deleted file mode 100644 index 5842928..0000000 --- a/cluster/nginx-ingress-operator/namespace.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: Namespace -metadata: - labels: - kubernetes.io/metadata.name: nginx-ingress-external - name: nginx-ingress-external - argocd.argoproj.io/managed-by: openshift-gitops-operator - name: nginx-ingress-external -spec: - finalizers: - - kubernetes ---- -apiVersion: v1 -kind: Namespace -metadata: - labels: - kubernetes.io/metadata.name: nginx-ingress-internal - name: nginx-ingress-internal - argocd.argoproj.io/managed-by: openshift-gitops-operator - name: nginx-ingress-internal -spec: - finalizers: - - kubernetes \ No newline at end of file diff --git a/cluster/nginx-ingress-operator/pvcs.yaml b/cluster/nginx-ingress-operator/pvcs.yaml deleted file mode 100644 index 22ef1a8..0000000 --- a/cluster/nginx-ingress-operator/pvcs.yaml +++ /dev/null @@ -1,26 +0,0 @@ ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nginx-cache-external - namespace: nginx-ingress-external -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 5Gi - storageClassName: synology-nfs ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: nginx-cache-internal - namespace: nginx-ingress-internal -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 5Gi - storageClassName: synology-nfs