一起做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Getting Started 篇

简介: 一起做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Getting Started 篇

系列



  1. 做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Overview 篇
  2. 云原生渐进式交付,刷 Argo CD 技术文档之 Understand The Basics & Core Concepts 篇


本指南假定您已经了解 Argo CD 所基于的工具。请阅读基础知识以了解这些工具。


前提条件


  • 安装 kubectl 命令行工具。
  • 有一个 kubeconfig 文件 (默认位置是 ~/.kube/config)。


1. 安装 Argo CD


kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml


这将创建一个新的命名空间 argocd,Argo CD 服务和应用程序资源将驻留在该命名空间中。


如果您对 UI,SSO,多集群管理不感兴趣并且只想将更改放入集群中,则可以使用 --disable-auth flag 禁用身份验证,并使用 --port-forward--port-forward-namespace flag 通过 CLI 访问 Argo CD。并继续执行步骤6:


`kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type json`


2. 下载 Argo CD CLI


https://github.com/argoproj/argo-cd/releases/latest 下载最新版的 Argo CD。可通过 CLI 安装文档找到更详细的安装说明。

在 Mac Homebrew 中也可用:


brew install argocd


3. 访问 Argo CD API Server



默认情况下,Argo CD API Server 未使用外部 IP 暴露。要访问 API 服务器,请选择以下技术之一以暴露 Argo CD API Server:


Service Type 负载均衡


改变 argocd-server service type 到 LoadBalancer:


kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'


Ingress


根据 ingress 文档,以了解如何使用 ingress 配置 Argo CD。


端口转发


Kubectl port-forwarding 也可以用于连接到 API server,而无需暴露服务。


kubectl port-forward svc/argocd-server -n argocd 8080:443


然后可以使用 localhost:8080 访问 API server


4. 使用 CLI 登录


初始密码将自动生成为 Argo CD API server 的容器名称。可以使用以下命令进行检索:


kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2


使用用户名 admin 和上面的密码,登录到 Argo CD 的 IP 或主机名:


argocd login <ARGOCD_SERVER>


使用以下命令更改密码:


argocd account update-password


在 ArgoCD 的初始启动过程中,初始密码是在名为 argocd-secret 的 kubernetes secret 中设置的。这意味着如果您以任何方式来编辑 deployment 导致新的 Pod 被部署,例如在 Argo CD API server 上禁用 TLS。首次安装Argo CD 时,请记下初始 Pod 名称,或按照以下说明重设密码


5. 注册集群以将应用程序部署到上面(可选)


此步骤将集群的凭据注册到 Argo CD,仅在部署到外部集群时才需要。在内部进行部署(到与 Argo CD 运行所在的同一集群)时,应将 https://kubernetes.default.svc 用作应用程序的 K8s API server 地址。


首先列出当前 kubeconfig 中的所有集群上下文:


argocd cluster add


从列表中选择一个上下文名称,并将其提供给 argocd cluster add CONTEXTNAME。例如,对于 docker-for-desktop 上下文,运行:


argocd cluster add docker-for-desktop


上面的命令将 ServiceAccount(argocd-manager)安装到该 kubectl 上下文的 kube-system 命名空间中,并将该服务帐户绑定到管理员级别的 ClusterRole。Argo CD 使用此服务帐户令牌执行其管理任务(即部署/监视)。


可以修改 argocd-manager-role 角色的规则,使其仅对有限的一组名称空间,组和种类具有 createupdatepatchdelete 特权。但是,在 cluster-scope 中,getlistwatch 特权是 Argo CD 起作用所必需的。


6. 从 Git 存储库创建应用程序


包含 guestbook 应用程序的示例存储库可从 https://github.com/argoproj/argocd-example-apps.git 获得,以演示 Argo CD 的工作方式。


通过 CLI 创建应用


您可以使用端口转发访问 Argo CD:在每个 CLI 命令中添加 --port-forward-namespace argocd flag,或设置ARGOCD_OPTS 环境变量:export ARGOCD_OPTS='--port-forward-namespace argocd'


`argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default`


通过 UI 创建应用


打开浏览器进入 Argo CD 外部 UI,然后通过在浏览器中访问 IP/hostname 登录并使用在步骤4中设置的凭据。


登录后,单击 + New App 按钮,如下所示:


微信图片_20220610204747.png

image.gif

给您的应用命名为 guestbook,使用项目 default,并将同步策略保留为 Manual

image.gif

微信图片_20220610204833.png


通过将 Respository url 设置为 github repo url,将 https://github.com/argoproj/argocd-example-apps.git repo 连接到 Argo CD,将 Revision 保留为 HEAD,并将 Path 设置为 guestbook

image.gif

微信图片_20220610204857.png


对于 Destination,将集群设置为 in-cluster,并将名称空间设置为 default


微信图片_20220610204912.png

image.gif

填写完以上信息后,请单击 UI 顶部的 Create 以创建 guestbook 应用程序:


微信图片_20220610204924.png

image.gif

7. 同步(部署)应用程序


创建 guestbook 应用程序后,您现在可以查看其状态:


$ argocd app get guestbook
Name:               guestbook
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://10.97.164.88/applications/guestbook
Repo:               https://github.com/argoproj/argocd-example-apps.git
Target:
Path:               guestbook
Sync Policy:        <none>
Sync Status:        OutOfSync from  (1ff8a67)
Health Status:      Missing
GROUP  KIND        NAMESPACE  NAME          STATUS     HEALTH
apps   Deployment  default    guestbook-ui  OutOfSync  Missing
       Service     default    guestbook-ui  OutOfSync  Missing


由于尚未部署应用程序,并且尚未创建 Kubernetes 资源,因此应用程序状态最初处于 OutOfSync 状态。要同步(部署)应用程序,请运行:


argocd app sync guestbook

该命令从存储库中检索清单,并对清单执行 kubectl apply。该 guestbook 应用程序现在正在运行,您现在可以查看其资源组件,日志,事件和评估的健康状态:


从 UI:


微信图片_20220610204938.png

微信图片_20220610204954.png


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
人工智能 运维 Cloud Native
Argo Workflows at KubeCon Europe 2025: 多元场景的云原生任务编排
Argo Workflow在KubeCon Europe 2025展示了其在AI/ML/HPC任务、事件驱动、平台工程、批量数据处理、混沌测试等多元场景的云原生任务编排能力。
|
7月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
7月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
220 10
|
9月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
377 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
9月前
|
运维 Cloud Native Serverless
Serverless Argo Workflows大规模计算工作流平台荣获信通院“云原生技术创新标杆案例”
2024年12月24日,阿里云Serverless Argo Workflows大规模计算工作流平台荣获由中国信息通信研究院颁发的「云原生技术创新案例」奖。
|
10月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
10月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
10月前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
154 9
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。

推荐镜像

更多