Skip to content

Commit 489bef2

Browse files
committed
Add Helm
1 parent b007f13 commit 489bef2

File tree

11 files changed

+151
-1
lines changed

11 files changed

+151
-1
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ jobs:
118118
HELM_RELEASE=${CIRCLE_PROJECT_REPONAME}-dev
119119
HELM_CHART=apitree/${CIRCLE_PROJECT_REPONAME}
120120
K8S_NAMESPACE=${HELM_RELEASE}
121-
HELM_ENV=image.tag=${CIRCLE_TAG:1},image.repositoryUrl=${JFROG_DOCKER_REPO},image.pullSecrets.server=${JFROG_DOCKER_REPO},image.pullSecrets.username=${JFROG_USER},image.pullSecrets.password=${JFROG_PASS},image.pullSecrets.email=${JFROG_EMAIL},domain=${DOMAIN}
121+
HELM_ENV=image.tag=${CIRCLE_TAG:1},image.repositoryUrl=${JFROG_DOCKER_REPO},image.pullSecrets.server=${JFROG_DOCKER_REPO},image.pullSecrets.username=${JFROG_USER},image.pullSecrets.password=${JFROG_PASS},image.pullSecrets.email=${JFROG_EMAIL},domain=${DOMAIN_CMS_DEV}
122122
helm upgrade --install --wait ${HELM_RELEASE} ${HELM_CHART} --devel --namespace ${K8S_NAMESPACE} --set ${HELM_ENV}
123123
124124
workflows:

.helm/alda-cms/.helmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.DS_Store
2+
.git/

.helm/alda-cms/Chart.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
appVersion: "1.0"
3+
description: ALDA CMS
4+
name: alda-cms
5+
version: {HELM_VERSION}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{{/* vim: set filetype=mustache: */}}
2+
{{/*
3+
Expand the name of the chart.
4+
*/}}
5+
{{- define "alda.name" -}}
6+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
7+
{{- end -}}
8+
9+
{{/*
10+
Create a default fully qualified app name.
11+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
12+
*/}}
13+
{{- define "alda.fullname" -}}
14+
{{- $name := default .Chart.Name .Values.nameOverride -}}
15+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
16+
{{- end -}}
17+
18+
{{- define "imagePullSecret" }}
19+
{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.image.pullSecrets.server (printf "%s:%s" .Values.image.pullSecrets.username .Values.image.pullSecrets.password | b64enc) | b64enc }}
20+
{{- end }}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: certmanager.k8s.io/v1alpha1
2+
kind: Certificate
3+
metadata:
4+
name: {{ template "alda.fullname" . }}-certificate
5+
spec:
6+
secretName: {{ template "alda.fullname" . }}-tls
7+
issuerRef:
8+
name: letsencrypt-prod
9+
commonName: {{ required "Value domain is not set!" .Values.domain }}
10+
dnsNames:
11+
- {{ required "Value domain is not set!" .Values.domain }}
12+
acme:
13+
config:
14+
- http01:
15+
ingressClass: nginx
16+
domains:
17+
- {{ required "Value domain is not set!" .Values.domain }}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
apiVersion: apps/v1beta1
2+
kind: Deployment
3+
metadata:
4+
name: {{ template "alda.fullname" . }}-deployment
5+
labels:
6+
heritage: {{ .Release.Service }}
7+
release: {{ .Release.Name }}
8+
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
9+
app: {{ template "alda.name" . }}
10+
spec:
11+
replicas: {{ .Values.replicaCount }}
12+
template:
13+
metadata:
14+
labels:
15+
app: {{ template "alda.name" . }}
16+
release: {{ .Release.Name }}
17+
spec:
18+
containers:
19+
- name: {{ .Chart.Name }}
20+
image: {{ required "Value image.repositoryUrl is not set!" .Values.image.repositoryUrl }}/{{ .Chart.Name }}:{{ required "Value image.tag is not set!" .Values.image.tag }}
21+
env:
22+
- name: PORT
23+
value: "8080"
24+
- name: NODE_ENV
25+
value: "production"
26+
- name: K8S_NAMESPACE
27+
valueFrom:
28+
fieldRef:
29+
fieldPath: metadata.namespace
30+
ports:
31+
- containerPort: 8080
32+
protocol: TCP
33+
livenessProbe:
34+
httpGet:
35+
path: /healthz
36+
port: 8080
37+
initialDelaySeconds: 5
38+
timeoutSeconds: 1
39+
periodSeconds: 10
40+
imagePullSecrets:
41+
- name: image-secret
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: image-secret
5+
data:
6+
.dockerconfigjson: {{ template "imagePullSecret" . }}
7+
type: kubernetes.io/dockerconfigjson
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: extensions/v1beta1
2+
kind: Ingress
3+
metadata:
4+
name: {{ template "alda.fullname" . }}-ingress
5+
annotations:
6+
kubernetes.io/tls-acme: "true"
7+
kubernetes.io/ingress.class: "nginx"
8+
# ingress.kubernetes.io/rewrite-target: /
9+
spec:
10+
tls:
11+
- hosts:
12+
- {{ required "Value domain is not set!" .Values.domain }}
13+
secretName: {{ template "alda.fullname" . }}-tls
14+
rules:
15+
- host: {{ required "Value domain is not set!" .Values.domain }}
16+
http:
17+
paths:
18+
- backend:
19+
serviceName: {{ template "alda.fullname" . }}-service
20+
servicePort: 8080
21+
path: /
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: certmanager.k8s.io/v1alpha1
2+
kind: Issuer
3+
metadata:
4+
name: letsencrypt-prod
5+
spec:
6+
acme:
7+
# The ACME server URL
8+
server: https://acme-v01.api.letsencrypt.org/directory
9+
# Email address used for ACME registration
10+
email: info@apitree.cz
11+
# Name of a secret used to store the ACME account private key
12+
privateKeySecretRef:
13+
name: letsencrypt-prod
14+
# Enable the HTTP-01 challenge provider
15+
http01: {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ template "alda.fullname" . }}-service
5+
spec:
6+
ports:
7+
- port: 8080
8+
selector:
9+
app: {{ template "alda.name" . }}
10+
type: NodePort

0 commit comments

Comments
 (0)