docs: improve helm ci & document (#2902)

This commit is contained in:
DarkSky
2023-06-28 20:30:02 +08:00
committed by Alex Yang
parent 1bff46d5f0
commit 7b6728e8a9
10 changed files with 119 additions and 22 deletions

1
.github/helm/affine-cloud/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
charts/

View File

@@ -20,4 +20,4 @@
.project .project
.idea/ .idea/
*.tmproj *.tmproj
.vscode/ .vscode/

30
.github/helm/affine-cloud/readme.md vendored Normal file
View File

@@ -0,0 +1,30 @@
# Helm Chart Configuration
The following table lists the configurable parameters of this Helm chart and their default values.
## AFFiNE Cloud Server parameters
| Parameter | Description | Default |
| ------------------------------ | -------------------------------------------------- | ------------------ |
| `affineCloud.tag` | The Docker tag of the AffineCloud image to be used | `'nightly-latest'` |
| `affineCloud.resources.cpu` | The CPU resources allocated for AffineCloud | `'250m'` |
| `affineCloud.resources.memory` | The memory resources allocated for AffineCloud | `'0.5Gi'` |
| `affineCloud.signKey` | The key used to sign the JWT tokens | `'c2VjcmV0'` |
| `affineCloud.service.type` | The type of the Kubernetes service | `'ClusterIP'` |
| `affineCloud.service.port` | The port of the Kubernetes service | `'http'` |
| `affineCloud.mail.account` | The email account used to send emails | `''` |
| `affineCloud.mail.password` | The password of the email account | `''` |
## PostgreSQL parameters
| Parameter | Description | Default |
| -------------------------------------------- | ------------------------------------------------------------------------------------- | ------------ |
| `postgresql.auth.username` | Username for the PostgreSQL database | `'affine'` |
| `postgresql.auth.password` | Password for the PostgreSQL database. Please change this for production environments. | `'password'` |
| `postgresql.auth.database` | The name of the default database that will be created on image startup | `'affine'` |
| `postgresql.primary.resources.limits.cpu` | The CPU resources allocated for the PostgreSQL primary node | `'500m'` |
| `postgresql.primary.resources.limits.memory` | The memory resources allocated for the PostgreSQL primary node | `'0.5Gi'` |
For more postgres parameters, please refer to: https://artifacthub.io/packages/helm/bitnami/postgresql
Please note that for the `postgresql.auth.password`, you should provide your own password for production environments. The default value is provided only for demonstration purposes.

View File

@@ -0,0 +1,51 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "affine-cloud.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "affine-cloud.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "affine-cloud.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "affine-cloud.labels" -}}
helm.sh/chart: {{ include "affine-cloud.chart" . }}
{{ include "affine-cloud.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "affine-cloud.selectorLabels" -}}
app.kubernetes.io/name: {{ include "affine-cloud.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -1,7 +1,9 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: affine-cloud name: "{{ include "affine-cloud.fullname" . }}"
labels:
{{- include "affine-cloud.labels" . | nindent 4 }}
spec: spec:
replicas: 1 replicas: 1
selector: selector:
@@ -30,7 +32,7 @@ spec:
- name: PG_HOST - name: PG_HOST
value: "{{ .Release.Name }}-postgresql" value: "{{ .Release.Name }}-postgresql"
- name: DATABASE_URL - name: DATABASE_URL
value: "{{ default "postgresql://$(PG_USER):$(PG_PASS)@$(PG_HOST)/$(PG_DATABASE)" .Values.affineCloud.databaseUrl }}" value: "{{ .Values.affineCloud.databaseUrl | default "postgresql://$(PG_USER):$(PG_PASS)@$(PG_HOST)/$(PG_DATABASE)" }}"
envFrom: envFrom:
- secretRef: - secretRef:
name: affine-cloud-secret name: affine-cloud-secret

View File

@@ -4,7 +4,6 @@ metadata:
name: affine-cloud-secret name: affine-cloud-secret
type: Opaque type: Opaque
data: data:
# only for demo, please modify it at prod env SIGN_KEY: "{{ .Values.affineCloud.signKey }}"
SIGN_KEY: TUFtdFdzQTJhdGJuem01TA== MAIL_ACCOUNT: "{{ .Values.affineCloud.mail.account }}"
# MAIL_ACCOUNT: XXXX MAIL_PASSWORD: "{{ .Values.affineCloud.mail.password }}"
# MAIL_PASSWORD: XXXX

View File

@@ -1,13 +1,15 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: affine-cloud name: "{{ include "affine-cloud.fullname" . }}"
labels:
{{- include "affine-cloud.labels" . | nindent 4 }}
spec: spec:
type: ClusterIP type: "{{ .Values.affineCloud.service.type }}"
selector:
app: affine-cloud
ports: ports:
- name: affine-cloud - name: http
protocol: TCP protocol: TCP
port: 3000 port: {{ .Values.affineCloud.service.port }}
targetPort: 3000 targetPort: 3000
selector:
{{- include "affine-cloud.selectorLabels" . | nindent 4 }}

View File

@@ -1,5 +1,13 @@
affineCloud: affineCloud:
tag: 'nightly-latest' tag: 'nightly-latest'
# databaseUrl: 'postgresql://affine:password@affine-cloud-postgresql:5432/affine'
signKey: TUFtdFdzQTJhdGJuem01TA==
mail:
account: ''
password: ''
service:
type: ClusterIP
port: 80
resources: resources:
cpu: '250m' cpu: '250m'
memory: 0.5Gi memory: 0.5Gi
@@ -7,7 +15,7 @@ postgresql:
auth: auth:
# only for demo, please modify it at prod env # only for demo, please modify it at prod env
username: affine username: affine
password: XJYMLnuBJS27a2du password: password
database: affine database: affine
primary: primary:
initdb: initdb:

View File

@@ -39,19 +39,23 @@ jobs:
- name: Package charts - name: Package charts
working-directory: .helm-chart-repo working-directory: .helm-chart-repo
run: | run: |
set -ex
git config --local user.name "$GITHUB_ACTOR"
git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com"
mkdir -p .cr-index mkdir -p .cr-index
owner=$(cut -d '/' -f 1 <<< '${{ github.repository }}')
repo=helm-charts
git_hash=$(git rev-parse HEAD)
echo $git_hash
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update helm repo update
helm dependencies build ../.github/helm/affine-cloud
cr package ../.github/helm/affine-cloud cr package ../.github/helm/affine-cloud
- name: Package charts
if: github.ref == 'refs/heads/master'
working-directory: .helm-chart-repo
run: |
set -ex
git config --local user.name "$GITHUB_ACTOR"
git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com"
owner=$(cut -d '/' -f 1 <<< '${{ github.repository }}')
repo=helm-charts
git_hash=$(git rev-parse HEAD)
cr upload --commit "$git_hash" \ cr upload --commit "$git_hash" \
--git-repo "$repo" --owner "$owner" \ --git-repo "$repo" --owner "$owner" \
--token '${{ secrets.HELM_RELEASER_TOKEN }}' \ --token '${{ secrets.HELM_RELEASER_TOKEN }}' \