DevOps云原生后端【免费下载链接】diggerDigger is an open source IaC orchestration tool. Digger allows you to run IaC in your existing CI pipeline ⚡️项目地址https://gitcode.com/gh_mirrors/di/digger点击查看免费下载本文基于 digger 仓库 self-hosting/kubernetes/helm-charts 目录中的官方 Helm Charts 文档整理而成。OpenTaco 是 Digger 基础设施即代码IaC编排平台的完整形态通过一套 Helm Charts 即可在 Kubernetes 集群中部署 Terraform 编排、漂移检测、状态管理与 Web 前端等全部服务。读完本文你将掌握从 OCI Registry 安装 opentaco umbrella chart、配置 Cloud SQL 与各类密钥、完成测试/生产环境部署及故障排查的完整实战路径。架构总览一个 Umbrella Chart 编排六大服务OpenTaco 的部署体系采用 Helmumbrella chart聚合 Chart模式顶层opentaco图表本身不包含业务容器而是通过Chart.yaml中声明的 dependencies 将多个独立子 Chart 聚合为一个可整体安装的发布单元。查看 opentaco/Chart.yaml 可以看到其依赖声明apiVersion: v2 name: opentaco description: OpenTaco - Complete Infrastructure-as-Code platform deployment type: application version: 0.1.2-public appVersion: 0.1.0 dependencies: - name: taco-orchestrator # Terraform 编排后端 version: 0.1.2-public repository: oci://ghcr.io/diggerhq/helm-charts condition: taco-orchestrator.enabled - name: taco-statesman # IaC 状态管理 version: 0.1.2-public condition: taco-statesman.enabled - name: taco-sidecar # 沙箱 sidecar 服务 version: 0.1.4-public condition: taco-sidecar.enabled - name: taco-token-service # API Token 管理 version: 0.1.2-public condition: taco-token-service.enabled - name: taco-drift # 漂移检测 version: 0.1.2-public condition: taco-drift.enabled - name: taco-ui # React 前端 version: 0.1.3-public condition: taco-ui.enabled各子 Chart 均通过condition字段与 values 文件中的xxx.enabled开关联动默认全部启用。每个子 Chart 都提供独立的 Deployment、Service、Ingress 模板并支持useExistingSecret引用外部预创建的 Secret详见下文密钥管理。整套平台的端口规划如下服务端口职责taco-orchestratordigger-backend3000Terraform 编排后端处理 GitHub 事件与运行任务taco-drift3004基础设施漂移检测taco-statesman8080IaC 状态管理对接 Cloud SQLtaco-ui3030Web 前端taco-token-service8081API Token 签发与管理taco-sidecar9100E2B 沙箱执行 sidecar注意官方文档中4 个服务的描述是早期简版以当前仓库为准umbrella chart 实际编排 6 个子 Chart。安装完成后opentaco/templates/NOTES.txt 会在终端打印每个已启用组件的状态与访问方式例如未开启 Ingress 时会提示使用kubectl port-forward svc/taco-ui 3030:3030访问前端。快速开始从 OCI Registry 一键安装Helm Charts 的开发与发布分离代码在 digger 主仓库中维护但发布到 GitHub Container RegistryGHCR的 OCI Registry 供用户直接安装。快速安装步骤如下# 1. 获取并配置 values 文件详见下方部署前配置清单 # 该文件即仓库中的 opentaco/values-test.yaml.example # 将占位符替换为你的 GCP 项目 ID 与相关设置 mv values-test.yaml.example values-test.yaml # 2. 创建命名空间 kubectl create namespace opentaco # 3. 创建四个 Secret详见密钥管理章节 kubectl create secret generic ui-secrets \ --from-env-file.secrets/ui.env -n opentaco kubectl create secret generic taco-orchestrator-secrets \ --from-env-file.secrets/digger-backend.env -n opentaco kubectl create secret generic statesman-secrets \ --from-env-file.secrets/statesman.env -n opentaco kubectl create secret generic drift-secrets \ --from-env-file.secrets/drift.env -n opentaco # 4. 从 OCI Registry 安装 helm install opentaco oci://ghcr.io/diggerhq/helm-charts/opentaco \ -f values-test.yaml \ -n opentaco公共镜像托管在ghcr.io/diggerhq下默认无需认证即可拉取imagePullPolicy: IfNotPresent这也是values-test.yaml.example中注释imagePullSecrets not needed for public GHCR images的原因。若使用私有镜像仓库则需要在global.imagePullSecrets中配置拉取凭据。部署前配置清单替换占位符在真正部署前必须逐项检查 values 文件中的占位符。values-test.yaml.example与values-production.yaml.example中所有YOUR-、example.com、CHANGE THIS标记都需要替换为真实值。1. Cloud SQL 配置statesman 使用 Cloud SQL 时cloudSql: enabled: true instanceConnectionName: YOUR-PROJECT-ID:YOUR-REGION:YOUR-INSTANCE # ❌ CHANGE THIS credentialsSecret: cloudsql-credentials serviceAccount: cloudsql-sa替换规则YOUR-PROJECT-ID→ GCP 项目 ID例如my-prod-projectYOUR-REGION→ Cloud SQL 实例所在区域例如us-central1YOUR-INSTANCE→ Cloud SQL 实例名例如opentaco-postgres完整示例my-prod-project:us-central1:opentaco-postgres。2. 镜像仓库可选默认公共 GHCRglobal: imageRegistry: ghcr.io/diggerhq # ✅ 公共仓库无需认证 # 或使用你的私有仓库 # imageRegistry: us-central1-docker.pkg.dev/YOUR-PROJECT/YOUR-REPO公共仓库是推荐默认项只有使用自定义构建的镜像时才需切换为私有仓库路径。从模板实现看如 taco-orchestrator/templates/backend-deployment.yaml镜像地址的渲染逻辑是per-chart image.registry → global.imageRegistry → ghcr.io/diggerhq三级回退最后拼接为仓库/镜像名:tag。3. UI Ingress 配置生产环境自定义域名taco-ui: ui: ingress: enabled: false # 生产环境设为 true hosts: - host: app.opentaco.example.com # ❌ CHANGE THIS paths: - path: / pathType: Prefix tls: - secretName: opentaco-ui-tls hosts: - app.opentaco.example.com # ❌ CHANGE THIS将app.opentaco.example.com替换为你的真实域名并确保集群中已安装 Ingress Controller下文Ingress 设置。taco-ui/templates/ingress.yaml 展示了该配置的渲染方式ingressClassName、tls与rules均直接来自上述 values。生产示例中还常搭配cert-manager.io/cluster-issuer: letsencrypt-prod注解自动签发 TLS 证书。4. 服务副本数可选默认 1digger-backend: digger: replicaCount: 1 # 生产环境可增至 2 taco-statesman: taco: replicaCount: 1 # 生产环境可增至 2测试/开发环境保留 1 个副本即可生产环境建议提升到 2 以保障高可用。values-production.yaml.example中 orchestration、statesman、drift、ui 均设置为replicaCount: 2并配置了资源配额requests 与 limits。5. 快速校验检查残留占位符grep -E YOUR-|example\.com|CHANGE THIS opentaco/values-test.yaml只要该命令返回任何结果就说明还有占位符未替换部署前必须处理干净。密钥管理从示例文件到 Kubernetes SecretOpenTaco 的设计原则是敏感配置不进 values 文件而是通过 Kubernetes Secret 注入。每个子 Chart 默认secret.useExistingSecret: trueDeployment 通过envFrom.secretRef引用外部 Secret见 taco-statesman/templates/deployment.yaml。1. 复制示例文件仓库提供了完整的示例 env 文件目录cp -r secrets-example/ .secrets/2. 填充真实凭据.secrets/目录下共四个文件分别对应四个 Secret.secrets/ ├── digger-backend.env # GitHub App、数据库、Sentry 等→ taco-orchestrator-secrets ├── drift.env # GitHub App、数据库连接→ drift-secrets ├── statesman.env # Auth0、S3、PostgreSQL/Cloud SQL→ statesman-secrets └── ui.env # WorkOS、后端服务 URL→ ui-secrets各文件关键配置项完整示例见 secrets-example/GitHub App 凭据digger-backend.envGITHUB_APP_ID、GITHUB_APP_CLIENT_ID、GITHUB_APP_CLIENT_SECRET、GITHUB_APP_PRIVATE_KEY_BASE64Base64 编码的私钥、GITHUB_WEBHOOK_SECRET以及DATABASE_URL、DIGGER_ENCRYPTION_SECRET32 字符、DIGGER_INTERNAL_SECRET50 字符、DIGGER_LICENSE_KEY、PUBLIC_BASE_URL等Statesmanstatesman.envS3 存储OPENTACO_S3_BUCKET/OPENTACO_S3_REGION/OPENTACO_S3_PREFIX、Auth0 认证OPENTACO_AUTH_ISSUER/OPENTACO_AUTH_CLIENT_ID/OPENTACO_AUTH_CLIENT_SECRET/OPENTACO_AUTH_AUTH_URL/OPENTACO_AUTH_TOKEN_URL、AWS 凭据AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_REGION/AWS_ENDPOINT可用于 Tigris 等 S3 兼容存储、JWT 配置OPENTACO_TOKENS_KID/OPENTACO_TOKENS_ACCESS_TTL/OPENTACO_TOKENS_REFRESH_TTL、OPENTACO_PUBLIC_BASE_URL、OPENTACO_OAUTH_STATE_KEY32 字符随机串用于 PKCE 流程 OAuth state 加密、OPENTACO_SECRET_KEY签名 Terraform Cloud 远端 backend 的上传/下载 URL必填Driftdrift.envDATABASE_URL、DIGGER_APP_URL、DIGGER_DRIFT_REPORTER_HOSTNAME公共基础 URL、DIGGER_HOSTNAME集群内 drift 服务自调用地址如http://opentaco-taco-drift:3004、DIGGER_WEBHOOK_SECRET32 字符、GITHUB_APP_PRIVATE_KEY_BASE64UIui.envWorkOS 认证WORKOS_API_KEY/WORKOS_CLIENT_ID/WORKOS_COOKIE_PASSWORD/WORKOS_WEBHOOK_SECRET/WORKOS_REDIRECT_URI、ALLOWED_HOSTS逗号分隔如your-domain.com,.ngrok-free.dev,.sslip.io,localhost、PUBLIC_URL、各后端 URL 及其 webhook 密钥3. 创建 Kubernetes Secretkubectl create secret generic ui-secrets \ --from-env-file.secrets/ui.env -n opentaco kubectl create secret generic taco-orchestrator-secrets \ --from-env-file.secrets/digger-backend.env -n opentaco kubectl create secret generic statesman-secrets \ --from-env-file.secrets/statesman.env -n opentaco kubectl create secret generic drift-secrets \ --from-env-file.secrets/drift.env -n opentaco4. 更新 SecretSecret 创建后无法直接修改内容更新流程是删除重建 滚动重启 Pod# 删除旧 Secret kubectl delete secret statesman-secrets -n opentaco # 用新值重建 kubectl create secret generic statesman-secrets \ --from-env-file.secrets/statesman.env -n opentaco # 重启 Pod 以加载新环境变量 kubectl delete pods -l app.kubernetes.io/namestatesman -n opentacoCloud SQL 设置statesman 的数据库后端Statesman 使用 Google Cloud SQL 作为数据库backend 与 drift 则既可使用外部数据库Supabase 等也可复用 Cloud SQL。Cloud SQL 的连接方式不是直连公网而是通过cloud-sql-proxy sidecar 容器将实例暴露到 Pod 的localhost:5432。1. 创建 Cloud SQL 实例gcloud sql instances create taco-postgres \ --database-versionPOSTGRES_15 \ --tierdb-f1-micro \ --regionus-central1 \ --database-flagsmax_connections1002. 创建数据库gcloud sql databases create taco \ --instancetaco-postgres3. 创建服务账号并授权# 为 Cloud SQL proxy 创建服务账号 gcloud iam service-accounts create cloudsql-sa \ --display-nameCloud SQL Proxy Service Account # 授予 Cloud SQL Client 角色 gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --memberserviceAccount:cloudsql-saYOUR_PROJECT_ID.iam.gserviceaccount.com \ --roleroles/cloudsql.client # 创建并下载密钥 gcloud iam service-accounts keys create cloudsql-key.json \ --iam-accountcloudsql-saYOUR_PROJECT_ID.iam.gserviceaccount.com4. 创建 Cloud SQL 凭据 Secretkubectl create secret generic cloudsql-credentials \ --from-filecredentials.jsoncloudsql-key.json \ -n opentaco5. 在 values 文件中启用 Cloud SQLstatesman: enabled: true taco: cloudSql: enabled: true instanceConnectionName: PROJECT_ID:REGION:INSTANCE_NAME # 例如 dev-XXXXXXX:us-west2:taco-postgres credentialsSecret: cloudsql-credentials从模板源码taco-statesman/templates/deployment.yaml可以看到启用 Cloud SQL 后容器列表会追加cloud-sql-proxy镜像gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.0以--port5432监听本地端口并将cloudsql-credentialsSecret 中的credentials.json挂载到/secrets/cloudsql目录通过GOOGLE_APPLICATION_CREDENTIALS环境变量注入。taco-orchestrator 的 backend-deployment.yaml 中也有完全相同的 sidecar 模式。6. 设置 statesman.env 的数据库连接# Cloud SQL 通过 proxy sidecar 使用 localhost 访问 OPENTACO_POSTGRES_HOSTlocalhost OPENTACO_POSTGRES_PORT5432 OPENTACO_POSTGRES_USERpostgres OPENTACO_POSTGRES_PASSWORDYOUR_DB_PASSWORD OPENTACO_POSTGRES_DBNAMEtaco OPENTACO_QUERY_BACKENDpostgresOPENTACO_QUERY_BACKEND可选值包括postgres、mssql、sqlite等production values 中sslmode通常设为disable因为 SSL 由 proxy 处理。Token Service 同样通过 Cloud SQL 复用同一实例database.backend: postgres、host: 127.0.0.1、用户token_svc、库名token_service。部署与验证测试环境cd opentaco helm install opentaco . -f values-test.yaml -n opentaco生产环境# 审查并定制生产 values vim opentaco/values-production.yaml # 部署 helm install opentaco . -f values-production.yaml -n opentaco生产环境与测试环境的典型差异参考 values-production.yaml.example副本数提升至 2、配置资源 requests/limits、开启 UI Ingress含 TLS 与 cert-manager 注解、statesman 存储切换为s3并配置secretKey、drift 开启cronjobs.enabled: true、networkPolicies.enabled: true等。验证部署# 检查 Pod 状态 kubectl get pods -n opentaco # 查看日志 kubectl logs -f deployment/opentaco-taco-statesman -n opentaco -c statesman # 本地访问 UI kubectl port-forward svc/opentaco-taco-ui 3030:3030 -n opentaco open http://localhost:3030仓库为子 Chart 提供了 helm-unittest 测试用例如 taco-statesman/tests/deployment_test.yaml、taco-orchestrator/tests/deployments_test.yaml可用helm unittest chart本地渲染验证模板输出是否符合预期。服务间通信Kubernetes DNS 与 UI 环境变量各服务通过 Kubernetes 集群内 DNS 互相访问# 集群内部地址 http://opentaco-taco-orchestrator-web:3000 http://opentaco-taco-drift:3004 http://opentaco-taco-statesman:8080 http://opentaco-taco-ui:3030这些 URL 配置在ui.env中ORCHESTRATOR_BACKEND_URLhttp://opentaco-taco-orchestrator-web:3000 DRIFT_REPORTING_BACKEND_URLhttp://opentaco-taco-drift:3004 STATESMAN_BACKEND_URLhttp://opentaco-taco-statesman:8080服务名的拼接规则为release-name-chart-name[-web]:port。其中 orchestrator 的 Service 名为release-taco-orchestrator-web见 backend-service.yaml。如果以opentaco之外的名字作为 release 名安装必须同步修改这些主机名否则 UI 将无法访问后端。opentaco/values.yaml中taco-ui.ui.env.backends段落也内置了相同的默认值。升级与更新# 更新依赖 cd opentaco helm dependency update # 升级部署 helm upgrade opentaco . -f values-test.yaml -n opentaco # 需要时强制重建 Pod kubectl delete pods --all -n opentaco由于子 Chart 依赖通过 OCI 仓库拉取升级前执行helm dependency update可确保拉取最新版本的依赖图表。故障排查Pod 无法启动# 检查 Pod 状态 kubectl get pods -n opentaco # 查看事件 kubectl describe pod POD_NAME -n opentaco # 查看日志 kubectl logs POD_NAME -n opentacoSecret 问题# 列出 Secret kubectl get secrets -n opentaco # 验证 Secret 内容列出所有 key kubectl get secret taco-orchestrator-secrets -n opentaco -o jsonpath{.data} | jq keysCloud SQL 连接问题# 查看 Cloud SQL proxy sidecar 日志 kubectl logs POD_NAME -n opentaco -c cloud-sql-proxy # 核对实例连接名 gcloud sql instances describe INSTANCE_NAME --formatvalue(connectionName)Chart 结构与外部依赖服务Chart 目录结构self-hosting/kubernetes/helm-charts/ ├── opentaco/ # Umbrella chart │ ├── Chart.yaml │ ├── values.yaml # 默认值 │ ├── values-test.yaml.example # 测试环境模板 │ ├── values-production.yaml.example # 生产环境模板 │ └── values.platform-reference.yaml ├── digger-backend/ # 独立版 Terraform 编排 Chart含可选内置 PostgreSQL ├── taco-orchestrator/ # Terraform 编排 ├── taco-statesman/ # 状态管理 ├── taco-drift/ # 漂移检测 ├── taco-ui/ # Web 前端 ├── taco-token-service/ # Token 服务 ├── taco-sidecar/ # 沙箱 sidecar ├── opentaco-platform-reference/ # 平台参考实现Traefik CNPG MinIO └── secrets-example/ # 示例密钥文件必需的云服务与凭据外部服务用途GitHub App仓库访问与 WebhooksWorkOSUI 认证或配置替代方案Auth0Statesman 认证或配置替代方案S3 兼容存储状态与产物存储Cloud SQL 或 PostgreSQL数据库配置文件速查表文件用途values.yaml所有服务的默认配置values-test.yaml测试环境最小配置values-production.yaml生产就绪设置.secrets/*.env环境特定密钥不入库源码级补充几个值得留意的实现细节Orchestrator 的 Job 管理 RBACtaco-orchestrator 需要以 Kubernetes Job 的方式在集群内派生运行任务因此 rbac.yaml 为其创建了job-managerRole授予对batch/jobs、pods、pods/log的读写与查看权限并通过 RoleBinding 绑定到 ServiceAccount。生产环境若使用 GKE Workload Identity可在digger.serviceAccount.annotations与workloadIdentity中配置 GCP 服务账号映射。Drift 的定时处理 CronJob当taco-drift.drift.cronjobs.enabled: true时cronjobs.yaml 会创建两个每分钟执行一次的 CronJobprocess-drift与process-notifications使用curlimages/curl镜像以DIGGER_WEBHOOK_SECRET作 Bearer 认证分别调用 drift 服务的/_internal/process_drift与/_internal/process_notifications接口concurrencyPolicy: Forbid防止任务重叠。平台参考 Chartopentaco-platform-reference该 Chart 是快速验证 OpenTaco 的参考实现安装 Traefik Ingress、CloudNativePG 操作符与共享 CNPG 集群为 orchestrator/statesman/token 三服务创建独立数据库与凭据、MinIO StatefulSet默认minio.opentaco.svc.cluster.local:9000bucketopentaco及 bucket 初始化 Job。官方文档明确说明它不是生产蓝图的替代品——生产环境应直接使用opentacoumbrella chart并按团队标准自行管理 Ingress、数据库生命周期与对象存储。密钥注入的两种模式所有子 Chart 均支持两种配置方式——在 values 中直接填写字段由 Chart 自动生成 SecretuseExistingSecret: false或引用预创建 SecretuseExistingSecret: true生产推荐。后者的优势是 Secret 独立于 Helm release 生命周期更新凭据无需helm upgrade。赞分享DevOps云原生后端【免费下载链接】diggerDigger is an open source IaC orchestration tool. Digger allows you to run IaC in your existing CI pipeline ⚡️项目地址https://gitcode.com/gh_mirrors/di/digger点击查看免费下载相关推荐Digger OpenTaco Kubernetes 自托管部署全指南从 Helm Charts 到生产就绪Digger OpenTaco Kubernetes 自托管部署全指南从 Helm Charts 到生产就绪 本篇指南围绕 Digger 仓库中的 KuberDevOps云原生后端Digger现 OpenTaco在现有 CI 中原生运行 Terraform 的 IaC 编排工具详解Digger现 OpenTaco在现有 CI 中原生运行 Terraform 的 IaC 编排工具详解 导读Digger 是一款开源 IaC 编排工具DevOps云原生后端Rook Helm Charts 部署指南用 Helm 一键编排 Kubernetes 上的 Ceph 存储Rook Helm Charts 部署指南用 Helm 一键编排 Kubernetes 上的 Ceph 存储 导读 Rook 官方为 Ceph 存储配置提供了云原生存储容器编排运维上一篇D2DX终极指南5个简单步骤让《暗黑破坏神2》在现代PC上完美运行下一篇m4s-converterB站缓存视频无损转换的终极解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考