恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
90DaysOfDevOps 实战:用 ArgoCD 在 Minikube 上落地 GitOps 持续交付
首页
资讯中心
/
90DaysOfDevOps 实战:用 ArgoCD 在 Minikube 上落地 GitOps 持续交付
90DaysOfDevOps 实战:用 ArgoCD 在 Minikube 上落地 GitOps 持续交付
发布时间:2026/10/3 13:32:21
文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载Argo CD 是 Kubernetes 生态中一款声明式Declarative的 GitOps 持续交付工具它把应用定义、配置、环境全部纳入 Git 版本控制并通过自动化的部署与生命周期管理让每一次变更都可审计、可回滚。本文是 90DaysOfDevOps 挑战第 76 天的实战指南基于项目文档 2022/es/Days/day76.md英文原版见 2022/Days/day76.md整理扩充你将学会在本地 Minikube 集群上部署 ArgoCD、通过端口转发访问 Web UI、用 admin 初始密码登录并基于 Git 仓库部署一个真实应用Pac-Man 游戏从而完整跑通Git 即事实来源的 GitOps 工作流。为什么选择 ArgoCDGitOps 与版本控制的必然性在进入实操之前先理解 ArgoCD 背后的设计理念。项目文档开篇引用了 ArgoCD 官方定义Argo CD is a declarative, GitOps continuous delivery tool for KubernetesArgo CD 是一款面向 Kubernetes 的声明式 GitOps 持续交付工具。这句话的核心是版本控制Version Control。文档用几个常见运维场景解释了它的价值你曾顺手在生产环境改了个配置事后却完全不记得改了什么——因为灯还亮着、一切看起来都是绿的于是继续往前走你曾做过一个改动结果破坏了全部或部分系统——好在你记得这个改动可以快速回滚那段坏脚本或拼写错误当这种改动发生在大规模环境中且不是你本人所为、或未被及时发现最终受损失的将是整个业务。GitOps 正是为应对这些场景而生。文档同时给出了 ArgoCD 强调的两条原则应用定义、配置和环境应当是声明式的并且纳入版本控制Application definitions, configurations, and environments should be declarative, and version controlled.应用的部署与生命周期管理应当是自动化、可审计、易于理解的Application deployment and lifecycle management should be automated, auditable, and easy to understand.。从运维Operations背景出发作者将 ArgoCD 视为基础设施即代码Infrastructure as Code的下一个自然步骤前面几天我们先后用 Jenkins2022/Days/day74.md和 GitHub Actions2022/Days/day75.md打通了 CI 侧构建、测试与镜像推送而 ArgoCD 负责 CD 侧——从 Git 仓库持续地把应用清单同步进 Kubernetes 集群让持续部署/持续交付的工作流全程可控。这也是文档在 CI/CD 管道章节末尾引入 GitOps 术语的原因当业界讨论 CI/CD 方法论时GitOps 正是其中至关重要的一环。在 Minikube 上部署 ArgoCD本节沿用项目前面章节反复使用的本地 Minikube Kubernetes 集群进行部署无需云环境零成本复现完整流程。第一步创建命名空间并应用官方安装清单在终端中依次执行两条命令kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml第一条命令创建名为argocd的独立命名空间用于隔离 ArgoCD 及其关联资源第二条命令直接应用 ArgoCD 官方 stable 分支的安装清单install.yaml它会一次性创建 ArgoCD 运行所需的全部资源包括 CustomResourceDefinitionCRD如 Application、AppProject、ServiceAccount、Role、Secret、Service、Deployment、StatefulSet 等。执行后可用以下命令确认 ArgoCD 所有 Pod 均已启动并处于运行状态kubectl get pods -n argocd预期输出中各 Pod 的 READY 应为1/1、STATUS 为Running、RESTARTS 为0。若某个 Pod 仍处于ContainerCreating或Pending请等待片刻后重新查看——首次拉取镜像需要一些时间。第二步检查命名空间内的全部资源除 Pod 外还可一次性查看 ArgoCD 命名空间中部署的所有资源确认 Service、Deployment、ReplicaSet、StatefulSet 等组件都已就绪kubectl get all -n argocd从输出中可以看到 ArgoCD 的几类关键组件argocd-serverAPI 与 Web UI 服务、argocd-repo-server负责拉取并缓存 Git 仓库内容、argocd-application-controller持续对比 Git 期望状态与集群实际状态并驱动同步、argocd-redis会话缓存以及argocd-dex-server可选的身份认证组件等。了解这些组件有助于后面排查同步或登录问题。第三步端口转发访问 Web UIArgoCD Server 默认以 HTTPS 暴露在 443 端口。在 Minikube 环境下没有现成的 Ingress最简单的方式是使用端口转发。请另开一个新终端并执行kubectl port-forward svc/argocd-server -n argocd 8080:443保持该终端运行端口转发会持续占用然后在浏览器中访问https://localhost:8080浏览器可能会提示证书不受信任因为 ArgoCD 默认使用自签名证书点击继续前往即可。第四步获取 admin 初始密码并登录ArgoCD 安装后会自动生成一个名为argocd-initial-admin-secret的 Secret里面保存着管理员初始密码Base64 编码。在另一个新终端中执行以下命令解码kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath{.data.password} | base64 -d echo-o jsonpath{.data.password}提取 Secret 中 password 字段的 Base64 值管道后的base64 -d将其解码为明文结尾的 echo在输出末尾追加换行便于复制。登录时使用用户名admin密码上述命令输出的随机字符串登录成功后你将看到一个空白的 CD 画布Applications 页面目前没有任何应用页面上只有 No applications yet 的提示与CREATE APPLICATION按钮以及NEW APP、SYNC APPS、REFRESH APPS等操作入口——这就是后续 GitOps 应用管理的起点。提示初始密码仅用于首次登录建议登录后通过 UIUser Info → User Menu → Update Password或 CLI 尽快更换。用 ArgoCD 部署我们的第一支应用ArgoCD 就绪后就可以开始从 Git 仓库部署应用了。文档明确指出ArgoCD 既可以管理 Git 仓库中的 Kubernetes 清单Manifests也支持 Helm Chart 等打包方式。选择演示应用Pac-Man文档选用的演示应用是Pac-Man——那个著名的吃豆人游戏。作者在多次数据管理演示中都使用它其源码仓库为 MichaelCade/pacman-tanzu仓库中包含了应用镜像所需的 Kubernetes 部署清单。该应用在本系列后续章节中还会再次出现涉及数据管理演示因此先通过 ArgoCD 跑通它的部署具有承上启下的意义。部署要点声明式应用与 Git 同步在 ArgoCD 中部署应用的本质是在 UI或ApplicationCRD中声明从哪个 Git 仓库、哪个路径、同步到集群哪个命名空间ArgoCD 的 application-controller 会持续轮询 Git 仓库一旦发现期望状态与集群实际状态不一致就自动或经人工确认执行同步Sync把集群收敛到 Git 中声明的状态。这正是文档强调的声明式 版本控制落地形态Git 仓库成为环境的唯一事实来源Single Source of Truth。由于 UI 点击创建 Application 的每个步骤在视觉上差异不大文档作者选择通过视频演示完整流程并在文中给出了操作路径的核心思路在 Applications 页面点击CREATE APPLICATION或NEW APP填写应用名称、选择同步策略如自动同步 Auto Sync在 Source 中填入 Pac-Man 的 Git 仓库 URL 与目标路径、指定目标修订版本Revision在 Destination 中指定集群默认本地集群与目标命名空间保存并等待首次 Sync 完成随后在应用详情页观察资源状态与健康度。视频中的一个小细节值得注意有一个 Service 始终无法满足健康状态显示为 Healthy但资源并未完全就绪原因是该 Pac-Man 服务声明的类型为LoadBalancer而在 Minikube 中没有配置负载均衡器因此该 Service 会一直处于Pending状态。处理 Minikube 下 LoadBalancer 的限制如果你希望在本地真正玩到这个游戏文档给出了一个实用的解决办法把服务的类型从LoadBalancer改为ClusterIP然后借助端口转发访问。具体操作是在应用的 Kubernetes 清单即 Pac-Man 仓库中的 Service YAML中修改spec.typeapiVersion: v1 kind: Service metadata: name: pacman spec: type: ClusterIP # 由 LoadBalancer 改为 ClusterIP selector: app: pacman ports: - port: 80 targetPort: 80修改并推送至 Git 后ArgoCD 会自动同步这一变更若启用了自动同步随后执行kubectl port-forward svc/pacman -n 命名空间 8081:80浏览器访问http://localhost:8081即可玩 Pac-Man。这一小节同时展示了 GitOps 的另一个核心价值要修复环境问题你不需要 SSH 进集群手改只需修改 Git 仓库并推送ArgoCD 会把集群自动收敛到新的期望状态整个过程可审计、可回滚。本节在 CI/CD 章节中的定位本文是 90DaysOfDevOps 2022 年 CI/CD 管道章节2022/Days/day76.md的收尾篇。回顾这一章的内容脉络使用 Jenkins 完成构建、测试、部署的 Pipeline 编排如 Jenkinsfile 应用管道使用 GitHub Actions 通过 Workflow 实现代码检查与自动化GitHub Actions 概览本篇文章则引入 ArgoCD把交付的重心从管道脚本转移到Git 仓库中的声明式清单完成 CI/CD 到 GitOps 的衔接。作者在文档中总结道当前业界对 CI/CD 领域投入了大量关注你在讨论中还会频繁听到 GitOps 这个术语——它与 CI/CD 中普遍采用的方法论紧密相关。接下来本挑战将进入**可观测性Observability**章节探讨如何以不同的视角审视我们的环境——那是一个既非全新、又在现代环境运维中愈发重要的领域。小结通过本文你已经掌握了在本地 Minikube 上从零部署 ArgoCD 的完整流程创建命名空间、应用官方 install.yaml、验证 Pod 与全部资源、端口转发访问 Web UI、解码 admin 初始密码登录以及通过 Git 仓库部署应用含 Minikube 下 LoadBalancer 限制的规避方法。这套流程可以直接迁移到你的真实 Kubernetes 环境只需将端口转发替换为 Ingress 或 LoadBalancer 暴露方式并作为后续使用 Helm、多集群同步、ApplicationSet 等 GitOps 进阶能力的基础。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐90DaysOfDevOps 实践在 Minikube 上部署 ArgoCD 并以 GitOps 方式交付 Kubernetes 应用90DaysOfDevOps 实践在 Minikube 上部署 ArgoCD 并以 GitOps 方式交付 Kubernetes 应用 导读 本篇文章对应 9文档/教程Blender弹簧骨骼Spring Bones设置教程3步让角色头发自然摆动Blender弹簧骨骼Spring Bones设置教程3步让角色头发自然摆动 给角色做了走路循环马尾却纹丝不动像粘在头顶的一根铁丝手动补几帧关键帧文档教程90DaysOfDevOps 实战用 Helm 在 Minikube 上部署 Jenkins 并落地第一条 CI Pipeline90DaysOfDevOps 实战用 Helm 在 Minikube 上部署 Jenkins 并落地第一条 CI Pipeline 本文基于 90DaysOf文档/教程上一篇数字记忆守护者WeChatMsg三步解锁聊天记录的永恒价值下一篇如何在3分钟内完成OpenCore EFI配置面向新手的智能黑苹果助手终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考