Skip to content

Instantly share code, notes, and snippets.

@otsuarez
Created December 31, 2019 21:07
Show Gist options
  • Save otsuarez/0c29ae374bd65ecfdae9db3df74d5290 to your computer and use it in GitHub Desktop.
Save otsuarez/0c29ae374bd65ecfdae9db3df74d5290 to your computer and use it in GitHub Desktop.
Using vars in kustomize
#!/usr/bin/env bash
set -eu
set -o pipefail
TMPDIR="$(mktemp -d)"
pushd $TMPDIR 2>&1 >/dev/null
[ -d "app" ] || mkdir app kustomizeconfig
cat <<_EOF_ >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_ > app/kustomization.yml
---
resources:
- deployment.yml
- ingress.yml
- domain-cm.yml
_EOF_
cat <<_EOF_ > 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_' > 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: $(APP_SERVICE)
domainName: $(APP_DOMAIN)
servicePort: 8080
---
kind: Service
apiVersion: v1
metadata:
name: my-app-service
annotations:
external-dns.alpha.kubernetes.io/hostname: my-app.$(APP_DOMAIN)
spec:
type: LoadBalancer
ports:
- port: 8080
name: http
- port: 8181
name: http-ssl
selector:
app: my-app
_EOF_
cat <<_EOF_ > kustomizeconfig/config.yml
---
varReference:
- path: spec/rules/http/paths/backend/serviceName
kind: Ingress
- path: spec/rules/http/paths/backend/domainName
kind: Ingress
- path: metadata/annotations
kind: Service
_EOF_
cat <<_EOF_ > kustomization.yml
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
app: my-app
imageTags:
- name: my-app
newName: localhost/my-app
newTag: latest
bases:
- app
namePrefix: dev-
vars:
- name: APP_SERVICE
objref:
kind: Service
name: my-app-service
apiVersion: v1
fieldref:
fieldpath: metadata.name
- name: APP_DOMAIN
objref:
kind: ConfigMap
name: domain-cm
apiVersion: v1
fieldref:
fieldpath: data.domain
configurations:
- kustomizeconfig/config.yml
_EOF_
tree
kustomize build .
popd 2>&1 >/dev/null
rm -fr "${TMPDIR}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment