使用 Codefresh 部署
Kubernetes 原生 CI/CD 平台,针对容器和 Helm 部署优化。
CI/CD进阶
为什么
Codefresh 对 Helm 和 Argo CD 有一等支持,内置容器注册表和缓存。DORA 2024 DevOps 状态报告显示精英团队部署频率比低绩效团队高 973 倍。
带自动化测试的 CI/CD 管道将变更失败率降至 5-15%,而手动部署为 40-60%。
何时使用
Kubernetes 重度团队,希望集成注册表、Helm 和 GitOps。贡献者少于 5 人的仓库避免复杂管道编排 — pre-commit 钩子 + GitHub Actions 足够。
除非需要 GPU 或 VPN 访问,否则跳过自托管 runner。
如何做
# codefresh.YML
version: '1.0'
stages:
- build
- deploy
steps:
BuildImage:
type: build
stage: build
title: Build Docker image
image_name: myorg/app
tag: ${{CF_BRANCH_TAG_NORMALIZED}}
DeployHelm:
title: Deploy via Helm
stage: deploy
type: helm
arguments:
chart_name: myapp
chart_repo: my-repo
release_name: myapp
kube_context: prod-cluster
cmd: upgrade --install --set image.tag=${{CF_BRANCH_TAG_NORMALIZED}}
4. 验证部署 — curl -I https://your-app.example.com
5. 监控日志 — 前 5 分钟检查错误
6. 需要时回滚 — 回退到上一版本
示例
# Codefresh GitOps with ArGo CD
steps:
SyncArgoCD:
title: Sync Argo CD app
type: argocd-sync
arguments:
app_name: myapp
server: argocd.example.com
token: ${{ARGOCD_TOKEN}}
常见问题
- ⚠Helm chart 未找到 — 验证 chart repo 已添加
- ⚠Kube context 缺失 — 在 Codefresh UI 添加集群
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓用并行步骤 — 加速独立测试套件
- ✓用 Codefresh runtime 共享步骤 — DRY 流水线逻辑
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求