前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起做 Kubernetes 云原生渐进式交付,刷 Argo CD 技术文档之 Getting Started 篇

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

作者头像
为少
发布2021-05-27 19:03:40
9400
发布2021-05-27 19:03:40
举报
文章被收录于专栏:黑客下午茶黑客下午茶

系列

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

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

前提条件

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

1. 安装 Argo CD

代码语言:javascript
复制
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:

代码语言:javascript
复制
`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 中也可用:

代码语言:javascript
复制
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:

代码语言:javascript
复制
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

Ingress

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

  • https://argocd-docs.hacker-linner.com/operator-manual/ingress/

端口转发

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

代码语言:javascript
复制
kubectl port-forward svc/argocd-server -n argocd 8080:443

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

4. 使用 CLI 登录

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

代码语言:javascript
复制
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

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

代码语言:javascript
复制
argocd login <ARGOCD_SERVER>

使用以下命令更改密码:

代码语言:javascript
复制
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 中的所有集群上下文:

代码语言:javascript
复制
argocd cluster add

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

代码语言:javascript
复制
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'

代码语言:javascript
复制
`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 按钮,如下所示:

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

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

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

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

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

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

代码语言:javascript
复制
$ 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 状态。要同步(部署)应用程序,请运行:

代码语言:javascript
复制
argocd app sync guestbook

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

从 UI:

Refs

  • 官方文档
    • https://argoproj.github.io/argo-cd/
  • 为少持续整理的中文文档,与掘金同步
    • https://argocd-docs.hacker-linner.com
  • 为少的公众号:黑客下午茶
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑客下午茶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列
    • 前提条件
      • 1. 安装 Argo CD
        • 2. 下载 Argo CD CLI
          • 3. 访问 Argo CD API Server
            • Service Type 负载均衡
            • Ingress
            • 端口转发
          • 4. 使用 CLI 登录
            • 5. 注册集群以将应用程序部署到上面(可选)
              • 6. 从 Git 存储库创建应用程序
                • 通过 CLI 创建应用
                • 通过 UI 创建应用
              • 7. 同步(部署)应用程序
                • 从 UI:
              • Refs
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档