deploy nginx ingress to internal cluster

This commit is contained in:
2025-08-02 18:04:16 -05:00
parent 7ffc2c983b
commit c85d4f7a3d
27 changed files with 173 additions and 64 deletions

View File

@@ -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:

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -0,0 +1,5 @@
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: null
name: krb5.conf

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -12,5 +12,3 @@ resources:
- scc.yaml
- namespace.yaml
- pvcs.yaml
- ingresscontroller-external.yaml
- ingresscontroller-internal.yaml

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
resources:
- ../../base

View File

@@ -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

View File

@@ -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

View File

@@ -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