Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .common/traq/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
6 changes: 6 additions & 0 deletions .common/traq/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: traq
description: A Helm chart for traQ - a real-time communication tool
type: application
version: "0.1.0"
appVersion: "0.1.0"
19 changes: 19 additions & 0 deletions .common/traq/templates/backend/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- with $.Values.backend }}
apiVersion: v1
kind: Service
metadata:
name: {{ $.Release.Name }}
namespace: {{ $.Release.Namespace }}
annotations:
{{- .service.annotations | toYaml | nindent 4 }}

spec:
type: ClusterIP
selector:
app: {{ $.Release.Name }}
ports:
- name: http
port: 3000
targetPort: http

{{- end }}
94 changes: 94 additions & 0 deletions .common/traq/templates/backend/sts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
{{- with $.Values.backend }}
kind: Deployment
apiVersion: apps/v1
metadata:
name: {{ $.Release.Name }}
namespace: {{ $.Release.Namespace }}

spec:
revisionHistoryLimit: 0
replicas: {{ .replicas }}
strategy:
type: Recreate

selector:
matchLabels:
app: {{ $.Release.Name }}-backend
template:
metadata:
labels:
app: {{ $.Release.Name }}-backend
spec:
enableServiceLinks: false
{{- if .nodeSelector }}
nodeSelector:
{{- .nodeSelector | toYaml | nindent 8 }}
{{- end }}
volumes:
- name: config
configMap:
name: {{ .configMap.existingName }}
- name: keys
secret:
secretName: {{ .keysSecret.existingName }}
- name: cache
emptyDir: {}

containers:
- name: traq
image: {{ .image }}
imagePullPolicy: Always
ports:
- name: http
containerPort: 3000
env:
# TODO: use "envFrom" for less configuration mess
- name: TRAQ_MARIADB_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: mariadb_password
- name: TRAQ_STORAGE_S3_ACCESSKEY
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: storage_s3_access_key
- name: TRAQ_STORAGE_S3_SECRETKEY
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: storage_s3_secretKey
- name: TRAQ_SKYWAY_SECRETKEY
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: skyway_secretKey
- name: TRAQ_ES_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: es_password
- name: TRAQ_LIVEKIT_APIKEY
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: livekit_apiKey
- name: TRAQ_LIVEKIT_APISECRET
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: livekit_apiSecret
volumeMounts:
- name: config
mountPath: /app/config.yml
subPath: config.yml
- name: keys
mountPath: /keys
- name: cache
mountPath: /storage
{{- if .resources }}
resources:
{{- .resources | toYaml | nindent 12 }}
{{- end }}

{{- end }}
13 changes: 13 additions & 0 deletions .common/traq/templates/es/cm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{- with $.Values.es }}
{{- if .enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $.Release.Name }}-es
namespace: {{ $.Release.Namespace }}

data:
es_jvm.options: {{ .jvmOptions | quote }}

{{- end }}
{{- end }}
24 changes: 24 additions & 0 deletions .common/traq/templates/es/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{- with $.Values.es }}
{{- if .enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ $.Release.Name }}-es
namespace: {{ $.Release.Namespace }}
annotations:
{{- .service.annotations | toYaml | nindent 4 }}

spec:
type: ClusterIP
selector:
app: {{ $.Release.Name }}-es
ports:
- name: es
port: 9200
targetPort: es
- name: exporter
port: 9114
targetPort: exporter

{{- end }}
{{- end }}
86 changes: 86 additions & 0 deletions .common/traq/templates/es/sts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{{- with $.Values.es }}
{{- if .enabled }}
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: {{ $.Release.Name }}-es
namespace: {{ $.Release.Namespace }}

spec:
serviceName: {{ $.Release.Name }}-es
podManagementPolicy: Parallel
revisionHistoryLimit: 0
replicas: {{ .replicas }}

selector:
matchLabels:
app: {{ $.Release.Name }}-es
template:
metadata:
labels:
app: {{ $.Release.Name }}-es
spec:
enableServiceLinks: false
{{- if .nodeSelector }}
nodeSelector:
{{- .nodeSelector | toYaml | nindent 8 }}
{{- end }}
volumes:
- name: config
configMap:
name: {{ $.Release.Name }}-es
- name: data
hostPath:
{{- .dataVolume.hostPath | toYaml | nindent 12 }}

