core服务的DNS名称是动态的,无法在adapter服务的配置文件中提前确定,因此在部署helm chart时动态生成adapter的配置文件

This commit is contained in:
zhangxinhui02
2025-08-20 02:32:03 +08:00
parent df3ebc07ee
commit 50140354cf
9 changed files with 151 additions and 23 deletions

View File

@@ -1,8 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-maibot-adapter
namespace: {{ .Release.Namespace }}
data:
config.toml: |
{{ .Values.config.adapter_config | nindent 4 }}

View File

@@ -1,8 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-maibot-core-scripts
namespace: {{ .Release.Namespace }}
data:
volume-linker.sh: |
{{ .Files.Get "files/volume-linker.sh" | nindent 4 }}

View File

@@ -70,7 +70,7 @@ spec:
items:
- key: volume-linker.sh
path: volume-linker.sh
name: {{ .Release.Name }}-maibot-core-scripts
name: {{ .Release.Name }}-maibot-scripts
name: scripts
- configMap:
items:

View File

@@ -0,0 +1,50 @@
# 动态生成adapter配置文件的configmap的job仅会在部署时运行一次
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-adapter-cm-generator
namespace: {{ .Release.Namespace }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
spec:
backoffLimit: 0
template:
spec:
serviceAccountName: {{ .Release.Name }}-adapter-cm-generator
restartPolicy: Never
containers:
- name: python
image: python:slim
workingDir: /app
command:
- sh
args:
- adapter-pip-installer.sh
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: RELEASE_NAME
value: {{ .Release.Name }}
- name: DATA_B64
value: {{ .Values.config.adapter_config | b64enc }} # 将配置文件编码为base64从环境变量注入
volumeMounts:
- mountPath: /app/adapter-pip-installer.sh
name: scripts
readOnly: true
subPath: adapter-pip-installer.sh
- mountPath: /app/adapter-cm-generator.py
name: scripts
readOnly: true
subPath: adapter-cm-generator.py
volumes:
- name: scripts
configMap:
name: {{ .Release.Name }}-maibot-scripts
items:
- key: adapter-pip-installer.sh
path: adapter-pip-installer.sh
- key: adapter-cm-generator.py
path: adapter-cm-generator.py

View File

@@ -0,0 +1,39 @@
# 动态生成adapter配置文件的configmap所需要的rbac授权
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}-adapter-cm-generator
namespace: {{ .Release.Namespace }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ .Release.Name }}-adapter-cm-gen-role
namespace: {{ .Release.Namespace }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
rules:
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "list", "create", "update", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-adapter-cm-gen-role-binding
namespace: {{ .Release.Namespace }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-adapter-cm-generator
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: {{ .Release.Name }}-adapter-cm-gen-role
apiGroup: rbac.authorization.k8s.io

View File

@@ -0,0 +1,15 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-maibot-scripts
namespace: {{ .Release.Namespace }}
data:
# pre-install hook
adapter-pip-installer.sh: |
{{ .Files.Get "files/adapter-pip-installer.sh" | nindent 4 }}
adapter-cm-generator.py: |
{{ .Files.Get "files/adapter-cm-generator.py" | nindent 4 }}
# core
volume-linker.sh: |
{{ .Files.Get "files/volume-linker.sh" | nindent 4 }}