feat(helm): add new Helm charts for content and central-storage services, update authentication values

Signed-off-by: zhenyus <zhenyus@mathmast.com>
This commit is contained in:
zhenyus 2025-02-21 17:59:08 +08:00
parent d8b046dc97
commit b8c70448a3
25 changed files with 872 additions and 6 deletions

View File

@ -1,6 +1,6 @@
apiVersion: v2
name: authentication
description: A Helm Chart of authentication, which part of Freeleaps Platgorm, powered by Freeleaps.
description: A Helm Chart of authentication, which part of Freeleaps Platform, powered by Freeleaps.
type: application
version: 0.0.1
appVersion: "0.0.1"

View File

@ -0,0 +1,19 @@
apiVersion: v1
kind: Secret
metadata:
name: authentication-config
namespace: {{ .Release.Namespace }}
type: Opaque
data:
TZ: {{ .Values.authentication.configs.tz | b64enc | quote }}
APP_NAME: {{ .Values.authentication.configs.appName | b64enc | quote }}
DEVSVC_WEBAPI_URL_BASE: {{ .Values.authentication.configs.devsvcWebapiUrlBase | b64enc | quote }}
NOTIFICATION_WEBAPI_URL_BASE: {{ .Values.authentication.configs.notificationWebapiUrlBase | b64enc | quote }}
JWT_SECRET_KEY: {{ .Values.authentication.configs.jwtSecretKey | b64enc | quote }}
JWT_ALGORITHM: {{ .Values.authentication.configs.jwtAlgorithm | b64enc | quote }}
SERVICE_API_ACCESS_HOST: {{ .Values.authentication.configs.serviceApiAccessHost | b64enc | quote }}
SERVICE_API_ACCESS_PORT: {{ .Values.authentication.configs.serviceApiAccessPort | b64enc | quote }}
MONGODB_NAME: {{ .Values.authentication.configs.mongodbName | b64enc | quote }}
MONGODB_PORT: {{ .Values.authentication.configs.mongodbPort | b64enc | quote }}
MONGODB_URI: {{ .Values.authentication.configs.mongodbUri | b64enc | quote }}

View File

