devops update

This commit is contained in:
gameloader 2025-02-13 15:34:44 +08:00
parent e2a41d0dcc
commit 36ebe60b0c

View File

@ -15,6 +15,94 @@ draft: false
minikube start 镜像拉取问题, minikube start 镜像拉取问题,
### k8s secret 及 helm chart问题
在 Kubernetes 的 Secret 资源中data 字段下的每个键key对应的值都应该是 整个内容 的 base64 编码,而不是对内容的每个部分分别进行 base64 编码。
如以下的helm chart中定义的secret.yaml
```yaml
apiVersion: v1
kind: Secret
metadata:
name: {{ include "rag-with-es.fullname" . }}-rag-config
labels:
{{- include "rag-with-es.labels" . | nindent 4 }}
type: Opaque
data:
config.yaml: |
{{- with .Values.rag.config }}
ES_HOST: {{ printf "http://%s-es-svc:%d" (include "rag-with-es.fullname" $) $.Values.es.service.port | b64enc }}
ES_USER: {{ .esUser | b64enc }}
ES_PASSWORD: {{ $.Values.es.config.elasticPassword | b64enc }}
ES_INDEX: {{ .esIndex | b64enc }}
EMBEDDING_API_BASE: {{ .embeddingApiBase | b64enc }}
EMBEDDING_API_KEY: {{ .embeddingApiKey | b64enc }}
EMBEDDING_API_MODEL: {{ .embeddingApiModel | b64enc }}
RERANKER_API_BASE: {{ .rerankerApiBase | b64enc }}
RERANKER_API_KEY: {{ .rerankerApiKey | b64enc }}
RERANKER_API_MODEL: {{ .rerankerApiModel | b64enc }}
{{- end }}
```
这个secret文件如果使用helm 部署时会显示base64解码错误错误原因就在于config.yaml对应的值应该是一个完整的base64字符串而当前的形式会导致仅ES_HOST等键对应的值被编码ES_HOST等还是明文故不能正常进行base64解析。正确的做法应为在\_helper.tbl中预定义config.yaml对应的模板然后将整个模板作为一个整体用base64编码如下
```txt
// _helper.tbl
{{/*
生成 config.yaml 的内容
*/}}
{{- define "rag-with-es.config" -}}
{{- with .Values.rag.config }}
ES_HOST: {{ printf "http://%s-es-svc:%d" (include "rag-with-es.fullname" $) $.Values.es.service.port }}
ES_USER: {{ .esUser }}
ES_PASSWORD: {{ $.Values.es.config.elasticPassword }}
ES_INDEX: {{ .esIndex }}
EMBEDDING_API_BASE: {{ .embeddingApiBase }}
EMBEDDING_API_KEY: {{ .embeddingApiKey }}
EMBEDDING_API_MODEL: {{ .embeddingApiModel }}
RERANKER_API_BASE: {{ .rerankerApiBase }}
RERANKER_API_KEY: {{ .rerankerApiKey }}
RERANKER_API_MODEL: {{ .rerankerApiModel }}
{{- end }}
{{- end -}}
```
```yaml
apiVersion: v1
kind: Secret
metadata:
name: {{ include "rag-with-es.fullname" . }}-rag-config
labels:
{{- include "rag-with-es.labels" . | nindent 4 }}
type: Opaque
data:
config.yaml: {{ include "rag-with-es.config" . | b64enc }}
```
这样即可正常使用helm部署。
另外可以将secret定义中的data改为使用stringData。stringData 是 Kubernetes Secret 资源中的一个可选字段,它允许用户以明文字符串的形式直接提供 Secret 数据,而不需要像 data 字段那样使用 Base64 编码。
当 Secret 被创建或更新时stringData 中的内容会自动被转换为 Base64 编码, 转换后的内容会存储在 data 字段中,当读取 Secret 时,只能看到 data 字段stringData 不会出现在 GET 操作的结果中。不需要手动进行 Base64 编码,特别适合在配置文件中直接写入明文值,对于包含多行内容的配置文件特别有用
```yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
data:
username: YWRtaW4= # Base64 编码
stringData:
config.yaml: | # 多行配置
apiUrl: "https://api.example.com"
timeout: 3000
retries: 5
```
## 修复不同节点使用内网ip不互通的问题(异地组网) ## 修复不同节点使用内网ip不互通的问题(异地组网)
### 修改master节点flannel配置文件 ### 修改master节点flannel配置文件
@ -211,3 +299,31 @@ docker官方提供了傻瓜式安装脚本为你做好所有工作免去
如使用阿里云镜像: 如使用阿里云镜像:
> curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun > curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
## k3s 入门手册
### 安装k3s
K3s 提供了一个安装脚本,可以方便地将其作为服务安装在基于 systemd 或 openrc 的系统上。该脚本可在 https://get.k3s.io 获得。要使用这种方法安装 K3s只需运行
> curl -sfL https://get.k3s.io | sh -
备注
中国用户,可以使用以下方法加速安装:
> curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL
### 配置k3s镜像拉取镜像
参考 [k3s镜像配置](https://docs.k3s.io/zh/installation/private-registry)
可供参考的registries.yaml为
```yaml
mirrors:
docker.io:
endpoint:
- "docker-0.unsee.tech"
- "docker.1panel.live"
- "hub.fast360.xyz"
```