Kubernetes Helm Chart Scripts With Summaries
Kubernetes Helm Chart Scripts With Summaries
---
apiVersion: v2
name: nginx-web-app
version: 0.1.0
# Chart Values
values:
replicaCount: 3
image:
repository: nginx
tag: latest
service:
type: LoadBalancer
port: 80
# Deployment Template
templates:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
ports:
- containerPort: 80
# Service Template
- apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: {{ .Values.service.type }}
selector:
app: nginx
ports:
- protocol: TCP
port: {{ .Values.service.port }}
targetPort: 80
---
---
apiVersion: v2
name: mysql-stateful-app
version: 0.1.0
# Chart Values
values:
image:
repository: mysql
tag: 8.0
storage:
size: 10Gi
service:
type: ClusterIP
port: 3306
# StatefulSet Template
templates:
- apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql-statefulset
spec:
serviceName: mysql
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: root-password
ports:
- containerPort: {{ .Values.service.port }}
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: mysql-persistent-storage
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: {{ .Values.storage.size }}
---
---
apiVersion: v2
name: autoscaling-web-app
version: 0.1.0
# Chart Values
values:
replicaCount: 2
image:
repository: web-app
tag: latest
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
hpa:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 80
# Deployment Template
templates:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app-deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web-app
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
resources:
requests:
cpu: {{ .Values.resources.requests.cpu }}
memory: {{ .Values.resources.requests.memory }}
limits:
cpu: {{ .Values.resources.limits.cpu }}
memory: {{ .Values.resources.limits.memory }}
# HPA Template
- apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: web-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-app-deployment
minReplicas: {{ .Values.hpa.minReplicas }}
maxReplicas: {{ .Values.hpa.maxReplicas }}
targetCPUUtilizationPercentage: {{
.Values.hpa.targetCPUUtilizationPercentage }}
---
---
apiVersion: v2
name: nginx-ingress
version: 0.1.0
# Chart Values
values:
controller:
replicaCount: 2
image:
repository: k8s.gcr.io/ingress-nginx/controller
tag: v1.6.4
service:
type: LoadBalancer
externalPort: 80
# Deployment Template
templates:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-ingress-controller
spec:
replicas: {{ .Values.controller.replicaCount }}
selector:
matchLabels:
app: nginx-ingress
template:
metadata:
labels:
app: nginx-ingress
spec:
containers:
- name: nginx-ingress-controller
image: {{ .Values.controller.image.repository }}:{{
.Values.controller.image.tag }}
args:
- /nginx-ingress-controller
# Service Template
- apiVersion: v1
kind: Service
metadata:
name: nginx-ingress-service
spec:
type: {{ .Values.controller.service.type }}
selector:
app: nginx-ingress
ports:
- protocol: TCP
port: {{ .Values.controller.service.externalPort }}
targetPort: 80
---
# Chart Values
values:
image:
repository: redis
tag: 6.2
replicas: 3
storage:
size: 5Gi
# StatefulSet Template
templates:
- apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-cluster
spec:
serviceName: redis-headless
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
ports:
- containerPort: 6379
volumeMounts:
- name: redis-data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: redis-data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: {{ .Values.storage.size }}
---
---
apiVersion: v2
name: secure-app
version: 0.1.0
# Chart Values
values:
image:
repository: secure-app
tag: latest
service:
type: ClusterIP
port: 8080
# Secret Template
templates:
- apiVersion: v1
kind: Secret
metadata:
name: secure-app-secret
type: Opaque
data:
username: {{ .Values.secret.username | b64enc }}
password: {{ .Values.secret.password | b64enc }}
# Deployment Template
templates:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: secure-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: secure-app
template:
metadata:
labels:
app: secure-app
spec:
containers:
- name: secure-app
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
env:
- name: APP_USERNAME
valueFrom:
secretKeyRef:
name: secure-app-secret
key: username
- name: APP_PASSWORD
valueFrom:
secretKeyRef:
name: secure-app-secret
key: password
ports:
- containerPort: {{ .Values.service.port }}