@ -0,0 +1,27 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseCertificate := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $ingress := .Values.authentication.ingresses }}
{{- if not $ingress.tls.exists }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ $ingress.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $ingress.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseCertificate }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
commonName: {{ $ingress.host }}
dnsNames:
- {{ $ingress.host }}
issuerRef:
name: {{ $ingress.tls.issuerRef.name }}
kind: {{ $ingress.tls.issuerRef.kind }}
secretName: {{ $ingress.tls.name }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,98 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "authentication"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
name: "authentication"
namespace: {{ .Release.Namespace | quote }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: "authentication"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
replicas: {{ .Values.authentication.replicas }}
template:
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "authentication"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: "authentication"
image: "{{ coalesce .Values.authentication.image.registry .Values.global.registry "docker.io"}}/{{ coalesce .Values.authentication.image.repository .Values.global.repository }}/{{ .Values.authentication.image.name }}:{{ .Values.authentication.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.authentication.image.imagePullPolicy | default "IfNotPresent" }}
ports:
{{- range $port := .Values.authentication.ports }}
- containerPort: {{ $port.containerPort }}
name: {{ $port.name }}
protocol: {{ $port.protocol }}
{{- end }}
{{- if .Values.authentication.resources }}
resources:
{{- toYaml .Values.authentication.resources | nindent 12 }}
{{- end }}
{{- if .Values.authentication.probes }}
{{- if and (.Values.authentication.probes.liveness) (eq .Values.authentication.probes.liveness.type "httpGet") }}
livenessProbe:
httpGet:
path: {{ .Values.authentication.probes.liveness.config.path }}
port: {{ .Values.authentication.probes.liveness.config.port }}
{{- if .Values.authentication.probes.liveness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.authentication.probes.liveness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.authentication.probes.liveness.config.periodSeconds }}
periodSeconds: {{ .Values.authentication.probes.liveness.config.periodSeconds }}
{{- end }}
{{- if .Values.authentication.probes.liveness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.authentication.probes.liveness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.authentication.probes.liveness.config.successThreshold }}
successThreshold: {{ .Values.authentication.probes.liveness.config.successThreshold }}
{{- end }}
{{- if .Values.authentication.probes.liveness.config.failureThreshold }}
failureThreshold: {{ .Values.authentication.probes.liveness.config.failureThreshold }}
{{- end }}
{{- if .Values.authentication.probes.liveness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.authentication.probes.liveness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- if and (.Values.authentication.probes.readiness) (eq .Values.authentication.probes.readiness.type "httpGet") }}
readinessProbe:
httpGet:
path: {{ .Values.authentication.probes.readiness.config.path }}
port: {{ .Values.authentication.probes.readiness.config.port }}
{{- if .Values.authentication.probes.readiness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.authentication.probes.readiness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.authentication.probes.readiness.config.periodSeconds }}
periodSeconds: {{ .Values.authentication.probes.readiness.config.periodSeconds }}
{{- end }}
{{- if .Values.authentication.probes.readiness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.authentication.probes.readiness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.authentication.probes.readiness.config.successThreshold }}
successThreshold: {{ .Values.authentication.probes.readiness.config.successThreshold }}
{{- end }}
{{- if .Values.authentication.probes.readiness.config.failureThreshold }}
failureThreshold: {{ .Values.authentication.probes.readiness.config.failureThreshold }}
{{- end }}:%
{{- if .Values.authentication.probes.readiness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.authentication.probes.readiness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- end}}
env:
{{- range $key, $value := .Values.authentication.configs }}
- name: {{ $key | snakecase | upper }}
valueFrom:
secretKeyRef:
name: authentication-config
key: {{ $key | snakecase | upper }}
{{- end }}

View File

@ -0,0 +1,36 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseIngress := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $ingress := .Values.authentication.ingresses }}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $ingress.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $ingress.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseIngress }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
{{- if $ingress.class }}
ingressClassName: {{ $ingress.class }}
{{- end }}
{{- if $ingress.tls }}
tls:
- hosts:
- {{ $ingress.host }}
{{- if $ingress.tls.exists }}
secretName: {{ $ingress.tls.secretRef.name }}
{{- else }}
secretName: {{ $ingress.tls.name }}
{{- end }}
{{- end }}
rules:
- host: {{ $ingress.host }}
http:
paths:
{{- toYaml $ingress.rules | nindent 10 }}
{{- end }}

View File

@ -0,0 +1,26 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseService := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $service := .Values.authentication.services }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ $service.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $service.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
ports:
- port: {{ $service.port }}
targetPort: {{ $service.targetPort }}
selector:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: "authentication"
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
{{- end }}

View File

@ -65,8 +65,8 @@ authentication:
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8004"
# MONGODB_NAME
mongodbName: ""
mongodbName: "freeleaps2"
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URL
mongodbUrl: ""
# MONGODB_URI
mongodbUri: "mongodb://freeleaps-alpha-mongodb.freeleaps-alpha.svc.freeleaps.cluster:27017/"

View File

@ -51,5 +51,5 @@ authentication:
mongodbName: ""
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URL
mongodbUrl: ""
# MONGODB_URI
mongodbUri: ""

View File

@ -0,0 +1,6 @@
apiVersion: v2
name: central-storage
description: A Helm Chart of Central Storage, which part of Freeleaps Platform, powered by Freeleaps.
type: application
version: 0.0.1
appVersion: "0.0.1"

View File

@ -0,0 +1,17 @@
apiVersion: v1
kind: Secret
metadata:
name: central-storage-config
namespace: {{ .Release.Namespace }}
type: Opaque
data:
TZ: {{ .Values.central-storage.configs.tz | b64enc | quote }}
APP_NAME: {{ .Values.central-storage.configs.appName | b64enc | quote }}
SERVICE_API_ACCESS_HOST: {{ .Values.central-storage.configs.serviceApiAccessHost | b64enc | quote }}
SERVICE_API_ACCESS_PORT: {{ .Values.central-storage.configs.serviceApiAccessPort | b64enc | quote }}
MONGODB_NAME: {{ .Values.central-storage.configs.mongodbName | b64enc | quote }}
MONGODB_PORT: {{ .Values.central-storage.configs.mongodbPort | b64enc | quote }}
MONGODB_URI: {{ .Values.central-storage.configs.mongodbUri | b64enc | quote }}
AZURE_STORAGE_DOCUMENT_API_KEY: {{ .Values.central-storage.configs.azureStorageDocumentApiKey | b64enc | quote }}
AZURE_STORAGE_DOCUMENT_API_ENDPOINT: {{ .Values.central-storage.configs.azureStorageDocumentApiEndpoint | b64enc | quote }}

View File

@ -0,0 +1,27 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseCertificate := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $ingress := .Values.central-storage.ingresses }}
{{- if not $ingress.tls.exists }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ $ingress.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $ingress.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseCertificate }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
commonName: {{ $ingress.host }}
dnsNames:
- {{ $ingress.host }}
issuerRef:
name: {{ $ingress.tls.issuerRef.name }}
kind: {{ $ingress.tls.issuerRef.kind }}
secretName: {{ $ingress.tls.name }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,98 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "central-storage"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
name: "central-storage"
namespace: {{ .Release.Namespace | quote }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: "central-storage"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
replicas: {{ .Values.central-storage.replicas }}
template:
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "central-storage"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: "central-storage"
image: "{{ coalesce .Values.central-storage.image.registry .Values.global.registry "docker.io"}}/{{ coalesce .Values.central-storage.image.repository .Values.global.repository }}/{{ .Values.central-storage.image.name }}:{{ .Values.central-storage.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.central-storage.image.imagePullPolicy | default "IfNotPresent" }}
ports:
{{- range $port := .Values.central-storage.ports }}
- containerPort: {{ $port.containerPort }}
name: {{ $port.name }}
protocol: {{ $port.protocol }}
{{- end }}
{{- if .Values.central-storage.resources }}
resources:
{{- toYaml .Values.central-storage.resources | nindent 12 }}
{{- end }}
{{- if .Values.central-storage.probes }}
{{- if and (.Values.central-storage.probes.liveness) (eq .Values.central-storage.probes.liveness.type "httpGet") }}
livenessProbe:
httpGet:
path: {{ .Values.central-storage.probes.liveness.config.path }}
port: {{ .Values.central-storage.probes.liveness.config.port }}
{{- if .Values.central-storage.probes.liveness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.central-storage.probes.liveness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.central-storage.probes.liveness.config.periodSeconds }}
periodSeconds: {{ .Values.central-storage.probes.liveness.config.periodSeconds }}
{{- end }}
{{- if .Values.central-storage.probes.liveness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.central-storage.probes.liveness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.central-storage.probes.liveness.config.successThreshold }}
successThreshold: {{ .Values.central-storage.probes.liveness.config.successThreshold }}
{{- end }}
{{- if .Values.central-storage.probes.liveness.config.failureThreshold }}
failureThreshold: {{ .Values.central-storage.probes.liveness.config.failureThreshold }}
{{- end }}
{{- if .Values.central-storage.probes.liveness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.central-storage.probes.liveness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- if and (.Values.central-storage.probes.readiness) (eq .Values.central-storage.probes.readiness.type "httpGet") }}
readinessProbe:
httpGet:
path: {{ .Values.central-storage.probes.readiness.config.path }}
port: {{ .Values.central-storage.probes.readiness.config.port }}
{{- if .Values.central-storage.probes.readiness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.central-storage.probes.readiness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.central-storage.probes.readiness.config.periodSeconds }}
periodSeconds: {{ .Values.central-storage.probes.readiness.config.periodSeconds }}
{{- end }}
{{- if .Values.central-storage.probes.readiness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.central-storage.probes.readiness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.central-storage.probes.readiness.config.successThreshold }}
successThreshold: {{ .Values.central-storage.probes.readiness.config.successThreshold }}
{{- end }}
{{- if .Values.central-storage.probes.readiness.config.failureThreshold }}
failureThreshold: {{ .Values.central-storage.probes.readiness.config.failureThreshold }}
{{- end }}:%
{{- if .Values.central-storage.probes.readiness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.central-storage.probes.readiness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- end}}
env:
{{- range $key, $value := .Values.central-storage.configs }}
- name: {{ $key | snakecase | upper }}
valueFrom:
secretKeyRef:
name: central-storage-config
key: {{ $key | snakecase | upper }}
{{- end }}

View File

@ -0,0 +1,36 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseIngress := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $ingress := .Values.central-storage.ingresses }}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $ingress.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $ingress.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseIngress }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
{{- if $ingress.class }}
ingressClassName: {{ $ingress.class }}
{{- end }}
{{- if $ingress.tls }}
tls:
- hosts:
- {{ $ingress.host }}
{{- if $ingress.tls.exists }}
secretName: {{ $ingress.tls.secretRef.name }}
{{- else }}
secretName: {{ $ingress.tls.name }}
{{- end }}
{{- end }}
rules:
- host: {{ $ingress.host }}
http:
paths:
{{- toYaml $ingress.rules | nindent 10 }}
{{- end }}

View File

@ -0,0 +1,26 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseService := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $service := .Values.central-storage.services }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ $service.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $service.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
ports:
- port: {{ $service.port }}
targetPort: {{ $service.targetPort }}
selector:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: "central-storage"
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
{{- end }}

View File

@ -0,0 +1,68 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
central-storage:
replicas: 1
image:
registry:
repository: freeleaps
name: central_storage
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8005
protocol: TCP
resources:
requests:
cpu: "0.5"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
# FIXME: Wait until the developers implements the probes APIs
probes: {}
services:
- name: central-storage-service
type: ClusterIP
port: 8005
targetPort: 8005
# Defaults to {}, which means doesn't have any ingress
ingresses:
- name: central-storage-ingress
host: alpha.central-storage.freeleaps.mathmast.com
class: nginx
rules:
- path: "/*"
pathType: ImplementationSpecific
backend:
service:
name: central-storage-service
port:
number: 8005
tls:
exists: false
issuerRef:
name: mathmast-dot-com
kind: ClusterIssuer
name: alpha.central-storage.freeleaps.mathmast.com-cert
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "central_storage"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8005"
# MONGODB_NAME
mongodbName: "freeleaps2"
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URI
mongodbUri: "mongodb://freeleaps-alpha-mongodb.freeleaps-alpha.svc.freeleaps.cluster:27017/"
# AZURE_STORAGE_DOCUMENT_API_KEY
azureStorageDocumentApiKey: ""
# AZURE_STORAGE_DOCUMENT_API_ENDPOINT
azureStorageDocumentApiEndpoint: ""

View File

@ -0,0 +1,51 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
central-storage:
replicas: 1
image:
registry:
repository: freeleaps
name: central_storage
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8005
protocol: TCP
resources:
requests:
cpu: "0.5"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
# FIXME: Wait until the developers implements the probes APIs
probes: {}
services:
- name: central-storage-service
type: ClusterIP
port: 8005
targetPort: 8005
# Defaults to {}, which means doesn't have any ingress
ingresses: {}
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "central_storage"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8005"
# MONGODB_NAME
mongodbName: ""
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URI
mongodbUri: ""
# AZURE_STORAGE_DOCUMENT_API_KEY
azureStorageDocumentApiKey: ""
# AZURE_STORAGE_DOCUMENT_API_ENDPOINT
azureStorageDocumentApiEndpoint: ""

View File

