Skip to content

Instantly share code, notes, and snippets.

@cpressland
Created September 16, 2025 16:09
Show Gist options
  • Select an option

  • Save cpressland/312a56c35dc7d98175c050339d953a09 to your computer and use it in GitHub Desktop.

Select an option

Save cpressland/312a56c35dc7d98175c050339d953a09 to your computer and use it in GitHub Desktop.
Kustomize Replacements Example

Provides a simple way of replacing ingress annotations with values already defined elsewhere. Output example:

apiVersion: v1
kind: Namespace
metadata:
  name: jeffspace
---
apiVersion: v1
kind: Service
metadata:
  name: jeffnet
  namespace: jeffspace
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/service-upstream: "true"
    nginx.ingress.kubernetes.io/upstream-vhost: jeffnet.jeffspace.svc.cluster.local
  name: jeffnet-ingress
  namespace: jeffspace
spec:
  ingressClassName: nginx-int
  rules:
  - host: api.jeff.net
    http:
      paths:
      - backend:
          service:
            name: jeffnet
            port:
              number: 80
        path: /
        pathType: Prefix
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/upstream-vhost: x.y.svc.cluster.local
nginx.ingress.kubernetes.io/service-upstream: "true"
name: jeffnet-ingress
namespace: jeffspace
spec:
ingressClassName: nginx-int
rules:
- host: api.jeff.net
http:
paths:
- backend:
service:
name: jeffnet
port:
number: 80
path: /
pathType: Prefix
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- service.yaml
- ingress.yaml
replacements:
- source:
kind: Service
fieldPath: metadata.name
targets:
- select:
kind: Ingress
fieldPaths:
- metadata.annotations.[nginx.ingress.kubernetes.io/upstream-vhost]
options: { delimiter: ".", index: 0 }
- source:
kind: Namespace
fieldPath: metadata.name
targets:
- select:
kind: Ingress
fieldPaths:
- metadata.annotations.[nginx.ingress.kubernetes.io/upstream-vhost]
options: { delimiter: ".", index: 1 }
apiVersion: v1
kind: Namespace
metadata:
name: jeffspace
apiVersion: v1
kind: Service
metadata:
name: jeffnet
namespace: jeffspace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment