diff --git a/Chart.yaml b/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..414136ce9c51eaa1c25124080a22cd96fc960e8c --- /dev/null +++ b/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +name: approval-process +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 2.5.0-apaasv5 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" + +keywords: + - beagle + - data +maintainers: + - name: xuzeyi \ No newline at end of file diff --git a/README.md b/README.md index bd6fdbb1e33dd055f7cad7dd15de4caedba0ead4..27e8073bb2aae2a24d58411296b0d41c104ed031 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,38 @@ -# approval-process +### 概要说明 +``` +业务工作流V2.4 +``` +### 注意 +``` + 1、redis、postgres可通过values.yaml中enabled控制是否部署; + 2、服务配置的redis连接地址,需要和apaas中配置的地址保持一致; + 3、values.yaml中的global参数均有注释,请根据注释配置正确。 +``` +### DB说明 +``` +https://cloud.wodcloud.com/git/approval-process/approval-process-yaml/-/blob/master/deploy/product/v2.5.0-apaasv5/README.MD + +需要新建业务工作流数据库 执行product/v2.5.0/approval-process_init.sql +需要新建表单数据库 执行product/v2.5.0/approval-process-form_init.sql + +工作流数据库 执行product/v2.5.0-apaasv5/approval-process_init.sql +表单数据库 执行product/v2.5.0-apaasv5/approval-process-form_init.sql +``` + +### 其他说明 +``` +部署方式详参deploy.md文件 + +依赖组件 +apaas-v3 & apaas-v5 +postgres +redis(apass所连接的redis) +zeebe(新) +zeebe-impoter(新) + +zeebe arm镜像 +registry.cn-qingdao.aliyuncs.com/wod/zeebe:1.1.2-exporter-arm64 +importer arm镜像 +hub.wodcloud.com/workflow/process-importer:v1.5-alpha-arm64 +``` diff --git a/charts/postgresql/Chart.yaml b/charts/postgresql/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5c0253d154511aeda7e69611e0f13448b911e99a --- /dev/null +++ b/charts/postgresql/Chart.yaml @@ -0,0 +1,6 @@ +name: postgresql +version: v1.0 +description: postgresql +appVersion: 13.5 +apiVersion: v1 +type: application diff --git a/charts/redis/Chart.yaml b/charts/redis/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fee382526eec706f4a7c5a7067bacef5daf748cf --- /dev/null +++ b/charts/redis/Chart.yaml @@ -0,0 +1,6 @@ +name: redis +version: v1.0 +description: postgresql +appVersion: 6.2.6 +apiVersion: v1 +type: application diff --git a/charts/redis/templates/configmap.yaml b/charts/redis/templates/configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0d983c2d6a0acf049e3ed94a973c4bda34c61c58 --- /dev/null +++ b/charts/redis/templates/configmap.yaml @@ -0,0 +1,18 @@ +{{- $redisConf := .Values.conf }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis + namespace: {{ .Release.Namespace }} +data: + redis.conf: | + daemonize no + pidfile /var/run/redis.pid + timeout 0 + loglevel verbose + logfile stdout + {{ .Values.conf.port }} + {{ .Values.conf.db }} + {{ .Values.conf.maxmem }} + {{ .Values.conf.apl }} + {{ .Values.conf.passwd }} diff --git a/charts/redis/templates/statefulset.yaml b/charts/redis/templates/statefulset.yaml new file mode 100644 index 0000000000000000000000000000000000000000..01c214ae7f5073609f3c3c78a0e74dde3e411baa --- /dev/null +++ b/charts/redis/templates/statefulset.yaml @@ -0,0 +1,72 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: redis + namespace: {{ .Release.Namespace }} +spec: + podManagementPolicy: OrderedReady + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app: redis + serviceName: "" + template: + metadata: + labels: + app: redis + spec: + containers: + - args: + - /usr/local/etc/redis/redis.conf + {{- if contains "/" .Values.image.repository }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}{{ template "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + name: redis + ports: + - containerPort: 6379 + resources: {} + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 300 + periodSeconds: 10 + successThreshold: 1 + tcpSocket: + port: 6379 + timeoutSeconds: 1 + volumeMounts: + - mountPath: /etc/localtime + name: localtime + - mountPath: /usr/local/etc/redis + name: conf + - mountPath: /data + name: data + restartPolicy: Always + volumes: + - hostPath: + path: /etc/localtime + type: "" + name: localtime + - configMap: + defaultMode: 420 + name: redis + name: conf + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + labels: + app: redis + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: {{ .Values.storageClassName }} + volumeMode: Filesystem + diff --git a/deploy.md b/deploy.md new file mode 100644 index 0000000000000000000000000000000000000000..7f022649640088bead00a95f72f735b246229027 --- /dev/null +++ b/deploy.md @@ -0,0 +1,42 @@ +## 注意 +``` + 1、redis、postgres可通过values.yaml中enabled控制是否部署; + 2、服务配置的redis连接地址,需要和apaas中配置的地址保持一致; + 3、values.yaml中的global参数均有注释,请根据注释配置正确。 +``` + +## Install +``` + helm install \ + approval-process \ + /etc/kubernetes/charts/approval-process \ + --namespace apaas-v5-approval \ + -f /etc/kubernetes/charts/values.yaml +``` + +## Upgrade +``` + helm upgrade \ + approval-process \ + /etc/kubernetes/charts/approval-process \ + --namespace apaas-v5-approval \ + -f /etc/kubernetes/charts/values.yaml +``` + +## Uninstall +``` + helm uninstall \ + approval-process \ + --namespace apaas-v5-approval + + kubectl delete ns apaas-v5-approval +``` + +## Template +``` + helm template \ + approval-process \ + /etc/kubernetes/charts/approval-process \ + --namespace apaas-v5-approval \ + -f /etc/kubernetes/charts/values.yaml > /etc/kubernetes/charts/approval-process-dist.yaml +``` \ No newline at end of file diff --git a/requirements.yaml b/requirements.yaml new file mode 100644 index 0000000000000000000000000000000000000000..35a65a7019f9b4debb819023661dbb40c1a53b17 --- /dev/null +++ b/requirements.yaml @@ -0,0 +1,7 @@ +dependencies: + - name: postgresql + version: 13.5 + condition: postgresql.enabled + - name: redis + version: 6.0.9 + condition: redis.enabled \ No newline at end of file diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..ccd12ba37ca8b2fe84b0ab05e7e3156a733e868f --- /dev/null +++ b/templates/_helpers.tpl @@ -0,0 +1,39 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "approval-process.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "approval-process.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | 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 "approval-process.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 }} + +{{- define "beagle.imageArch" -}} +{{- if not (eq "amd64" .Values.global.imageArch) -}} +{{- print "-" .Values.global.imageArch -}} +{{- else -}} +{{- print "-" "amd64" -}} +{{- end -}} +{{- end }} diff --git a/templates/approval-form/deployment.yaml b/templates/approval-form/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d12b36e78be642064c3a5678e0c674417ecfc7d5 --- /dev/null +++ b/templates/approval-form/deployment.yaml @@ -0,0 +1,47 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: approval-form + labels: + app.kubernetes.io/name: approval-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-form +spec: + replicas: 1 + selector: + matchLabels: + app: approval-form + template: + metadata: + labels: + app.kubernetes.io/name: approval-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-form + spec: + volumes: + - name: localtime + hostPath: + path: /etc/localtime + containers: + - name: approval-form + {{- if contains "/" .Values.approvalForm.image.repository }} + image: "{{ .Values.approvalForm.image.repository }}:{{ .Values.approvalForm.image.tag }}{{ include "beagle.imageArch" . }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.approvalForm.image.repository }}:{{ .Values.approvalForm.image.tag }}{{ include "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + resources: + {{- toYaml .Values.approvalForm.resources | nindent 12 }} + ports: + - containerPort: 80 + name: http + protocol: TCP + volumeMounts: + - name: localtime + mountPath: /etc/localtime + + diff --git a/templates/approval-form/ingressroute.yaml b/templates/approval-form/ingressroute.yaml new file mode 100644 index 0000000000000000000000000000000000000000..36d6d5a668bfc4a1b0a095e91af10bfc46c7274d --- /dev/null +++ b/templates/approval-form/ingressroute.yaml @@ -0,0 +1,24 @@ +{{- if .Values.global.ingressroute.enabled }} +--- +kind: IngressRoute +apiVersion: bcc.bd-apaas.com/v1alpha1 +metadata: + name: approval-form + labels: + app.kubernetes.io/name: approval-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-form +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`{{ .Values.global.ingressroute.host }}`) && PathPrefix(`/approval/form`) + services: + - kind: Service + name: approval-form + port: 80 + tls: {} +{{- end }} \ No newline at end of file diff --git a/templates/approval-form/service.yaml b/templates/approval-form/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7939bf33ceebc41b3e9896926bea07c5d26c636e --- /dev/null +++ b/templates/approval-form/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: approval-form + labels: + app.kubernetes.io/name: approval-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-form +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: approval-form \ No newline at end of file diff --git a/templates/approval-process-engine/configmap.yaml b/templates/approval-process-engine/configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ed88a59ab481f1f9e663f6729d71a04c5220b1ac --- /dev/null +++ b/templates/approval-process-engine/configmap.yaml @@ -0,0 +1,26 @@ +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: approval-process-engine-config + labels: + app.kubernetes.io/name: approval-process-engine-config + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" +data: + APPROVAL_API_TOKEN_KEY: "{{ .Values.approvalProcessEngine.conf.apiTokenKey }}" + APPROVAL_API_TOKEN_VALUE: "{{ .Values.approvalProcessEngine.conf.apiTokenValue }}" + APPROVAL_API_URL: "https://{{ .Values.global.ingressroute.host }}" + DB1_JDBC_URL: "{{ .Values.approvalProcessEngine.conf.dbDns1 }}" + DB1_PASSWORD: "{{ .Values.approvalProcessEngine.conf.dbPasswd1 }}" + DB1_USERNAME: "{{ .Values.approvalProcessEngine.conf.dbUser1 }}" + DB2_JDBC_URL: "{{ .Values.approvalProcessEngine.conf.dbDns2 }}" + DB2_PASSWORD: "{{ .Values.approvalProcessEngine.conf.dbPasswd2 }}" + DB2_USERNAME: "{{ .Values.approvalProcessEngine.conf.dbUser2 }}" + REDIS_DATABASE: "{{ .Values.approvalProcessEngine.conf.redisDatabase }}" + REDIS_HOST: "{{ .Values.approvalProcessEngine.conf.redisHost }}" + REDIS_PASSWORD: "{{ .Values.approvalProcessEngine.conf.redisPasswd }}" + REDIS_PORT: "{{ .Values.approvalProcessEngine.conf.redisPort }}" + REFRESH_INSTANCE_TASK_CRON: 0/5 * * * * ? + ZEEBE_GATEWAY_ADDRESS: "{{ .Values.approvalProcessEngine.conf.zeebeAddress }}" \ No newline at end of file diff --git a/templates/approval-process-engine/deployment.yaml b/templates/approval-process-engine/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..58515ab860d2c40dffb52333615963a9cd826ac9 --- /dev/null +++ b/templates/approval-process-engine/deployment.yaml @@ -0,0 +1,51 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: approval-process-engine + labels: + app.kubernetes.io/name: approval-process-engine + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-engine +spec: + replicas: 1 + selector: + matchLabels: + app: approval-process-engine + template: + metadata: + labels: + app.kubernetes.io/name: approval-process-engine + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-engine + spec: + volumes: + - name: localtime + hostPath: + path: /etc/localtime + containers: + - name: approval-process-engine + {{- if contains "/" .Values.approvalProcessEngine.image.repository }} + image: "{{ .Values.approvalProcessEngine.image.repository }}:{{ .Values.approvalProcessEngine.image.tag }}{{ include "beagle.imageArch" . }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.approvalProcessEngine.image.repository }}:{{ .Values.approvalProcessEngine.image.tag }}{{ include "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + resources: + {{- toYaml .Values.approvalProcessEngine.resources | nindent 12 }} + ports: + - containerPort: 8080 + name: http + protocol: TCP + volumeMounts: + - name: localtime + mountPath: /etc/localtime + envFrom: + - configMapRef: + name: approval-process-engine-config + + + diff --git a/templates/approval-process-engine/ingressroute.yaml b/templates/approval-process-engine/ingressroute.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c2f6348f59ab2005f66bd4d434d8cd3bc56e0c2e --- /dev/null +++ b/templates/approval-process-engine/ingressroute.yaml @@ -0,0 +1,24 @@ +{{- if .Values.global.ingressroute.enabled }} +--- +kind: IngressRoute +apiVersion: bcc.bd-apaas.com/v1alpha1 +metadata: + name: approval-process-engine + labels: + app.kubernetes.io/name: approval-process-engine + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-engine +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`{{ .Values.global.ingressroute.host }}`) && PathPrefix(`/approval-process`) + services: + - kind: Service + name: approval-process-engine + port: 80 + tls: {} +{{- end }} \ No newline at end of file diff --git a/templates/approval-process-engine/service.yaml b/templates/approval-process-engine/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0788f538bd34fa3dda315536a53810495bc2d024 --- /dev/null +++ b/templates/approval-process-engine/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: approval-process-engine + labels: + app.kubernetes.io/name: approval-process-engine + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-engine +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: approval-process-engine \ No newline at end of file diff --git a/templates/approval-process-form/configmap.yaml b/templates/approval-process-form/configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9ba3a3653efd354bcde322eab197652748200302 --- /dev/null +++ b/templates/approval-process-form/configmap.yaml @@ -0,0 +1,18 @@ +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: approval-process-form-config + labels: + app.kubernetes.io/name: approval-process-form-config + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" +data: + DB_JDBC_URL: "{{ .Values.approvalProcessForm.conf.dbDns }}" + DB_USERNAME: "{{ .Values.approvalProcessForm.conf.dbUser }}" + DB_PASSWORD: "{{ .Values.approvalProcessForm.conf.dbPasswd }}" + REDIS_HOST: "{{ .Values.approvalProcessForm.conf.redisHost }}" + REDIS_PORT: "{{ .Values.approvalProcessForm.conf.redisPort }}" + REDIS_DATABASE: "{{ .Values.approvalProcessForm.conf.redisDatabase }}" + REDIS_PASSWORD: "{{ .Values.approvalProcessForm.conf.redisPasswd }}" \ No newline at end of file diff --git a/templates/approval-process-form/deployment.yaml b/templates/approval-process-form/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7ca64f0ceac3dd3eccc9cab39018945a33180e2f --- /dev/null +++ b/templates/approval-process-form/deployment.yaml @@ -0,0 +1,71 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: approval-process-form + labels: + app.kubernetes.io/name: approval-process-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-form +spec: + replicas: 1 + selector: + matchLabels: + app: approval-process-form + template: + metadata: + labels: + app.kubernetes.io/name: approval-process-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-form + spec: + volumes: + - name: localtime + hostPath: + path: /etc/localtime + containers: + - name: approval-process-form + {{- if contains "/" .Values.approvalProcessForm.image.repository }} + image: "{{ .Values.approvalProcessForm.image.repository }}:{{ .Values.approvalProcessForm.image.tag }}{{ include "beagle.imageArch" . }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.approvalProcessForm.image.repository }}:{{ .Values.approvalProcessForm.image.tag }}{{ include "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + resources: + {{- toYaml .Values.approvalProcessForm.resources | nindent 12 }} + ports: + - containerPort: 8080 + name: http + protocol: TCP + startupProbe: + failureThreshold: 3 + httpGet: + path: /approval-form/health + port: 8080 + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 1 + livenessProbe: + failureThreshold: 3 + httpGet: + path: /approval-form/health + port: 8080 + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 1 + volumeMounts: + - name: localtime + mountPath: /etc/localtime + envFrom: + - configMapRef: + name: approval-process-form-config + + + diff --git a/templates/approval-process-form/ingressroute.yaml b/templates/approval-process-form/ingressroute.yaml new file mode 100644 index 0000000000000000000000000000000000000000..94181293904627bc2e4d74b02d910263e8aac94b --- /dev/null +++ b/templates/approval-process-form/ingressroute.yaml @@ -0,0 +1,24 @@ +{{- if .Values.global.ingressroute.enabled }} +--- +kind: IngressRoute +apiVersion: bcc.bd-apaas.com/v1alpha1 +metadata: + name: approval-process-form + labels: + app.kubernetes.io/name: approval-process-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-form +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`{{ .Values.global.ingressroute.host }}`) && PathPrefix(`/approval-form`) + services: + - kind: Service + name: approval-process-form + port: 80 + tls: {} +{{- end }} \ No newline at end of file diff --git a/templates/approval-process-form/service.yaml b/templates/approval-process-form/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9112d083191df1b0ea5dd65e9a6b530cb00ce6a2 --- /dev/null +++ b/templates/approval-process-form/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: approval-process-form + labels: + app.kubernetes.io/name: approval-process-form + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-process-form +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: approval-process-form \ No newline at end of file diff --git a/templates/approval-ui/deployment.yaml b/templates/approval-ui/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0f4411736c72b47b75d37116be51c4813fcaf7c5 --- /dev/null +++ b/templates/approval-ui/deployment.yaml @@ -0,0 +1,47 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: approval-ui + labels: + app.kubernetes.io/name: approval-ui + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-ui +spec: + replicas: 1 + selector: + matchLabels: + app: approval-ui + template: + metadata: + labels: + app.kubernetes.io/name: approval-ui + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-ui + spec: + volumes: + - name: localtime + hostPath: + path: /etc/localtime + containers: + - name: approval-ui + {{- if contains "/" .Values.approvalUi.image.repository }} + image: "{{ .Values.approvalUi.image.repository }}:{{ .Values.approvalUi.image.tag }}{{ include "beagle.imageArch" . }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.approvalUi.image.repository }}:{{ .Values.approvalUi.image.tag }}{{ include "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + resources: + {{- toYaml .Values.approvalUi.resources | nindent 12 }} + ports: + - containerPort: 80 + name: http + protocol: TCP + volumeMounts: + - name: localtime + mountPath: /etc/localtime + + diff --git a/templates/approval-ui/ingressroute.yaml b/templates/approval-ui/ingressroute.yaml new file mode 100644 index 0000000000000000000000000000000000000000..eaaa578844c3f19951993ac460bc0139c789a66c --- /dev/null +++ b/templates/approval-ui/ingressroute.yaml @@ -0,0 +1,24 @@ +{{- if .Values.global.ingressroute.enabled }} +--- +kind: IngressRoute +apiVersion: bcc.bd-apaas.com/v1alpha1 +metadata: + name: approval-ui + labels: + app.kubernetes.io/name: approval-ui + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-ui +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`{{ .Values.global.ingressroute.host }}`) && PathPrefix(`/approval/ui`) + services: + - kind: Service + name: approval-ui + port: 80 + tls: {} +{{- end }} \ No newline at end of file diff --git a/templates/approval-ui/service.yaml b/templates/approval-ui/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ef71bb9f5085fc2b0af218c6edaedff6ff43214e --- /dev/null +++ b/templates/approval-ui/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: approval-ui + labels: + app.kubernetes.io/name: approval-ui + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: approval-ui +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: approval-ui \ No newline at end of file diff --git a/templates/ingresshost.yaml b/templates/ingresshost.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4f053b8091dec65c2298ee8d72201910bd7ff5b2 --- /dev/null +++ b/templates/ingresshost.yaml @@ -0,0 +1,9 @@ +{{- if .Values.global.ingressroute.enabled }} +--- +apiVersion: bcc.bd-apaas.com/v1alpha1 +kind: IngressHost +metadata: + name: approval-process +spec: + host: "{{ .Values.global.ingressroute.host }}" +{{- end }} diff --git a/templates/process-importer/configmap.yaml b/templates/process-importer/configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..509420049ee9e4b167a699f6deb9245c78bd1a3a --- /dev/null +++ b/templates/process-importer/configmap.yaml @@ -0,0 +1,15 @@ +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: process-importer-config + labels: + app.kubernetes.io/name: process-importer-config + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" +data: + DB_JDBC_URL: "{{ .Values.processImporter.conf.dbDns }}" + DB_USERNAME: "{{ .Values.processImporter.conf.dbUser }}" + DB_PASSWORD: "{{ .Values.processImporter.conf.dbPasswd }}" + HAZEL_CAST_CONNECTION: "{{ .Values.processImporter.conf.zeebeAddress }}" diff --git a/templates/process-importer/deployment.yaml b/templates/process-importer/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..766c99afa01afc860897dac9d6098f8a88448ea8 --- /dev/null +++ b/templates/process-importer/deployment.yaml @@ -0,0 +1,51 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: process-importer + labels: + app.kubernetes.io/name: process-importer + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: process-importer +spec: + replicas: 1 + selector: + matchLabels: + app: process-importer + template: + metadata: + labels: + app.kubernetes.io/name: process-importer + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: process-importer + spec: + volumes: + - name: localtime + hostPath: + path: /etc/localtime + containers: + - name: process-importer + {{- if contains "/" .Values.processImporter.image.repository }} + image: "{{ .Values.processImporter.image.repository }}:{{ .Values.processImporter.image.tag }}{{ include "beagle.imageArch" . }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.processImporter.image.repository }}:{{ .Values.processImporter.image.tag }}{{ include "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + resources: + {{- toYaml .Values.processImporter.resources | nindent 12 }} + ports: + - containerPort: 8080 + name: http + protocol: TCP + volumeMounts: + - name: localtime + mountPath: /etc/localtime + envFrom: + - configMapRef: + name: process-importer-config + + + diff --git a/templates/process-importer/service.yaml b/templates/process-importer/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0f411036f191e73b9a22eb744ce4b01c11f4b788 --- /dev/null +++ b/templates/process-importer/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: process-importer + labels: + app.kubernetes.io/name: process-importer + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: process-importer +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: process-importer \ No newline at end of file diff --git a/templates/zeebe/configmap.yaml b/templates/zeebe/configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..83b7ba8391d1a6558b6b924b1f2a7c0e0ccfc536 --- /dev/null +++ b/templates/zeebe/configmap.yaml @@ -0,0 +1,75 @@ +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: zeebe-application + labels: + app.kubernetes.io/name: zeebe + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" +data: + application.yaml: | + zeebe: + broker: + gateway: + # Enable the embedded gateway to start on broker startup. + # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_ENABLE. + enable: true + + network: + # Sets the port the embedded gateway binds to. + # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_NETWORK_PORT. + port: 26500 + + security: + # Enables TLS authentication between clients and the gateway + # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_SECURITY_ENABLED. + enabled: false + + network: + # Controls the default host the broker should bind to. Can be overwritten on a + # per binding basis for client, management and replication + # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_HOST. + host: 0.0.0.0 + + data: + # Specify a directory in which data is stored. + # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_DIRECTORY. + directory: data + # The size of data log segment files. + # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_LOGSEGMENTSIZE. + logSegmentSize: 128MB + # How often we take snapshots of streams (time unit) + # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_SNAPSHOTPERIOD. + snapshotPeriod: 15m + + cluster: + # Specifies the Zeebe cluster size. + # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_CLUSTERSIZE. + clusterSize: 1 + # Controls the replication factor, which defines the count of replicas per partition. + # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_REPLICATIONFACTOR. + replicationFactor: 1 + # Controls the number of partitions, which should exist in the cluster. + # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_PARTITIONSCOUNT. + partitionsCount: 1 + + threads: + # Controls the number of non-blocking CPU threads to be used. + # WARNING: You should never specify a value that is larger than the number of physical cores + # available. Good practice is to leave 1-2 cores for ioThreads and the operating + # system (it has to run somewhere). For example, when running Zeebe on a machine + # which has 4 cores, a good value would be 2. + # This setting can also be overridden using the environment variable ZEEBE_BROKER_THREADS_CPUTHREADCOUNT + cpuThreadCount: 2 + # Controls the number of io threads to be used. + # This setting can also be overridden using the environment variable ZEEBE_BROKER_THREADS_IOTHREADCOUNT + ioThreadCount: 2 + + exporters: + #elasticsearch: + #className: io.camunda.zeebe.exporter.ElasticsearchExporter + hazelcast: + className: io.zeebe.hazelcast.exporter.HazelcastExporter + jarPath: exporters/zeebe-hazelcast-exporter-1.0.1-jar-with-dependencies.jar diff --git a/templates/zeebe/service.yaml b/templates/zeebe/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1414f831d1705a438e64744ce5adc5aa9858879f --- /dev/null +++ b/templates/zeebe/service.yaml @@ -0,0 +1,31 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: zeebe + labels: + app.kubernetes.io/name: zeebe + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: zeebe +spec: + ports: + - name: gateway + port: 26500 + protocol: TCP + targetPort: 26500 + - name: cm + port: 26501 + protocol: TCP + targetPort: 26501 + - name: api + port: 26502 + protocol: TCP + targetPort: 26502 + - name: exporter + port: 5701 + protocol: TCP + targetPort: 5701 + selector: + app: zeebe \ No newline at end of file diff --git a/templates/zeebe/statefulset.yaml b/templates/zeebe/statefulset.yaml new file mode 100644 index 0000000000000000000000000000000000000000..470b5dfcd640cd33031fb235bf1d79c46a6795f2 --- /dev/null +++ b/templates/zeebe/statefulset.yaml @@ -0,0 +1,83 @@ +--- +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: zeebe + labels: + app.kubernetes.io/name: zeebe + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: zeebe +spec: + serviceName: zeebe + selector: + matchLabels: + app: zeebe + {{- if .Values.zeebe.persistence.enabled }} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi + storageClassName: "{{ .Values.zeebe.persistence.storageClass }}" + volumeMode: Filesystem + {{- end }} + template: + metadata: + labels: + app.kubernetes.io/name: zeebe + helm.sh/chart: '{{ template "approval-process.chart" . }}' + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app: zeebe + spec: + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: application + configMap: + name: zeebe-application + items: + - key: application.yaml + path: application.yaml + containers: + - name: zeebe + {{- if contains "/" .Values.zeebe.image.repository }} + image: "{{ .Values.zeebe.image.repository }}:{{ .Values.zeebe.image.tag }}{{ include "beagle.imageArch" . }}" + {{- else }} + image: "{{ .Values.global.hub }}/{{ .Values.zeebe.image.repository }}:{{ .Values.zeebe.image.tag }}{{ include "beagle.imageArch" . }}" + {{- end }} + imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + ports: + - containerPort: 26500 + name: gateway + protocol: TCP + - containerPort: 26501 + name: cm + protocol: TCP + - containerPort: 26502 + name: api + protocol: TCP + - containerPort: 5701 + name: exporter + protocol: TCP + volumeMounts: + - name: localtime + mountPath: /etc/localtime + - name: application + mountPath: /usr/local/zeebe/config/application.yaml + subPath: application.yaml + {{- if .Values.zeebe.persistence.enabled }} + - name: data + mountPath: /usr/local/zeebe/data + {{- end }} + + + + diff --git a/values.yaml b/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..79a8622a0888923ff7fad80f2c1a88e797be4e66 --- /dev/null +++ b/values.yaml @@ -0,0 +1,142 @@ +# 全局配置 +global: + # 镜像仓库 + hub: hub.wodcloud.com/approval-process + # 镜像拉取策略 + imagePullPolicy: IfNotPresent + # CPU 架构 + imageArch: amd64 + # 域名 + ingressroute: + enabled: true + host: apaas.wodcloud.local + +approvalForm: + image: + repository: "hub.wodcloud.com/workflow/approval-form" + tag: "1.0.0-form-alpha" + resources: + limits: + cpu: 0.5 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + +approvalProcessEngine: + image: + repository: "approval-process-engine" + tag: "2.5.1-apass5" + conf: + apiTokenKey: API_AUTH_TOKEN + apiTokenValue: c78aa1d9-4ab4-4c9c-97cc-a9a548ea38aa + dbDns1: 'jdbc:postgresql://postgres.workflow:5432/approval-apass5-demo?stringtype=unspecified&TimeZone=Asia/Shanghai' + dbPasswd1: spaceIN511 + dbUser1: postgres + dbDns2: 'jdbc:postgresql://postgres.workflow:5432/approva-form-apass5-demo?stringtype=unspecified&TimeZone=Asia/Shanghai' + dbPasswd2: spaceIN511 + dbUser2: postgres + redisDatabase: '0' + redisHost: apaas-redis.apaas-v5-demo + redisPasswd: '' + redisPort: '6379' + #zeebe gatewa的服务地址 + zeebeAddress: 'zeebe.apaas-v5-demo:26500' + resources: + limits: + cpu: 0.5 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + +approvalProcessForm: + image: + repository: "approval-process-form" + tag: "2.5.0-apass5" + conf: + #数据库地址 + dbDns: jdbc:postgresql://postgres.workflow:5432/approva-form-apass5-demo?stringtype=unspecified&TimeZone=Asia/Shanghai + #数据库用户名 + dbUser: postgres + #数据库密码 + dbPasswd: spaceIN511 + #redis地址 + redisHost: apaas-redis.apaas-v5 + #redis端口 + redisPort: "6379" + #redis数据库 + redisDatabase: "0" + #redis密码 + redisPasswd: + resources: + limits: + cpu: 0.5 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + +approvalUi: + image: + repository: "hub.wodcloud.com/workflow/approval-ui" + tag: "2.5-alpha" + +processImporter: + image: + repository: "hub.wodcloud.com/workflow/process-importer" + tag: "v1.5-alpha" + conf: + #workflow数据库地址 + dbDns: jdbc:postgresql://postgres.workflow:5432/approval-apass5-demo?stringtype=unspecified&TimeZone=Asia/Shanghai + #workflow数据库用户名 + dbUser: postgres + #workflow数据库密码 + dbPasswd: spaceIN511 + #zeebe exporter服务地址 + zeebeAddress: "zeebe.apaas-v5-demo:5701" + resources: + limits: + cpu: 0.5 + memory: 1Gi + requests: + cpu: 0.5 + memory: 256Mi + +zeebe: + image: + repository: "registry.cn-qingdao.aliyuncs.com/wod/zeebe" + tag: "1.1.2-exporter" + persistence: + enabled: true + storageClass: hostpath + +redis: + enabled: false + image: + repository: registry.cn-qingdao.aliyuncs.com/wod/redis + tag: 6.0.9 + #redis的config + conf: + port: 'port 6379' + db: 'databases 16' + maxmem: 'maxmemory 256mb' + apl: 'appendonly yes' + #redis的密码,不写即为空 + passwd: + #持久化存储类 + storageClassName: "hostpath" + +postgresql: + enabled: false + image: + repository: postgres + tag: 13.5 + initImage: + repository: busybox + tag: 1.33 + #数据库密码 + POSTGRES_PASSWORD: "passwd123" + #持久化存储类 + storageClassName: "hostpath" +