Skip to content

Instantly share code, notes, and snippets.

@alexandreroman
Created April 15, 2022 13:47
Show Gist options
  • Save alexandreroman/0c9557e4f3d09a1168cba04ab1804589 to your computer and use it in GitHub Desktop.
Save alexandreroman/0c9557e4f3d09a1168cba04ab1804589 to your computer and use it in GitHub Desktop.
Templating K8s manifest files leveraging ytt
#@ load("@ytt:data", "data")
---
#@ def labels(comp):
app.kubernetes.io/part-of: #@ data.values.app.name
app.kubernetes.io/version: #@ data.values.app.version
app.kubernetes.io/instance: #@ "{}-{}".format(data.values.app.name, data.values.env.name)
app.kubernetes.io/component: #@ comp
#@ end
---
#@ def namespace():
#@ return "{}-{}".format(data.values.app.name, data.values.env.name)
#@ end
---
apiVersion: v1
kind: Namespace
metadata:
name: #@ namespace()
labels: #@ labels("app")
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
namespace: #@ namespace()
labels: #@ labels("app")
spec:
replicas: #@ data.values.app.replicas
selector:
matchLabels: #@ labels("app")
template:
metadata:
labels: #@ labels("app")
spec:
containers:
- image: ghcr.io/alexandreroman/spring-on-k8s
name: app
resources:
limits:
memory: 1Gi
ports:
- containerPort: 8080
livenessProbe:
httpGet:
port: 8080
path: /actuator/health/liveness
readinessProbe:
httpGet:
port: 8080
path: /actuator/health/readiness
---
apiVersion: v1
kind: Service
metadata:
name: app
namespace: #@ namespace()
labels: #@ labels("app")
spec:
type: ClusterIP
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector: #@ labels("app")
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app
namespace: #@ namespace()
labels: #@ labels("app")
spec:
rules:
- host: #@ "springonk8s.{}".format(data.values.env.domain)
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app
port:
number: 8080
#@data/values
---
env:
name: staging
domain: staging.corp
app:
name: spring-on-k8s
version: 1.0.0
replicas: 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment