Add ingress-nginx

This commit is contained in:
2026-09-03 04:37:04 +01:00
parent 4fe5a921ff
commit 923cdd5162
5 changed files with 159 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
# ingress-nginx, installed like MetalLB and Longhorn: an Application
# pointing at apps/ingress-nginx, a Helm chart that pulls in the upstream
# ingress-nginx chart. Once this syncs, apps can request a hostname-routed
# address via an Ingress resource instead of each needing its own MetalLB
# LoadBalancer Service. See docs/11-ingress.md.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ingress-nginx
namespace: argocd
# Safe to cascade: ingress-nginx holds no persistent data of its own,
# unlike apps/longhorn.yaml.
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://tea.ahmza.com/ahmza/k8s-starter-pack.git
targetRevision: main
path: apps/ingress-nginx
destination:
server: https://kubernetes.default.svc
namespace: ingress-nginx
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
+19
View File
@@ -0,0 +1,19 @@
# An "umbrella" chart, same pattern as apps/metallb/ and apps/longhorn/:
# declares a dependency on the upstream ingress-nginx chart. Argo CD detects
# this as a Helm source because a Chart.yaml exists at this path.
#
# See docs/11-ingress.md for why this exists: one shared LoadBalancer
# address routing many hostnames, instead of every app needing its own
# MetalLB address.
apiVersion: v2
name: ingress-nginx-app
description: Installs ingress-nginx, routing many hostnames through one shared LoadBalancer address
version: 0.1.0
dependencies:
- name: ingress-nginx
# A version range rather than an exact pin, so this doesn't silently go
# stale. Check https://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx
# for the current release and pin an exact version for a fully
# reproducible install.
version: ">=4.11.0"
repository: https://kubernetes.github.io/ingress-nginx
+21
View File
@@ -0,0 +1,21 @@
# Values for the upstream ingress-nginx chart, nested under
# `ingress-nginx:` (the dependency's name in Chart.yaml).
ingress-nginx:
controller:
service:
type: LoadBalancer
annotations:
# Requests this specific address from MetalLB's BGP pool (see
# docs/05-metallb.md) so it stays predictable across rebuilds.
# Must fall inside apps/metallb/templates/ipaddresspool.yaml's
# range, or MetalLB will never satisfy the request.
metallb.io/loadBalancerIPs: "10.10.60.12"
# ingress-nginx's default Pod Security posture (no hostNetwork, no
# hostPath, only the baseline-allowed NET_BIND_SERVICE capability to
# bind ports 80/443) already fits Kubernetes' baseline profile, unlike
# MetalLB or Longhorn. No managedNamespaceMetadata override needed here.
ingressClassResource:
# Every Ingress resource in this cluster that doesn't name a class
# explicitly uses this one automatically \u2014 the same "no
# storageClassName needed" convenience Longhorn gives PVCs.
default: true