@ -0,0 +1,6 @@
apiVersion: v2
name: content
description: A Helm Chart of content service, which part of Freeleaps Platform, powered by Freeleaps.
type: application
version: 0.0.1
appVersion: "0.0.1"

View File

@ -0,0 +1,27 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseCertificate := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $ingress := .Values.content.ingresses }}
{{- if not $ingress.tls.exists }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ $ingress.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $ingress.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseCertificate }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
commonName: {{ $ingress.host }}
dnsNames:
- {{ $ingress.host }}
issuerRef:
name: {{ $ingress.tls.issuerRef.name }}
kind: {{ $ingress.tls.issuerRef.kind }}
secretName: {{ $ingress.tls.name }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,17 @@
apiVersion: v1
kind: Secret
metadata:
name: content-config
namespace: {{ .Release.Namespace }}
type: Opaque
data:
TZ: {{ .Values.content.configs.tz | b64enc | quote }}
APP_NAME: {{ .Values.content.configs.appName | b64enc | quote }}
SERVICE_API_ACCESS_HOST: {{ .Values.content.configs.serviceApiAccessHost | b64enc | quote }}
SERVICE_API_ACCESS_PORT: {{ .Values.content.configs.serviceApiAccessPort | b64enc | quote }}
MONGODB_NAME: {{ .Values.content.configs.mongodbName | b64enc | quote }}
MONGODB_PORT: {{ .Values.content.configs.mongodbPort | b64enc | quote }}
MONGODB_URI: {{ .Values.content.configs.mongodbUri | b64enc | quote }}
FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET: {{ .Values.content.configs.freeleapsWwwAsAzureClientSecret | b64enc | quote }}
CENTRAL_STORAGE_WEBAPI_URL_BASE: {{ .Values.content.configs.centralStorageWebapiUrlBase | b64enc | quote }}

View File

@ -0,0 +1,98 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "content"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
name: "content"
namespace: {{ .Release.Namespace | quote }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: "content"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
replicas: {{ .Values.content.replicas }}
template:
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "content"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: "content"
image: "{{ coalesce .Values.content.image.registry .Values.global.registry "docker.io"}}/{{ coalesce .Values.content.image.repository .Values.global.repository }}/{{ .Values.content.image.name }}:{{ .Values.content.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.content.image.imagePullPolicy | default "IfNotPresent" }}
ports:
{{- range $port := .Values.content.ports }}
- containerPort: {{ $port.containerPort }}
name: {{ $port.name }}
protocol: {{ $port.protocol }}
{{- end }}
{{- if .Values.content.resources }}
resources:
{{- toYaml .Values.content.resources | nindent 12 }}
{{- end }}
{{- if .Values.content.probes }}
{{- if and (.Values.content.probes.liveness) (eq .Values.content.probes.liveness.type "httpGet") }}
livenessProbe:
httpGet:
path: {{ .Values.content.probes.liveness.config.path }}
port: {{ .Values.content.probes.liveness.config.port }}
{{- if .Values.content.probes.liveness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.content.probes.liveness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.content.probes.liveness.config.periodSeconds }}
periodSeconds: {{ .Values.content.probes.liveness.config.periodSeconds }}
{{- end }}
{{- if .Values.content.probes.liveness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.content.probes.liveness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.content.probes.liveness.config.successThreshold }}
successThreshold: {{ .Values.content.probes.liveness.config.successThreshold }}
{{- end }}
{{- if .Values.content.probes.liveness.config.failureThreshold }}
failureThreshold: {{ .Values.content.probes.liveness.config.failureThreshold }}
{{- end }}
{{- if .Values.content.probes.liveness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.content.probes.liveness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- if and (.Values.content.probes.readiness) (eq .Values.content.probes.readiness.type "httpGet") }}
readinessProbe:
httpGet:
path: {{ .Values.content.probes.readiness.config.path }}
port: {{ .Values.content.probes.readiness.config.port }}
{{- if .Values.content.probes.readiness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.content.probes.readiness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.content.probes.readiness.config.periodSeconds }}
periodSeconds: {{ .Values.content.probes.readiness.config.periodSeconds }}
{{- end }}
{{- if .Values.content.probes.readiness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.content.probes.readiness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.content.probes.readiness.config.successThreshold }}
successThreshold: {{ .Values.content.probes.readiness.config.successThreshold }}
{{- end }}
{{- if .Values.content.probes.readiness.config.failureThreshold }}
failureThreshold: {{ .Values.content.probes.readiness.config.failureThreshold }}
{{- end }}:%
{{- if .Values.content.probes.readiness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.content.probes.readiness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- end}}
env:
{{- range $key, $value := .Values.content.configs }}
- name: {{ $key | snakecase | upper }}
valueFrom:
secretKeyRef:
name: content-config
key: {{ $key | snakecase | upper }}
{{- end }}

View File

@ -0,0 +1,36 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseIngress := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $ingress := .Values.content.ingresses }}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $ingress.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $ingress.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseIngress }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
{{- if $ingress.class }}
ingressClassName: {{ $ingress.class }}
{{- end }}
{{- if $ingress.tls }}
tls:
- hosts:
- {{ $ingress.host }}
{{- if $ingress.tls.exists }}
secretName: {{ $ingress.tls.secretRef.name }}
{{- else }}
secretName: {{ $ingress.tls.name }}
{{- end }}
{{- end }}
rules:
- host: {{ $ingress.host }}
http:
paths:
{{- toYaml $ingress.rules | nindent 10 }}
{{- end }}

View File

@ -0,0 +1,26 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseService := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $service := .Values.content.services }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ $service.name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: {{ $service.name | quote }}
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
spec:
ports:
- port: {{ $service.port }}
targetPort: {{ $service.targetPort }}
selector:
app.kubernetes.io/version: {{ $appVersion }}
app.kubernetes.io/name: "content"
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
{{- end }}

View File

@ -0,0 +1,69 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
content:
replicas: 1
image:
registry:
repository: freeleaps
name: content
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8013
protocol: TCP
resources:
requests:
cpu: "0.5"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
# FIXME: Wait until the developers implements the probes APIs
probes: {}
services:
- name: content-service
type: ClusterIP
port: 8013
targetPort: 8013
# Defaults to {}, which means doesn't have any ingress
ingresses:
- name: content-ingress
host: alpha.content.freeleaps.mathmast.com
class: nginx
rules:
- path: "/*"
pathType: ImplementationSpecific
backend:
service:
name: content-service
port:
number: 8013
tls:
exists: false
issuerRef:
name: mathmast-dot-com
kind: ClusterIssuer
name: alpha.content.freeleaps.mathmast.com-cert
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "content"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8013"
# MONGODB_NAME
mongodbName: "freeleaps2"
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URI
mongodbUri: "mongodb://freeleaps-alpha-mongodb.freeleaps-alpha.svc.freeleaps.cluster:27017/"
# FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET
freeleapsWwwAsAzureClientSecret: ""
# CENTRAL_STORAGE_WEBAPI_URL_BASE
centralStorageWebapiUrlBase: "http://central-storage-service.freeleaps-alpha.svc.freeleaps.cluster:8005/api/central_storage"

View File

@ -0,0 +1,52 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
content:
replicas: 1
image:
registry:
repository: freeleaps
name: content
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8013
protocol: TCP
resources:
requests:
cpu: "0.5"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
# FIXME: Wait until the developers implements the probes APIs
probes: {}
services:
- name: content-service
type: ClusterIP
port: 8013
targetPort: 8013
# Defaults to {}, which means doesn't have any ingress
ingresses: {}
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "content"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8013"
# MONGODB_NAME
mongodbName: ""
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URI
mongodbUri: ""
# FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET
freeleapsWwwAsAzureClientSecret: ""
# CENTRAL_STORAGE_WEBAPI_URL_BASE
centralStorageWebapiUrlBase: ""