
rustrial/k8s-gitops-secrets-controllerk8s-gitops-secrets是一个专为Kubernetes设计的GitOps密钥控制器,旨在通过GitOps工作流自动化管理Kubernetes集群中的密钥资源。该控制器能够从指定的Git仓库拉取密钥配置,同步到Kubernetes Secrets,并在Git仓库中的密钥发生变更时自动更新集群内的密钥,确保密钥管理的一致性、可追溯性和安全性。
创建部署清单(deployment.yaml):
yamlapiVersion: apps/v1 kind: Deployment metadata: name: k8s-gitops-secrets-controller namespace: gitops-system spec: replicas: 1 selector: matchLabels: app: k8s-gitops-secrets template: metadata: labels: app: k8s-gitops-secrets spec: containers: - name: controller image: rustrial/k8s-gitops-secrets:latest env: - name: GIT_REPO_URL value: "[***]" # Git仓库URL - name: GIT_BRANCH value: "main" # 目标分支 - name: SYNC_INTERVAL value: "300s" # 同步间隔(默认5分钟) - name: TARGET_NAMESPACE value: "default" # 目标命名空间(留空表示所有命名空间) - name: GIT_CREDENTIALS_SECRET value: "git-creds" # 存储Git访问凭证的Kubernetes Secret名称
应用部署清单:
bashkubectl apply -f deployment.yaml -n gitops-system
bash# 添加Helm仓库(如项目提供) helm repo add k8s-gitops-secrets [***] helm repo update # 安装控制器 helm install k8s-gitops-secrets k8s-gitops-secrets/k8s-gitops-secrets \ --namespace gitops-system \ --create-namespace \ --set git.repoUrl=[***] \ --set git.branch=main \ --set sync.interval=300s \ --set targetNamespace=default
| 参数名 | 描述 | 类型 | 默认值 |
|---|---|---|---|
GIT_REPO_URL | Git仓库URL(支持HTTP/HTTPS/SSH) | 字符串 | 无(必填) |
GIT_BRANCH | 同步目标Git分支 | 字符串 | main |
GIT_CREDENTIALS_SECRET | 存储Git凭证的Kubernetes Secret名称 | 字符串 | 无 |
SYNC_INTERVAL | 密钥同步间隔(格式:"300s"、"5m") | 字符串 | "300s" |
TARGET_NAMESPACE | 目标Kubernetes命名空间(留空表示所有) | 字符串 | 无 |
SECRET_LABELS | 为创建的Secrets添加标签(JSON格式) | 字符串 | {} |
CONFLICT_STRATEGY | 冲突处理策略("overwrite"/"retain") | 字符串 | "overwrite" |
在Git仓库中创建密钥配置目录(如secrets/),添加密钥文件:
yaml# secrets/prod-db-secret.yaml apiVersion: v1 kind: Secret metadata: name: prod-db-credentials namespace: production type: Opaque data: username: YWRtaW4= # base64编码的"admin" password: cGFzc3dvcmQxMjM= # base64编码的"password123"
bash# 部署控制器后检查Pod状态 kubectl get pods -n gitops-system # 验证密钥是否同步 kubectl get secret prod-db-credentials -n production -o yaml
修改Git仓库中的prod-db-secret.yaml并提交,控制器将在同步间隔内自动更新Kubernetes Secret:
bash# 查看更新后的密钥 kubectl get secret prod-db-credentials -n production -o jsonpath='{.data.password}' | base64 -d
完整文档请参考官方项目地址:[***]


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务