containers:
- name: traq-es
image: {{ .image }}
ports:
- name: http
containerPort: 9200
env:
- name: discovery.type
value: single-node
# TODO: use "envFrom" for less configuration mess
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: es-password
volumeMounts:
- name: config
mountPath: /usr/share/elasticsearch/config/jvm.options.d/es_jvm.options
subPath: es_jvm.options
- name: data
mountPath: /usr/share/elasticsearch/data
{{- if .resources }}
resources:
{{- .resources | toYaml | nindent 12 }}
{{- end }}

{{- if .exporter.enabled }}
- name: exporter
image: {{ .exporter.image }}
args:
- --es.uri=http://elastic:$(ELASTIC_PASSWORD)@localhost:9200
- --es.all
- --es.indices
- --es.shards
env:
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .secret.existingName }}
key: es-password
ports:
- name: exporter
containerPort: 9114
{{- if .exporter.resources }}
resources:
{{- .exporter.resources | toYaml | nindent 12 }}
{{- end }}
{{- end }}

{{- end }}
{{- end }}
53 changes: 53 additions & 0 deletions .common/traq/templates/frontend/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{{- with $.Values.frontend }}
kind: Deployment
apiVersion: apps/v1
metadata:
name: {{ $.Release.Name }}-frontend
namespace: {{ $.Release.Namespace }}

spec:
replicas: {{ .replicas }}
revisionHistoryLimit: 0
selector:
matchLabels:
app: {{ $.Release.Name }}-frontend
template:
metadata:
labels:
app: {{ $.Release.Name }}-frontend
spec:
enableServiceLinks: false
{{- if .nodeSelector }}
nodeSelector:
{{- .nodeSelector | toYaml | nindent 8 }}
{{- end }}
{{- if.overrideConfig }}
volumes:
- name: config
configMap:
name: frontend-config
{{- end }}

containers:
- name: traq-frontend
image: {{ .image }}
ports:
- name: http
containerPort: 80
{{- if .extraEnvs }}
env:
# TODO: use "envFrom" for less configuration mess
{{- .extraEnvs | toYaml | nindent 12 }}
{{- end }}
{{- if .overrideConfig }}
volumeMounts:
- mountPath: /app/override/config.js
name: config
subPath: config.js
{{- end }}
{{- if .resources }}
resources:
{{- .resources | toYaml | nindent 12 }}
{{- end }}

{{- end }}
17 changes: 17 additions & 0 deletions .common/traq/templates/frontend/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{- with $.Values.frontend }}
apiVersion: v1
kind: Service
metadata:
name: {{ $.Release.Name }}-frontend
namespace: {{ $.Release.Namespace }}

spec:
type: ClusterIP
selector:
app: {{ $.Release.Name }}-frontend
ports:
- name: http
port: 80
targetPort: http

{{- end }}
51 changes: 51 additions & 0 deletions .common/traq/templates/ingress-route/ingress-route.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{{- with .Values.ingressRoute }}
{{- if .enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: {{ $.Release.Name }}
namespace: {{ $.Release.Namespace }}

spec:
entryPoints:
{{- if .tls }}
- websecure
{{- else }}
- web
{{- end }}
{{- if .tls }}
tls:
secretName: {{ .tls }}
{{- end }}
routes:
- kind: Rule
match: Host(`{{ $.Values.host }}`) && (PathPrefix(`/api`) || PathPrefix(`/.well-known`))
services:
- namespace: {{ $.Release.Namespace }}
kind: Service
name: {{ $.Release.Name }}
port: http
scheme: http

- kind: Rule
match: Host(`{{ $.Values.host }}`) && PathPrefix(`/widget`)
middlewares:
- name: {{ $.Release.Name }}-widget-strip
services:
- namespace: {{ $.Release.Namespace }}
kind: Service
name: {{ $.Release.Name }}-widget
port: http
scheme: http

- kind: Rule
match: Host(`{{ $.Values.host }}`)
services:
- namespace: {{ $.Release.Namespace }}
kind: Service
name: {{ $.Release.Name }}-frontend
port: http
scheme: http

{{- end }}
{{- end }}
Loading
Loading