Skip to content

Commit 0f1f8fc

Browse files
authored
SLABI-722: new chart for Dependency-DB Frontend (#18)
* Basic chart * fixed probes on api
1 parent 15f146d commit 0f1f8fc

10 files changed

Lines changed: 456 additions & 0 deletions

File tree

charts/dependency-db/Chart.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v2
2+
name: dependency-db
3+
description: Dependency-DB with frontend, API-Backend
4+
type: application
5+
version: 0.1.0
6+
appVersion: "0.1.0"
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "dependency-db.name" -}}
5+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
6+
{{- end }}
7+
8+
{{/*
9+
Create a default fully qualified app name.
10+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
11+
If release name contains chart name it will be used as a full name.
12+
*/}}
13+
{{- define "dependency-db.fullname" -}}
14+
{{- if .Values.fullnameOverride }}
15+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
16+
{{- else }}
17+
{{- $name := default .Chart.Name .Values.nameOverride }}
18+
{{- if contains $name .Release.Name }}
19+
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
20+
{{- else }}
21+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
22+
{{- end }}
23+
{{- end }}
24+
{{- end }}
25+
26+
{{- define "dependency-db.fullname.frontend" -}}
27+
{{- $fullname := include "dependency-db.fullname" . }}
28+
{{- printf "%s-%s" $fullname "frontend" | trunc 63 | trimSuffix "-" }}
29+
{{- end }}
30+
31+
{{- define "dependency-db.fullname.api" -}}
32+
{{- $fullname := include "dependency-db.fullname" . }}
33+
{{- printf "%s-%s" $fullname "api" | trunc 63 | trimSuffix "-" }}
34+
{{- end }}
35+
36+
{{/*
37+
Create chart name and version as used by the chart label.
38+
*/}}
39+
{{- define "dependency-db.chart" -}}
40+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
41+
{{- end }}
42+
43+
{{/*
44+
Common labels API
45+
*/}}
46+
{{- define "dependency-db-api.labels" -}}
47+
helm.sh/chart: {{ include "dependency-db.chart" . }}
48+
{{ include "dependency-db-api.selectorLabels" . }}
49+
{{- if .Chart.AppVersion }}
50+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
51+
{{- end }}
52+
app.kubernetes.io/managed-by: {{ .Release.Service }}
53+
{{- end }}
54+
55+
{{/*
56+
Common labels Frontend
57+
*/}}
58+
{{- define "dependency-db-frontend.labels" -}}
59+
helm.sh/chart: {{ include "dependency-db.chart" . }}
60+
{{ include "dependency-db-frontend.selectorLabels" . }}
61+
{{- if .Chart.AppVersion }}
62+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
63+
{{- end }}
64+
app.kubernetes.io/managed-by: {{ .Release.Service }}
65+
{{- end }}
66+
67+
{{/*
68+
Selector labels API
69+
*/}}
70+
{{- define "dependency-db-api.selectorLabels" -}}
71+
app.kubernetes.io/name: "{{ include "dependency-db.name" . }}-api"
72+
app.kubernetes.io/instance: {{ .Release.Name }}
73+
{{- end }}
74+
75+
{{/*
76+
Selector labels Frontend
77+
*/}}
78+
{{- define "dependency-db-frontend.selectorLabels" -}}
79+
app.kubernetes.io/name: "{{ include "dependency-db.name" . }}-frontend"
80+
app.kubernetes.io/instance: {{ .Release.Name }}
81+
{{- end }}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "dependency-db.fullname.api" . }}
5+
labels:
6+
{{- include "dependency-db-api.labels" . | nindent 4 }}
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
{{- include "dependency-db-api.selectorLabels" . | nindent 6 }}
12+
template:
13+
metadata:
14+
annotations:
15+
"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"
16+
checksum/config: {{ include (print $.Template.BasePath "/config.yaml") . | sha256sum }}
17+
{{- with .Values.podAnnotations }}
18+
{{- toYaml . | nindent 8 }}
19+
{{- end }}
20+
labels:
21+
{{- include "dependency-db-api.selectorLabels" . | nindent 8 }}
22+
spec:
23+
{{- with .Values.imagePullSecrets }}
24+
imagePullSecrets:
25+
{{- toYaml . | nindent 8 }}
26+
{{- end }}
27+
restartPolicy: Always
28+
containers:
29+
- name: "{{ .Chart.Name }}-api"
30+
image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag | default .Chart.AppVersion }}"
31+
imagePullPolicy: {{ .Values.api.image.pullPolicy }}
32+
volumeMounts:
33+
- name: config
34+
mountPath: "/application.yml"
35+
subPath: "application.yml"
36+
{{ with .Values.importerconfig.env -}}
37+
env:
38+
{{- toYaml . | nindent 12 }}
39+
{{- end }}
40+
envFrom:
41+
{{- range .Values.importerconfig.envFromSecrets }}
42+
- secretRef:
43+
name: {{ .secretRef }}
44+
{{- end }}
45+
ports:
46+
- name: http
47+
containerPort: 8080
48+
protocol: TCP
49+
livenessProbe:
50+
httpGet:
51+
path: /actuator/health/liveness
52+
port: http
53+
initialDelaySeconds: 5
54+
failureThreshold: 6
55+
periodSeconds: 20
56+
readinessProbe:
57+
httpGet:
58+
path: /actuator/health/readiness
59+
port: http
60+
initialDelaySeconds: 30
61+
periodSeconds: 10
62+
resources:
63+
{{- toYaml .Values.api.container.resources | nindent 12 }}
64+
volumes:
65+
- name: config
66+
configMap:
67+
name: {{ include "dependency-db.fullname" . }}
68+
{{- with .Values.nodeSelector }}
69+
nodeSelector:
70+
{{- toYaml . | nindent 8 }}
71+
{{- end }}
72+
{{- with .Values.affinity }}
73+
affinity:
74+
{{- toYaml . | nindent 8 }}
75+
{{- end }}
76+
{{- with .Values.tolerations }}
77+
tolerations:
78+
{{- toYaml . | nindent 8 }}
79+
{{- end }}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ include "dependency-db.fullname.api" . }}
5+
labels:
6+
{{- include "dependency-db-api.labels" . | nindent 4 }}
7+
spec:
8+
type: {{ .Values.service.type }}
9+
ports:
10+
- port: {{ .Values.service.port }}
11+
targetPort: http
12+
protocol: TCP
13+
name: http
14+
selector:
15+
{{- include "dependency-db-api.selectorLabels" . | nindent 4 }}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: {{ include "dependency-db.fullname" . }}
5+
labels:
6+
{{- include "dependency-db-api.labels" . | nindent 4 }}
7+
data:
8+
application.yml: |- {{ toYaml (required "A valid application.yaml config is required (nested in the value .Values.api.config)!" .Values.api.config ) | nindent 4 }}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "dependency-db.fullname.frontend" . }}
5+
labels:
6+
{{- include "dependency-db-frontend.labels" . | nindent 4 }}
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
{{- include "dependency-db-frontend.selectorLabels" . | nindent 6 }}
12+
template:
13+
metadata:
14+
annotations:
15+
"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"
16+
{{- with .Values.podAnnotations }}
17+
{{- toYaml . | nindent 8 }}
18+
{{- end }}
19+
labels:
20+
{{- include "dependency-db-frontend.selectorLabels" . | nindent 8 }}
21+
spec:
22+
{{- with .Values.imagePullSecrets }}
23+
imagePullSecrets:
24+
{{- toYaml . | nindent 8 }}
25+
{{- end }}
26+
restartPolicy: Always
27+
containers:
28+
- name: "{{ .Chart.Name }}-frontend"
29+
image: "{{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag | default .Chart.AppVersion }}"
30+
imagePullPolicy: {{ .Values.frontend.image.pullPolicy }}
31+
env:
32+
- name: DEPDB_API_ADDRESS
33+
value: "http://{{ include "dependency-db.fullname.api" . }}"
34+
- name: DEPDB_JIRA_ADDRESS
35+
value: {{ .Values.jira.address }}"
36+
- name: DEPDB_EXTERNAL_HOSTNAME
37+
value: {{ join " " .Values.ingress.hosts | quote }}
38+
ports:
39+
- name: http
40+
containerPort: 80
41+
protocol: TCP
42+
livenessProbe:
43+
httpGet:
44+
path: /
45+
port: http
46+
readinessProbe:
47+
httpGet:
48+
path: /
49+
port: http
50+
resources:
51+
{{- toYaml .Values.frontend.container.resources | nindent 12 }}
52+
volumes:
53+
- name: config
54+
configMap:
55+
name: {{ include "dependency-db.fullname" . }}
56+
{{- with .Values.nodeSelector }}
57+
nodeSelector:
58+
{{- toYaml . | nindent 8 }}
59+
{{- end }}
60+
{{- with .Values.affinity }}
61+
affinity:
62+
{{- toYaml . | nindent 8 }}
63+
{{- end }}
64+
{{- with .Values.tolerations }}
65+
tolerations:
66+
{{- toYaml . | nindent 8 }}
67+
{{- end }}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ include "dependency-db.fullname.frontend" . }}
5+
labels:
6+
{{- include "dependency-db-frontend.labels" . | nindent 4 }}
7+
spec:
8+
type: {{ .Values.service.type }}
9+
ports:
10+
- port: {{ .Values.service.port }}
11+
targetPort: http
12+
protocol: TCP
13+
name: http
14+
selector:
15+
{{- include "dependency-db-frontend.selectorLabels" . | nindent 4 }}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{{- if .Values.ingress.enabled -}}
2+
{{- $fullName := include "dependency-db.fullname.frontend" . -}}
3+
{{- $svcPort := .Values.service.port -}}
4+
apiVersion: networking.k8s.io/v1
5+
kind: Ingress
6+
metadata:
7+
name: {{ $fullName }}
8+
labels:
9+
{{- include "dependency-db-frontend.labels" . | nindent 4 }}
10+
{{- with .Values.ingress.annotations }}
11+
annotations:
12+
{{- toYaml . | nindent 4 }}
13+
{{- end }}
14+
spec:
15+
{{- if .Values.ingress.ingressClassName }}
16+
ingressClassName: {{ .Values.ingress.ingressClassName }}
17+
{{- end -}}
18+
{{- if .Values.ingress.tls }}
19+
tls:
20+
{{- range .Values.ingress.tls }}
21+
- hosts:
22+
{{- range .hosts }}
23+
- {{ . | quote }}
24+
{{- end }}
25+
secretName: {{ .secretName }}
26+
{{- end }}
27+
{{- end }}
28+
rules:
29+
{{- range .Values.ingress.hosts }}
30+
- host: {{ . | quote }}
31+
http:
32+
paths:
33+
- path: /
34+
pathType: Prefix
35+
backend:
36+
service:
37+
name: {{ $fullName }}
38+
port:
39+
number: {{ $svcPort }}
40+
{{- end }}
41+
{{- end }}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
frontend:
2+
image:
3+
repository: docker.subshell.com/labday/dependency-db-frontend
4+
pullPolicy: Always
5+
tag: "1.0.0"
6+
container:
7+
resources:
8+
requests:
9+
cpu: 999m
10+
memory: 123Mi
11+
limits:
12+
cpu: 888m
13+
memory: 4321Mi
14+
15+
api:
16+
image:
17+
repository: docker.subshell.com/labday/dependency-db-api
18+
pullPolicy: Always
19+
tag: "1.0.0"
20+
container:
21+
resources:
22+
requests:
23+
cpu: 222m
24+
memory: 42Mi
25+
limits:
26+
cpu: 333m
27+
memory: 1337Mi
28+
config:
29+
management:
30+
health:
31+
neo4j:
32+
enabled: false
33+
livenessstate:
34+
enabled: true
35+
readinessstate:
36+
enabled: true
37+
basepoms:
38+
coordinates:
39+
- "com.subshell.sophora:basepom"
40+
- "com.subshell.sophora:kotlin-basepom"
41+
42+
imagePullSecrets: []
43+
nameOverride: "test-name-override"
44+
fullnameOverride: "full-test-name-override"
45+
46+
podAnnotations:
47+
my/test/annotation: "foo"
48+
my/other/annotation: "bar"
49+
50+
service:
51+
type: ClusterIP
52+
port: 80
53+
54+
ingress:
55+
enabled: true
56+
annotations:
57+
kubernetes.io/ingress.class: nginx
58+
# kubernetes.io/tls-acme: "true"
59+
hosts:
60+
- frontend.dependency-db.test
61+
- frontend2.dependency-db.test
62+
tls: []
63+
# - secretName: chart-example-tls
64+
# hosts:
65+
# - chart-example.local
66+
67+
nodeSelector: {}
68+
69+
tolerations: []
70+
71+
affinity: {}

0 commit comments

Comments
 (0)