Skip to content

Instantly share code, notes, and snippets.

@awhiteside1
Created July 2, 2023 20:30
Show Gist options
  • Save awhiteside1/7b630eec9380492ac9539e14b9fd93ce to your computer and use it in GitHub Desktop.
Save awhiteside1/7b630eec9380492ac9539e14b9fd93ce to your computer and use it in GitHub Desktop.
{{/*
Expand the name of the chart.
*/}}
{{- define "cnf-banking.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "cnf-banking.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "cnf-banking.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "cnf-banking.labels" -}}
helm.sh/chart: {{ include "cnf-banking.chart" . }}
{{ include "cnf-banking.selectorLabels" . }}
tags.datadoghq.com/env: {{.Values.environment.name}}
tags.datadoghq.com/service: {{.Chart.Name}}
tags.datadoghq.com/version: {{ .Values.deployment.image.tag }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "cnf-banking.selectorLabels" -}}
app.kubernetes.io/name: {{ include "cnf-banking.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "cnf-banking.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "cnf-banking.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{- define "cnf-banking-config-host" -}}
{{- $commonDomain := splitList "." .Values.host | rest }}
https://{{- prepend $commonDomain "config" | join "." }}
{{- end}}
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: banking-cnf
namespace: traefik
status:
spec:
commonName: {{.Values.host}}
dnsNames:
- {{.Values.host}}
issuerRef:
kind: ClusterIssuer
name: letsencrypt
secretName: {{.Values.secret}}
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{.Values.deployment.namespace}}
name: {{ include "cnf-banking.fullname" . }}
labels:
{{- include "cnf-banking.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "cnf-banking.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "cnf-banking.selectorLabels" . | nindent 8 }}
admission.datadoghq.com/enabled: "true"
admission.datadoghq.com/config.mode: "socket"
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "cnf-banking.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.deployment.image.pullPolicy }}
envFrom:
- secretRef:
name: banking-secrets
env:
{{- with .Values.deployment.env }}
{{- toYaml . | nindent 12 }}
{{- end }}
- name: ENVIRONMENT
value: {{ .Values.environment.name }}
- name: DD_AGENT_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: DD_PROFILING_ENABLED
value: "true"
- name: DD_LOGS_INJECTION
value: "true"
- name: CONFIG_MANAGER_BASE
value: {{- include "cnf-banking-config-host" . | trim | quote | indent 2}}
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
livenessProbe:
httpGet:
path: /api/health
port: http
readinessProbe:
httpGet:
path: /api/health
port: http
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "cnf-banking.fullname" . }}
labels:
{{- include "cnf-banking.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "cnf-banking.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
{{- end }}
{{- end }}
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: banking
namespace: traefik
spec:
entryPoints:
- web
- websecure
routes:
- kind: Rule
match: PathPrefix(`/partner/insidercd`, `/partner/cnbccd`,`/partner/forbes-cd`,`/partner/usnews-cd`)
{{- if contains .Values.environment.name "production" }}
services:
- kind: Service
name: {{ include "cnf-banking.fullname" . }}
namespace: {{.Values.deployment.namespace}}
passHostHeader: true
port: 3000
responseForwarding:
flushInterval: 1ms
scheme: http
{{- else}}
priority: 10000
services:
- kind: TraefikService
name: productionClusterBanking@file
{{- end}}
- kind: Rule
match: PathPrefix(`/api/apps/static/cnf-banking`)
{{- if contains .Values.environment.name "production" }}
middlewares:
- name: cnf-banking-rewrite-static-middleware
priority: 300
services:
- kind: Service
name: {{ include "cnf-banking.fullname" . }}
namespace: {{.Values.deployment.namespace}}
passHostHeader: true
port: 3000
responseForwarding:
flushInterval: 1ms
scheme: http
{{- else}}
priority: 10000
services:
- kind: TraefikService
name: productionClusterBanking@file
{{- end}}
tls:
domains:
- main: {{.Values.host}}
secretName: {{.Values.secret}}
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
namespace: traefik
name: cnf-banking-rewrite-static-middleware
spec:
stripPrefix:
prefixes:
- "/api/apps/static/cnf-banking/"
{{- if contains .Values.environment.name "development" }}
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: banking-partners-dedicated
namespace: traefik
spec:
entryPoints:
- web
- websecure
routes:
- kind: Rule
match: Host(`{{.Values.host}}`)
priority: 1000
services:
- kind: Service
name: {{ include "cnf-banking.fullname" . }}
namespace: {{.Values.deployment.namespace}}
passHostHeader: true
port: 3000
responseForwarding:
flushInterval: 1ms
scheme: http
- kind: Rule
match: Host(`{{.Values.host}}`) && PathPrefix(`/api/apps/static/cnf-banking`)
middlewares:
- name: cnf-banking-rewrite-static-middleware
priority: 1000
services:
- kind: Service
name: {{ include "cnf-banking.fullname" . }}
namespace: {{.Values.deployment.namespace}}
passHostHeader: true
port: 3000
responseForwarding:
flushInterval: 1ms
scheme: http
tls:
domains:
- main: {{.Values.host}}
secretName: {{.Values.secret}}
{{- end}}
apiVersion: v1
kind: Service
metadata:
namespace: {{.Values.deployment.namespace}}
name: {{ include "cnf-banking.fullname" . }}
labels:
{{- include "cnf-banking.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "cnf-banking.selectorLabels" . | nindent 4 }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment