Skip to content

Instantly share code, notes, and snippets.

@otsuarez
Created January 2, 2020 19:09
Show Gist options
  • Save otsuarez/04e81be11b714a619045d2568abc7b63 to your computer and use it in GitHub Desktop.
Save otsuarez/04e81be11b714a619045d2568abc7b63 to your computer and use it in GitHub Desktop.
using kustomize with vars
#!/usr/bin/env bash
set -eu
set -o pipefail
# TMPDIR="$(mktemp -d)"
# pushd $TMPDIR 2>&1 >/dev/null
[ -d "base" ] || mkdir -p base/app dev/kustomizeconfig
cat <<_EOF_ >base/app/domain-cm.yml
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/name: domain-cm
app.kubernetes.io/part-of: argocd
name: domain-cm
namespace: monitoring
data:
domain: dev-eks.acme.com
_EOF_
cat <<_EOF_ > base/app/kustomization.yml
---
resources:
- deployment.yml
- ingress.yml
- domain-cm.yml
_EOF_
cat <<_EOF_ > base/app/deployment.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
labels:
app: my-app
spec:
replicas: 1
template:
spec:
containers:
- name: my-app
image: my-app
ports:
- containerPort: 808
_EOF_
cat <<'_EOF_' > base/app/ingress.yml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-app
spec:
tls:
- hosts:
- foo.bar.com
secretName: tls-secret5
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: my-app-service
servicePort: 8080
---
kind: Service
apiVersion: v1
metadata:
name: my-app-service
spec:
type: LoadBalancer
ports:
- port: 8080
name: http
- port: 8181
name: http-ssl
selector:
app: my-app
_EOF_
cat <<_EOF_ > dev/kustomizeconfig/config.yml
---
varReference:
- path: metadata/annotations
kind: Service
_EOF_
cat <<'_EOF_' > dev/svc-dns.yml
---
kind: Service
apiVersion: v1
metadata:
name: my-app-service
annotations:
external-dns.alpha.kubernetes.io/hostname: my-app.$(APP_DOMAIN)
_EOF_
cat <<'_EOF_' > dev/ingress-dns.yml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-app
spec:
tls:
- hosts:
- my-app.$(APP_DOMAIN)
secretName: tls-secret5
rules:
- host: my-app.$(APP_DOMAIN)
http:
paths:
- backend:
serviceName: my-app-service
servicePort: 8080
_EOF_
cat <<_EOF_ > dev/kustomization.yml
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
app: my-app
bases:
- ../base/app
vars:
- name: APP_DOMAIN
objref:
kind: ConfigMap
name: domain-cm
apiVersion: v1
fieldref:
fieldpath: data.domain
configurations:
- kustomizeconfig/config.yml
patchesStrategicMerge:
- svc-dns.yml
- ingress-dns.yml
_EOF_
kustomize build dev
# popd 2>&1 >/dev/null
# rm -fr "${TMPDIR}"
# tree
TREE_OUTPUT='
.
├── base
│   └── app
│   ├── deployment.yml
│   ├── domain-cm.yml
│   ├── ingress.yml
│   └── kustomization.yml
├── dev
│   ├── ingress-dns.yml
│   ├── kustomization.yml
│   ├── kustomizeconfig
│   │   └── config.yml
│   └── svc-dns.yml
└── kustomize-vars-demo.sh'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment