Skip to content

Commit

Permalink
Merge pull request #229 from jackstockley89/helm-temp
Browse files Browse the repository at this point in the history
feat(helm): Update charts adding new features
  • Loading branch information
jackstockley89 committed Mar 10, 2023
2 parents 02c9b35 + f47775d commit ba1386b
Show file tree
Hide file tree
Showing 10 changed files with 290 additions and 59 deletions.
115 changes: 115 additions & 0 deletions helm/cycling-blog/example/example-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# Declare variables to be passed into your templates.
envAWS: [true/false]
envRDS: [true/false]
canary: [true/false]
namespace: [name of the namespace to be deployed to]

annotations:
hookDeletePolicy: hook-succeeded ## used for jobs to delete after success deployment
setIdentifier: [<ingress name>-<namespace name>-green] ## used for ingress
app_service:
name: [application service name]
ports:
name: [protocol name]
protocol: [TCP/]
port: [port number]

db_service:
name: [database service name]
## secret name and key should only be used for rds instances
secretName: [rds secret output name]
key: [rds endpoint secret value]
## ports section is only needed for none rds db instances
ports:
name: [protocol name]
protocol: [TCP/]
port: [port number]

ingress:
enabled: true
name: [ingress name]
hosts:
- host: [application frontend address]
secretName: [certificate secret name]
path: /
serviceName: [application service name]
servicePort: [application port number]

## only set db_deployment when not using a rds instance
db_deployment:
replicas: [number of pods]
app: [name of database]
template:
containers:
image: [image address]
imagePullPolicy: [Always/]
resources:
requests:
memory: [min pod memory]
cpu: [min pod cpu]
limits:
memory: [max pod memory]
cpu: [max pod cpu]
ports:
- containerPort: [database port number]

app_deployment:
replicas: [number of pods]
app: [name of application]
template:
containers:
image: [image address]
imagePullPolicy: [Always/]
resources:
requests:
memory: [min pod memory]
cpu: [min pod cpu]
limits:
memory: [max pod memory]
cpu: [max pod cpu]
ports:
- containerPort: [application port number]

cycling_blog_db_create:
name: [job name]
app: [application name]
template:
containers:
imagePullPolicy: Always
command: ["psql"]
args: ["-h", "$(CYCLING_BLOG_DB_SERVICE_SERVICE_HOST)", "-U", "$(POSTGRES_USER)", "-d", "$(POSTGRES_DB)", "-w", "-a", "-f", "[file name]"]
restartPolicy: Never

cycling_blog_db_insert:
name: [job name]
app: [application name]
template:
containers:
imagePullPolicy: Always
command: ["psql"]
args: ["-h", "$(CYCLING_BLOG_DB_SERVICE_SERVICE_HOST)", "-U", "$(POSTGRES_USER)", "-d", "$(POSTGRES_DB)", "-w", "-a", "-f", "[file name]"]
restartPolicy: Never

db_env:
- name: POSTGRES_USER
secretName: [database secret output name]
key: [database username value]
- name: PGPASSWORD
secretName: [database secret output name]
key: [database password value]
- name: POSTGRESQL_PASSWORD
secretName: [database secret output name]
key: [database password value]
- name: POSTGRES_DB
secretName: [database secret output name]
key: [database name value]

secret:
data:
auth: [encrypted secret]
connect: [encrypted secret]
hostname: [encrypted secret]
username: [encrypted secret]
password: [encrypted secret]
dbname: [encrypted secret]
port: [encrypted secret]
118 changes: 118 additions & 0 deletions helm/cycling-blog/templates/canary.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{{- $canary := .Values.canary -}}
{{- $envAWS := .Values.envAWS -}}
{{- $path := .Values.canary_ingress.path -}}
{{- $serviceName := .Values.canary_ingress.serviceName -}}
{{- $servicePort := .Values.canary_ingress.servicePort -}}

{{- if eq $canary true -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.canary_deployment.app }}
namespace: {{ .Values.namespace }}
labels:
app: {{ .Values.canary_deployment.app }}
spec:
replicas: {{ .Values.canary_deployment.replicas }}
selector:
matchLabels:
app: {{ .Values.canary_deployment.app }}
template:
metadata:
labels:
app: {{ .Values.canary_deployment.app }}
spec:
containers:
- name: {{ .Values.canary_deployment.app }}
image: {{ .Values.canary_deployment.template.containers.image }}
imagePullPolicy: {{ .Values.canary_deployment.template.containers.imagePullPolicy }}
resources:
requests:
memory: {{ .Values.canary_deployment.template.containers.resources.requests.memory }}
cpu: {{ .Values.canary_deployment.template.containers.resources.requests.cpu }}
limits:
memory: {{ .Values.canary_deployment.template.containers.resources.limits.memory }}
cpu: {{ .Values.canary_deployment.template.containers.resources.limits.cpu }}
ports:
- containerPort: {{ .Values.canary_service.ports.port }}
env:
{{- range .Values.db_env }}
- name: {{ .name }}
valueFrom:
secretKeyRef:
name: {{ .secretName }}
key: {{ .key }}
{{- end }}
---
{{- if eq $envAWS true -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.canary_ingress.name }}
namespace: {{ .Values.namespace }}
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "20"
nginx.ingress.kubernetes.io/canary-by-header: "X-Canary"
spec:
ingressClassName: default
tls:
{{- range .Values.canary_ingress.hosts }}
- hosts:
- {{ .host }}
secretName: {{ .secretName }}
{{- end }}
rules:
{{- range .Values.canary_ingress.hosts }}
- host: {{ .host }}
http:
paths:
- path: {{ $path }}
pathType: ImplementationSpecific
backend:
service:
name: {{ $serviceName }}
port:
number: {{ $servicePort }}
{{- end }}
{{- else if eq $envAWS false -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.canary_ingress.name }}
namespace: {{ .Values.namespace }}
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "20"
nginx.ingress.kubernetes.io/canary-by-header: "X-Canary"
spec:
rules:
- host: {{ .Values.canary_ingress.host }}
- http:
paths:
- path: {{ $path }}
pathType: Prefix
backend:
service:
name: {{ $serviceName }}
port:
number: {{ $servicePort }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.canary_service.name }}
namespace: {{ .Values.namespace }}
labels:
app: {{ .Values.canary_deployment.app }}
spec:
ports:
- name: {{ .Values.canary_service.ports.name }}
protocol: {{ .Values.canary_service.ports.protocol }}
port: {{ .Values.canary_service.ports.port }}
targetPort: {{ .Values.canary_service.ports.port }}
selector:
app: {{ .Values.canary_deployment.app }}
{{- end }}
4 changes: 4 additions & 0 deletions helm/cycling-blog/templates/cycling-db.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{{- $envRDS := .Values.envRDS -}}

{{- if eq $envRDS false -}}
apiVersion: apps/v1
kind: Deployment
metadata:
Expand Down Expand Up @@ -35,3 +38,4 @@ spec:
name: {{ .secretName }}
key: {{ .key }}
{{- end }}
{{- end }}
17 changes: 17 additions & 0 deletions helm/cycling-blog/templates/cycling-service.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{{- $envRDS := .Values.envRDS -}}

kind: Service
apiVersion: v1
metadata:
Expand All @@ -14,6 +16,20 @@ spec:
selector:
app: {{ .Values.app_deployment.app }}
---
{{- if eq $envRDS true -}}
kind: Service
apiVersion: v1
metadata:
name: {{ .Values.db_service.name }}
namespace: {{ .Values.namespace }}
spec:
type: ExternalName
externalName:
valueFrom:
secretKeyRef:
name: {{ .Values.db_service.secretName }}
key: {{ .Values.db_service.key }}
{{- else if eq $envRDS false -}}
kind: Service
apiVersion: v1
metadata:
Expand All @@ -27,3 +43,4 @@ spec:
targetPort: {{ .Values.db_service.ports.port }}
selector:
app: {{ .Values.db_deployment.app }}
{{- end }}
88 changes: 30 additions & 58 deletions helm/cycling-blog/templates/ingress.yaml
Original file line number Diff line number Diff line change
@@ -1,77 +1,49 @@
{{- $envAWS := .Values.envAWS -}}
{{- $envIng := .Values.envIng -}}
{{- $path := .Values.ingress.path -}}
{{- $serviceName := .Values.ingress.serviceName -}}
{{- $servicePort := .Values.ingress.servicePort -}}

{{- if eq $envAWS true -}}
{{- if eq $envIng "v1beta1" -}}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ .Values.ingress.name }}
namespace: {{ .Values.namespace }}
annotations:
kubernetes.io/ingress.class: nginx
external- dns.alpha.kubernetes.io/set-identifier: {{ .Values.annotations.setIndentifier }}
external-dns.alpha.kubernetes.io/aws-weight: {{ .Values.annotations.awsWeight }}
spec:
tls:
{{- range .Values.ingress.hosts }}
- hosts:
- {{ .host }}
secretName: {{ .secretName }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host }}
http:
paths:
- path: {{ $path }}
pathType: ImplementationSpecific
backend:
serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }}
{{- end }}
{{- else if eq $envIng "v1" -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.ingress.name }}
namespace: {{ .Values.namespace }}
annotations:
external- dns.alpha.kubernetes.io/set-identifier: {{ .Values.annotations.setIndentifier }}
external-dns.alpha.kubernetes.io/aws-weight: {{ .Values.annotations.awsWeight }}
spec:
ingressClassName: default
tls:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.ingress.name }}
namespace: {{ .Values.namespace }}
annotations:
external-dns.alpha.kubernetes.io/set-identifier: {{ .Values.annotations.setIdentifier}}
external-dns.alpha.kubernetes.io/aws-weight: "100"
spec:
ingressClassName: default
tls:
{{- range .Values.ingress.hosts }}
- hosts:
- {{ .host }}
secretName: {{ .secretName }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- hosts:
- {{ .host }}
secretName: {{ .secretName }}
- host: {{ .host }}
http:
paths:
- path: {{ $path }}
pathType: ImplementationSpecific
backend:
service:
name: {{ $serviceName }}
port:
number: {{ $servicePort }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host }}
http:
paths:
- path: {{ $path }}
pathType: ImplementationSpecific
backend:
service:
name: {{ $serviceName }}
port:
number: {{ $servicePort }}
{{- end }}
{{- end }}
{{- else if eq $envAWS false -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.ingress.name }}
namespace: {{ .Values.namespace }}
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: {{ .Values.canary_ingress.host }}
- http:
paths:
- path: {{ $path }}
Expand Down
Loading

0 comments on commit ba1386b

Please sign in to comment.