-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
0bb2be5
commit dd207ec
Showing
18 changed files
with
981 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
apiVersion: v2 | ||
name: styles-api | ||
type: application | ||
description: A Helm chart for Kubernetes to deploy API Styles service | ||
|
||
version: 1.26.0 | ||
appVersion: 1.0.0 | ||
|
||
maintainers: | ||
- name: 2gis | ||
url: https://github.com/2gis | ||
email: [email protected] |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Twins API service is released as "{{ .Release.Name }}" at "{{ .Release.Namespace }}" namespace. | ||
|
||
{{ if .Values.api.ingress.enabled }} | ||
You can check service using curl | ||
{{- range $host := .Values.api.ingress.hosts }} | ||
http{{ if $.Values.api.ingress.tls }}s{{ end }}://{{ $host.host }}/healthcheck | ||
{{- end }} | ||
{{- else }} | ||
You can publish api service in your preferred way (ingress, balancer, etc). | ||
{{ end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
{{- define "styles.name" -}} | ||
{{- .Release.Name | trunc 32 | trimSuffix "-" }} | ||
{{- end }} | ||
|
||
{{- define "styles.api.name" -}} | ||
{{ include "styles.name" . }} | ||
{{- end }} | ||
|
||
{{- define "styles.worker.name" -}} | ||
{{ include "styles.name" . }}-worker | ||
{{- end }} | ||
|
||
{{- define "styles.migrate.name" -}} | ||
{{ include "styles.name" . }}-migrate | ||
{{- end }} | ||
|
||
{{- define "styles.secret.deploys.name" -}} | ||
{{ include "styles.name" . }}-secret-deploys | ||
{{- end }} | ||
|
||
{{- define "styles.secret.jobs.name" -}} | ||
{{ include "styles.name" . }}-secret-jobs | ||
{{- end }} | ||
|
||
{{- define "styles.selectorLabels" -}} | ||
app.kubernetes.io/name: {{ .Chart.Name }} | ||
app.kubernetes.io/instance: {{ .Release.Name }} | ||
{{- end }} | ||
|
||
{{- define "styles.labels" -}} | ||
{{ include "styles.selectorLabels" . }} | ||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||
{{- end }} | ||
|
||
{{- define "styles.api.selectorLabels" -}} | ||
app.kubernetes.io/name: {{ .Chart.Name }} | ||
app.kubernetes.io/instance: {{ .Release.Name }} | ||
{{- end }} | ||
|
||
{{- define "styles.api.labels" -}} | ||
{{ include "styles.api.selectorLabels" . }} | ||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||
{{- end }} | ||
|
||
{{- define "styles.worker.labels" -}} | ||
app.kubernetes.io/name: {{ .Chart.Name }}-worker | ||
app.kubernetes.io/instance: {{ .Release.Name }} | ||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||
{{- end }} | ||
|
||
{{- define "styles.migrate.labels" -}} | ||
app.kubernetes.io/name: {{ .Chart.Name }}-migrate | ||
app.kubernetes.io/instance: {{ .Release.Name }} | ||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||
{{- end }} | ||
|
||
{{- define "styles.env.loglevel" -}} | ||
- name: MGS_LOG_LEVEL | ||
value: "{{ .Values.log.level }}" | ||
{{- end }} | ||
|
||
{{- define "styles.env.db" -}} | ||
- name: MGS_DB_HOST | ||
value: "{{ required "A valid .Values.postgres.host required" .Values.postgres.host }}" | ||
- name: MGS_DB_PORT | ||
value: "{{ .Values.postgres.port }}" | ||
- name: MGS_DB_NAME | ||
value: "{{ required "A valid .Values.postgres.name required" .Values.postgres.name }}" | ||
- name: MGS_DB_SCHEMA | ||
value: "{{ .Values.postgres.schema }}" | ||
- name: MGS_DB_CONNECTION_TIMEOUT | ||
value: "{{ .Values.postgres.timeout }}" | ||
- name: MGS_DB_CONNECTION_RETRY | ||
value: "{{ .Values.postgres.retry }}" | ||
- name: MGS_DB_USERNAME | ||
value: "{{ required "A valid .Values.postgres.ro.username required" .Values.postgres.username }}" | ||
{{- end}} | ||
|
||
{{- define "styles.env.db.deploys" -}} | ||
{{ include "styles.env.db" . }} | ||
- name: MGS_DB_PASSWORD | ||
valueFrom: | ||
secretKeyRef: | ||
name: {{ include "styles.secret.deploys.name" . }} | ||
key: dbPassword | ||
{{- end }} | ||
|
||
{{- define "styles.env.s3" -}} | ||
- name: MGS_S3_ENDPOINT | ||
value: "{{ required "A valid .Values.s3.endpoint required" .Values.s3.endpoint }}" | ||
- name: MGS_S3_BUCKET | ||
value: "{{ .Values.s3.bucket }}" | ||
- name: MGS_S3_PUBLIC_DOMAIN | ||
value: "{{ .Values.s3.publicDomain }}" | ||
- name: MGS_S3_CONNECT_TIMEOUT | ||
value: "{{ .Values.s3.connectTimeout }}" | ||
- name: MGS_S3_REQUEST_TIMEOUT | ||
value: "{{ .Values.s3.requestTimeout }}" | ||
- name: MGS_S3_RESPONSE_TIMEOUT | ||
value: "{{ .Values.s3.responseTimeout }}" | ||
{{- end}} | ||
|
||
{{- define "styles.env.s3.deploys" -}} | ||
{{ include "styles.env.s3" . }} | ||
- name: MGS_S3_ACCESS_KEY | ||
valueFrom: | ||
secretKeyRef: | ||
name: {{ include "styles.secret.deploys.name" . }} | ||
key: s3AccessKey | ||
- name: MGS_S3_SECRET_KEY | ||
valueFrom: | ||
secretKeyRef: | ||
name: {{ include "styles.secret.deploys.name" . }} | ||
key: s3SecretKey | ||
{{- end }} | ||
|
||
{{- define "styles.env.api" -}} | ||
{{ include "styles.env.loglevel" . }} | ||
{{ include "styles.env.db.deploys" . }} | ||
{{ include "styles.env.s3.deploys" . }} | ||
{{- end }} | ||
|
||
{{- define "styles.env.worker" -}} | ||
{{ include "styles.env.loglevel" . }} | ||
{{ include "styles.env.db.deploys" . }} | ||
{{ include "styles.env.s3.deploys" . }} | ||
{{- end }} | ||
|
||
{{- define "styles.env.migrate" -}} | ||
{{ include "styles.env.loglevel" . }} | ||
{{ include "styles.env.db.deploys" . }} | ||
{{- end }} | ||
|
||
{{/* | ||
Return the target Kubernetes version | ||
*/}} | ||
{{- define "capabilities.kubeVersion" -}} | ||
{{- if .Values.global }} | ||
{{- if .Values.global.kubeVersion }} | ||
{{- .Values.global.kubeVersion -}} | ||
{{- else }} | ||
{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} | ||
{{- end -}} | ||
{{- else }} | ||
{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for Horizontal Pod Autoscaler. | ||
*/}} | ||
{{- define "capabilities.hpa.apiVersion" -}} | ||
{{- if semverCompare "<1.23-0" (include "capabilities.kubeVersion" .) -}} | ||
{{- if .beta2 -}} | ||
{{- print "autoscaling/v2beta2" -}} | ||
{{- else -}} | ||
{{- print "autoscaling/v2beta1" -}} | ||
{{- end -}} | ||
{{- else -}} | ||
{{- print "autoscaling/v2" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{- define "styles.env.custom.ca.path" -}} | ||
- name: SSL_CERT_DIR | ||
value: {{ include "styles.custom.ca.mountPath" . }} | ||
{{- end }} | ||
|
||
{{- define "styles.custom.ca.mountPath" -}} | ||
{{ .Values.customCAs.certsPath | default "/usr/local/share/ca-certificates" }} | ||
{{- end -}} | ||
|
||
{{- define "styles.custom.ca.volumeMounts" -}} | ||
- name: custom-ca | ||
mountPath: {{ include "styles.custom.ca.mountPath" . }}/custom-ca.crt | ||
subPath: custom-ca.crt | ||
readOnly: true | ||
{{- end -}} | ||
|
||
{{- define "styles.custom.ca.jobs.volumes" -}} | ||
- name: custom-ca | ||
configMap: | ||
name: {{ include "styles.configmap.jobs.name" . }} | ||
{{- end -}} | ||
|
||
{{- define "styles.custom.ca.deploys.volumes" -}} | ||
- name: custom-ca | ||
configMap: | ||
name: {{ include "styles.configmap.deploys.name" . }} | ||
{{- end -}} | ||
|
||
{{- define "styles.configmap.jobs.name" -}} | ||
{{ include "styles.name" . }}-configmap-jobs | ||
{{- end -}} | ||
|
||
{{- define "styles.configmap.deploys.name" -}} | ||
{{ include "styles.name" . }}-configmap-deploys | ||
{{- end -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
name: {{ include "styles.api.name" . }} | ||
{{- if or .Values.api.annotations .Values.customCAs.bundle }} | ||
annotations: | ||
{{- if .Values.customCAs.bundle }} | ||
checksum/config: {{ include (print .Template.BasePath "/configmap-deploys.yaml") . | sha256sum }} | ||
{{- end }} | ||
{{- with .Values.api.annotations }} | ||
{{- toYaml . | nindent 4 }} | ||
{{- end }} | ||
{{- end }} | ||
labels: | ||
{{- include "styles.api.labels" . | nindent 4 }} | ||
{{- with .Values.api.labels }} | ||
{{- toYaml . | nindent 4 }} | ||
{{- end }} | ||
spec: | ||
{{- if not .Values.api.hpa.enabled }} | ||
replicas: {{ .Values.api.replicas }} | ||
{{- end }} | ||
revisionHistoryLimit: {{ .Values.api.revisionHistoryLimit }} | ||
strategy: | ||
{{- toYaml .Values.api.strategy | nindent 4 }} | ||
selector: | ||
matchLabels: | ||
{{- include "styles.api.selectorLabels" . | nindent 6 }} | ||
template: | ||
metadata: | ||
annotations: | ||
checksum/config: {{ (include (print $.Template.BasePath "/secret-deploys.yaml") . | fromYaml).data | toYaml | sha256sum }} | ||
{{- with .Values.api.podAnnotations }} | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
labels: | ||
{{- include "styles.api.labels" . | nindent 8 }} | ||
{{- with .Values.api.podLabels }} | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
spec: | ||
containers: | ||
- name: api | ||
image: {{ required "A valid .Values.dgctlDockerRegistry entry required" .Values.dgctlDockerRegistry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }} | ||
imagePullPolicy: {{ .Values.imagePullPolicy }} | ||
command: [ "mgs", "server" ] | ||
ports: | ||
- name: http | ||
containerPort: 8080 | ||
readinessProbe: | ||
httpGet: | ||
path: /healthcheck | ||
port: http | ||
resources: | ||
{{- toYaml .Values.api.resources | nindent 12 }} | ||
env: | ||
{{- include "styles.env.api" . | nindent 12 }} | ||
{{- if .Values.customCAs.bundle }} | ||
volumeMounts: | ||
{{- include "styles.custom.ca.volumeMounts" . | nindent 12 }} | ||
{{- end }} | ||
{{- if .Values.customCAs.bundle }} | ||
volumes: | ||
{{- include "styles.custom.ca.deploys.volumes" . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.api.nodeSelector }} | ||
nodeSelector: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.api.affinity }} | ||
affinity: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.api.tolerations }} | ||
tolerations: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
{{- with .Values.api.hpa }} | ||
{{- if .enabled }} | ||
apiVersion: {{ include "capabilities.hpa.apiVersion" $ }} | ||
kind: HorizontalPodAutoscaler | ||
metadata: | ||
name: {{ include "styles.api.name" $ }} | ||
labels: | ||
{{- include "styles.api.labels" $ | nindent 4 }} | ||
spec: | ||
scaleTargetRef: | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
name: {{ include "styles.api.name" $ }} | ||
minReplicas: {{ .minReplicas }} | ||
maxReplicas: {{ .maxReplicas }} | ||
behavior: | ||
scaleUp: | ||
stabilizationWindowSeconds: {{ .scaleUpStabilizationWindowSeconds }} | ||
scaleDown: | ||
stabilizationWindowSeconds: {{ .scaleDownStabilizationWindowSeconds }} | ||
metrics: | ||
{{- with .targetCPUUtilizationPercentage }} | ||
- type: Resource | ||
resource: | ||
name: cpu | ||
target: | ||
type: Utilization | ||
averageUtilization: {{ . }} | ||
{{- end }} | ||
{{- with .targetMemoryUtilizationPercentage }} | ||
- type: Resource | ||
resource: | ||
name: memory | ||
target: | ||
type: Utilization | ||
averageUtilization: {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
{{- if .Values.api.ingress.enabled -}} | ||
apiVersion: networking.k8s.io/v1 | ||
kind: Ingress | ||
metadata: | ||
name: {{ include "styles.api.name" . }} | ||
labels: | ||
{{- include "styles.api.labels" . | nindent 4 }} | ||
{{- with .Values.api.ingress.annotations }} | ||
annotations: | ||
{{- toYaml . | nindent 4 }} | ||
{{- end }} | ||
spec: | ||
ingressClassName: {{ .Values.api.ingress.className }} | ||
{{- if .Values.api.ingress.tls }} | ||
tls: | ||
{{- range .Values.api.ingress.tls }} | ||
- hosts: | ||
{{- range .hosts }} | ||
- {{ . | quote }} | ||
{{- end }} | ||
secretName: {{ .secretName }} | ||
{{- end }} | ||
{{- end }} | ||
rules: | ||
{{- range .Values.api.ingress.hosts }} | ||
- host: {{ .host | quote }} | ||
http: | ||
paths: | ||
{{- range .paths }} | ||
- path: {{ .path }} | ||
pathType: Prefix | ||
backend: | ||
service: | ||
name: {{ include "styles.api.name" $ }} | ||
port: | ||
number: {{ $.Values.api.service.port }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} |
Oops, something went wrong.