Skip to content

Instantly share code, notes, and snippets.

@cstrahan
Created February 4, 2024 01:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cstrahan/528b00cd5c3a22e3d8f057bb1a75ea61 to your computer and use it in GitHub Desktop.
Save cstrahan/528b00cd5c3a22e3d8f057bb1a75ea61 to your computer and use it in GitHub Desktop.
apiVersion: v1
kind: Pod
metadata:
name: {{ include "chart.name" . }}-pod
labels:
app: {{ include "chart.app" . | indent 2 }}
environment: {{ .Values.environment | indent 2 }}
tier: frontend
team: {{ .Values.team | indent 2 }}
spec:
containers:
- name: main-container
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
resources:
requests:
memory: {{ .Values.resources.requests.memory | indent 6 }}
cpu: {{ .Values.resources.requests.cpu | indent 6 }}
limits:
memory: {{ .Values.resources.limits.memory | indent 6 }}
cpu: {{ .Values.resources.limits.cpu | indent 6 }}
ports:
- containerPort: {{ .Values.containerPort }}
volumeMounts:
- name: data-volume
mountPath: {{ .Values.volumeMountPath | indent 6 }}
volumes:
- name: data-volume
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: {{ include "chart.name" . }}-service
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: {{ .Values.containerPort }}
spec:
selector:
app: {{ include "chart.app" . }}
ports:
- protocol: TCP
port: 80
targetPort: {{ .Values.containerPort }}
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "chart.name" . }}-deployment
annotations:
deployment.kubernetes.io/revision: "1"
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ include "chart.app" . }}
template:
metadata:
labels:
app: {{ include "chart.app" . }}
spec:
containers:
- name: main-container
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
resources:
requests:
memory: {{ .Values.resources.requests.memory | indent 8 }}
cpu: {{ .Values.resources.requests.cpu | indent 8 }}
limits:
memory: {{ .Values.resources.limits.memory | indent 8 }}
cpu: {{ .Values.resources.limits.cpu | indent 8 }}
ports:
- containerPort: {{ .Values.containerPort }}
volumeMounts:
- name: data-volume
mountPath: {{ .Values.volumeMountPath | indent 8 }}
volumes:
- name: data-volume
emptyDir: {}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "chart.name" . }}-configmap
data:
complex-config.yaml: |-
apiVersion: v1
kind: ConfigMap
metadata:
name: sub-configmap
data:
sub-config.yaml: |-
apiVersion: v1
kind: ConfigMap
metadata:
name: sub-sub-configmap
data:
sub-sub-config.yaml: |-
apiVersion: v1
kind: ConfigMap
metadata:
name: sub-sub-sub-configmap
data:
sub-sub-sub-config.yaml: |-
{{ .Values.complexConfig | indent 14 }}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "chart.name" . }}-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- pathType: Prefix
path: "/{{ .Values.ingress.path }}"
backend:
service:
name: {{ include "chart.name" . }}-service
port:
number: 80
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ include "chart.name" . }}-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["extensions"]
resources: ["deployments"]
verbs: ["get", "list", "watch", "create", "update", "delete"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ include "chart.name" . }}-role-binding
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: Role
name: {{ include "chart.name" . }}-role
apiGroup: rbac.authorization.k8s.io
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment