feat(helm): add Helm charts for payment and notification services with initial configurations

Signed-off-by: zhenyus <zhenyus@mathmast.com>
This commit is contained in:
zhenyus 2025-02-21 20:42:32 +08:00
parent b8c70448a3
commit d97b8d09e4
16 changed files with 656 additions and 0 deletions

View File

@ -0,0 +1,6 @@
apiVersion: v2
name: notification
description: A Helm Chart of notification 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.notification.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: "notification"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
name: "notification"
namespace: {{ .Release.Namespace | quote }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: "notification"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
replicas: {{ .Values.notification.replicas }}
template:
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "notification"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: "notification"
image: "{{ coalesce .Values.notification.image.registry .Values.global.registry "docker.io"}}/{{ coalesce .Values.notification.image.repository .Values.global.repository }}/{{ .Values.notification.image.name }}:{{ .Values.notification.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.notification.image.imagePullPolicy | default "IfNotPresent" }}
ports:
{{- range $port := .Values.notification.ports }}
- containerPort: {{ $port.containerPort }}
name: {{ $port.name }}
protocol: {{ $port.protocol }}
{{- end }}
{{- if .Values.notification.resources }}
resources:
{{- toYaml .Values.notification.resources | nindent 12 }}
{{- end }}
{{- if .Values.notification.probes }}
{{- if and (.Values.notification.probes.liveness) (eq .Values.notification.probes.liveness.type "httpGet") }}
livenessProbe:
httpGet:
path: {{ .Values.notification.probes.liveness.config.path }}
port: {{ .Values.notification.probes.liveness.config.port }}
{{- if .Values.notification.probes.liveness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.notification.probes.liveness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.notification.probes.liveness.config.periodSeconds }}
periodSeconds: {{ .Values.notification.probes.liveness.config.periodSeconds }}
{{- end }}
{{- if .Values.notification.probes.liveness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.notification.probes.liveness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.notification.probes.liveness.config.successThreshold }}
successThreshold: {{ .Values.notification.probes.liveness.config.successThreshold }}
{{- end }}
{{- if .Values.notification.probes.liveness.config.failureThreshold }}
failureThreshold: {{ .Values.notification.probes.liveness.config.failureThreshold }}
{{- end }}
{{- if .Values.notification.probes.liveness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.notification.probes.liveness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- if and (.Values.notification.probes.readiness) (eq .Values.notification.probes.readiness.type "httpGet") }}
readinessProbe:
httpGet:
path: {{ .Values.notification.probes.readiness.config.path }}
port: {{ .Values.notification.probes.readiness.config.port }}
{{- if .Values.notification.probes.readiness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.notification.probes.readiness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.notification.probes.readiness.config.periodSeconds }}
periodSeconds: {{ .Values.notification.probes.readiness.config.periodSeconds }}
{{- end }}
{{- if .Values.notification.probes.readiness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.notification.probes.readiness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.notification.probes.readiness.config.successThreshold }}
successThreshold: {{ .Values.notification.probes.readiness.config.successThreshold }}
{{- end }}
{{- if .Values.notification.probes.readiness.config.failureThreshold }}
failureThreshold: {{ .Values.notification.probes.readiness.config.failureThreshold }}
{{- end }}:%
{{- if .Values.notification.probes.readiness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.notification.probes.readiness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- end}}
env:
{{- range $key, $value := .Values.notification.configs }}
- name: {{ $key | snakecase | upper }}
valueFrom:
secretKeyRef:
name: notification-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.notification.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,21 @@
apiVersion: v1
kind: Secret
metadata:
name: notification-config
namespace: {{ .Release.Namespace }}
type: Opaque
data:
TZ: {{ .Values.notification.configs.tz | b64enc | quote }}
APP_NAME: {{ .Values.notification.configs.appName | b64enc | quote }}
SERVICE_API_ACCESS_HOST: {{ .Values.notification.configs.serviceApiAccessHost | b64enc | quote }}
SERVICE_API_ACCESS_PORT: {{ .Values.notification.configs.serviceApiAccessPort | b64enc | quote }}
RABBITMQ_HOST: {{ .Values.notification.configs.rabbitmqHost | b64enc | quote }}
RABBITMQ_PORT: {{ .Values.notification.configs.rabbitmqPort | b64enc | quote }}
SYSTEM_USER_ID: {{ .Values.notification.configs.systemUserId | b64enc | quote }}
SMS_FROM: {{ .Values.notification.configs.smsFrom | b64enc | quote }}
EMAIL_FROM: {{ .Values.notification.configs.emailFrom | b64enc | quote }}
SECRET_KEY: {{ .Values.notification.configs.secretKey | b64enc | quote }}
SENDGRID_API_KEY: {{ .Values.notification.configs.sendgridApiKey | b64enc | quote }}
TWILIO_ACCOUNT_SID: {{ .Values.notification.configs.twilioAccountSid | b64enc | quote }}
TWILIO_AUTH_TOKEN: {{ .Values.notification.configs.twilioAuthToken | b64enc | quote }}

View File

@ -0,0 +1,26 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseService := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $service := .Values.notification.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: "notification"
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
{{- end }}

View File

@ -0,0 +1,76 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
content:
replicas: 1
image:
registry:
repository: freeleaps
name: notification
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8003
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: notification-service
type: ClusterIP
port: 8003
targetPort: 8003
# Defaults to {}, which means doesn't have any ingress
ingresses:
- name: notification-ingress
host: alpha.notification.freeleaps.mathmast.com
class: nginx
rules:
- path: "/*"
pathType: ImplementationSpecific
backend:
service:
name: notification-service
port:
number: 8003
tls:
exists: false
issuerRef:
name: mathmast-dot-com
kind: ClusterIssuer
name: alpha.notification.freeleaps.mathmast.com-cert"
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "notification"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8003"
# RABBITMQ_HOST
rabbitmqHost: ""
# RABBITMQ_PORT
rabbitmqPort: ""
# SYSTEM_USER_ID
systemUserId: ""
# SMS_FROM
smsFrom: ""
# EMAIL_FROM
emailFrom: ""
# SECRET_KEY
secretKey: ""
# SENDGRID_API_KEY
sendgridApiKey: ""
# TWILIO_ACCOUNT_SID
twilioAccountSid: ""
# TWILIO_AUTH_TOKEN
twilioAuthToken: ""

View File

@ -0,0 +1,59 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
notification:
replicas: 1
image:
registry:
repository: freeleaps
name: notification
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8003
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: notification-service
type: ClusterIP
port: 8003
targetPort: 8003
# Defaults to {}, which means doesn't have any ingress
ingresses: {}
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "notification"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8003"
# RABBITMQ_HOST
rabbitmqHost: ""
# RABBITMQ_PORT
rabbitmqPort: ""
# SYSTEM_USER_ID
systemUserId: ""
# SMS_FROM
smsFrom: ""
# EMAIL_FROM
emailFrom: ""
# SECRET_KEY
secretKey: ""
# SENDGRID_API_KEY
sendgridApiKey: ""
# TWILIO_ACCOUNT_SID
twilioAccountSid: ""
# TWILIO_AUTH_TOKEN
twilioAuthToken: ""

View File

@ -0,0 +1,6 @@
apiVersion: v2
name: payment
description: A Helm Chart of payment 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.payment.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: "payment"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
name: "payment"
namespace: {{ .Release.Namespace | quote }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: "payment"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
replicas: {{ .Values.payment.replicas }}
template:
metadata:
labels:
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/name: "payment"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: "payment"
image: "{{ coalesce .Values.payment.image.registry .Values.global.registry "docker.io"}}/{{ coalesce .Values.payment.image.repository .Values.global.repository }}/{{ .Values.payment.image.name }}:{{ .Values.payment.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.payment.image.imagePullPolicy | default "IfNotPresent" }}
ports:
{{- range $port := .Values.payment.ports }}
- containerPort: {{ $port.containerPort }}
name: {{ $port.name }}
protocol: {{ $port.protocol }}
{{- end }}
{{- if .Values.payment.resources }}
resources:
{{- toYaml .Values.payment.resources | nindent 12 }}
{{- end }}
{{- if .Values.payment.probes }}
{{- if and (.Values.payment.probes.liveness) (eq .Values.payment.probes.liveness.type "httpGet") }}
livenessProbe:
httpGet:
path: {{ .Values.payment.probes.liveness.config.path }}
port: {{ .Values.payment.probes.liveness.config.port }}
{{- if .Values.payment.probes.liveness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.payment.probes.liveness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.payment.probes.liveness.config.periodSeconds }}
periodSeconds: {{ .Values.payment.probes.liveness.config.periodSeconds }}
{{- end }}
{{- if .Values.payment.probes.liveness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.payment.probes.liveness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.payment.probes.liveness.config.successThreshold }}
successThreshold: {{ .Values.payment.probes.liveness.config.successThreshold }}
{{- end }}
{{- if .Values.payment.probes.liveness.config.failureThreshold }}
failureThreshold: {{ .Values.payment.probes.liveness.config.failureThreshold }}
{{- end }}
{{- if .Values.payment.probes.liveness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.payment.probes.liveness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- if and (.Values.payment.probes.readiness) (eq .Values.payment.probes.readiness.type "httpGet") }}
readinessProbe:
httpGet:
path: {{ .Values.payment.probes.readiness.config.path }}
port: {{ .Values.payment.probes.readiness.config.port }}
{{- if .Values.payment.probes.readiness.config.initialDelaySeconds }}
initialDelaySeconds: {{ .Values.payment.probes.readiness.config.initialDelaySeconds }}
{{- end }}
{{- if .Values.payment.probes.readiness.config.periodSeconds }}
periodSeconds: {{ .Values.payment.probes.readiness.config.periodSeconds }}
{{- end }}
{{- if .Values.payment.probes.readiness.config.timeoutSeconds }}
timeoutSeconds: {{ .Values.payment.probes.readiness.config.timeoutSeconds }}
{{- end }}
{{- if .Values.payment.probes.readiness.config.successThreshold }}
successThreshold: {{ .Values.payment.probes.readiness.config.successThreshold }}
{{- end }}
{{- if .Values.payment.probes.readiness.config.failureThreshold }}
failureThreshold: {{ .Values.payment.probes.readiness.config.failureThreshold }}
{{- end }}:%
{{- if .Values.payment.probes.readiness.config.terminationGracePeriodSeconds }}
terminationGracePeriodSeconds: {{ .Values.payment.probes.readiness.config.terminationGracePeriodSeconds }}
{{- end }}
{{- end }}
{{- end}}
env:
{{- range $key, $value := .Values.payment.configs }}
- name: {{ $key | snakecase | upper }}
valueFrom:
secretKeyRef:
name: payment-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.payment.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,16 @@
apiVersion: v1
kind: Secret
metadata:
name: payment-config
namespace: {{ .Release.Namespace }}
type: Opaque
data:
TZ: {{ .Values.payment.configs.tz | b64enc | quote }}
APP_NAME: {{ .Values.payment.configs.appName | b64enc | quote }}
SERVICE_API_ACCESS_HOST: {{ .Values.payment.configs.serviceApiAccessHost | b64enc | quote }}
SERVICE_API_ACCESS_PORT: {{ .Values.payment.configs.serviceApiAccessPort | b64enc | quote }}
MONGODB_NAME: {{ .Values.payment.configs.mongodbName | b64enc | quote }}
MONGODB_PORT: {{ .Values.payment.configs.mongodbPort | b64enc | quote }}
MONGODB_URI: {{ .Values.payment.configs.mongodbUri | b64enc | quote }}
STRIPE_API_KEY: {{ .Values.payment.configs.stripeApiKey | b64enc | quote }}

View File

@ -0,0 +1,26 @@
{{ $namespace := .Release.Namespace }}
{{ $appVersion := .Chart.AppVersion | quote }}
{{ $releaseService := .Release.Service }}
{{ $releaseName := .Release.Name }}
{{- range $service := .Values.payment.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: "payment"
app.kubernetes.io/managed-by: {{ $releaseService }}
app.kubernetes.io/instance: {{ $releaseName }}
{{- end }}

View File

@ -0,0 +1,49 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
payment:
replicas: 1
image:
registry:
repository: freeleaps
name: payment
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8006
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: payment-service
type: ClusterIP
port: 8006
targetPort: 8006
# Defaults to {}, which means doesn't have any ingress
ingresses: {}
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "payment"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8006"
# MONGODB_NAME
mongodbName: "freeleaps2"
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URI
mongodbUri: "mongodb://freeleaps-alpha-mongodb.freeleaps-alpha.svc.freeleaps.cluster:27017/"
# STRIPE_API_KEY
stripeApiKey: ""

View File

@ -0,0 +1,49 @@
global:
registry: docker.io
repository: freeleaps
nodeSelector: {}
payment:
replicas: 1
image:
registry:
repository: freeleaps
name: payment
tag: 1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8006
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: payment-service
type: ClusterIP
port: 8006
targetPort: 8006
# Defaults to {}, which means doesn't have any ingress
ingresses: {}
configs:
# TZ
tz: "America/Settle"
# APP_NAME
appName: "payment"
# SERVICE_API_ACCESS_HOST
serviceApiAccessHost: "0.0.0.0"
# SERVICE_API_ACCESS_PORT
serviceApiAccessPort: "8006"
# MONGODB_NAME
mongodbName: ""
# MONGODB_PORT
mongodbPort: "27017"
# MONGODB_URI
mongodbUri: ""
# STRIPE_API_KEY
stripeApiKey: ""