初探Argo 电脑版发表于:2021/7/24 15:52 ![](https://img.tnblog.net/arcimg/hb/0e10cfab14f1417fac8a2b0c0ac0b93c.jpeg) >#初探Argo [TOC] 什么是 Argo CD? ------------ >Argo CD 是 Kubernetes 的声明性 GitOps 持续交付工具。 应用程序定义、配置和环境应该是声明性的并且是版本控制的。应用程序部署和生命周期管理应该是自动化的、可审计的并且易于理解。 入门 ------------ >### 安装 Argo CD ```bash kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml ``` tn>这将创建一个新的命名空间 ,Argo CD 服务和应用程序资源将在其中驻留。 ![](https://img.tnblog.net/arcimg/hb/ab6cdecd68a843d49f8a8a23f7657a0b.png) >### 安装 Argo CD CLI ```bash curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 chmod +x /usr/local/bin/argocd ``` tn>如果下载不成功这里有百度云盘的连接 ```bash 链接: https://pan.baidu.com/s/13TKHCK7oMn76Vweu2kOkHg 密码: 5efe ``` >###访问 Argo CD API 服务器 tn>默认情况下,Argo CD API 服务器不公开外部 IP。要访问 API 服务器,请选择以下技术之一来公开 Argo CD API 服务器: >服务类型负载均衡器 将 argocd-server 服务类型更改为LoadBalancer: ```bash kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}' ``` >转发端口 Kubectl 端口转发也可用于连接到 API 服务器而不暴露服务。这里我将它暴露到任何都可以访问的地方。 ```bash # 暴露到本地 kubectl port-forward svc/argocd-server -n argocd 8080:443 # 暴露到任何地方 kubectl port-forward svc/argocd-server -n argocd 8080:443 --address=0.0.0.0 ``` tn>注意关闭防火墙 ![](https://img.tnblog.net/arcimg/hb/d12c44b7b014481389a809aba29c1697.png) ![](https://img.tnblog.net/arcimg/hb/7d413207179a4ccbaf19e4b9f2a7f296.png) tn>该`admin`帐户的初始密码是自动生成的,并以明文形式存储 在 Argo CD 安装命名空间中命名`password`的机密字段中`argocd-initial-admin-secret`。您可以简单地使用`kubectl`以下方法检索此密码: ```bash kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d ``` >使用上面的用户名`admin`和密码,登录 Argo CD 的 IP 或主机名: ```bash argocd login <ARGOCD_SERVER> ``` ![](https://img.tnblog.net/arcimg/hb/00b70909ce9a42648181c6b8165ce7e9.png) >使用以下命令更改密码: ```bash argocd account update-password ``` >在界面上登录: ![](https://img.tnblog.net/arcimg/hb/c266929ec3494aa98fc5536741ada619.png) 从 Git 存储库创建应用程序 ------------ tn>`https://github.com/argoproj/argocd-example-apps.git`提供了一个包含留言簿应用程序的示例存储库, 以演示 Argo CD 的工作原理。 >### 通过UI创建应用程序 点击`+ NEW APP`按钮,如下图: ![](https://img.tnblog.net/arcimg/hb/4c63a3b53c534c2d9bd2bac608a0a630.png) 为您的应用命名`guestbook`,使用项目`default`,并将同步策略保留为`Manual`: ![](https://img.tnblog.net/arcimg/hb/fa78a629b3374e219a47c7320d0b9e60.png) 将`https://github.com/argoproj/argocd-example-apps.git` repo连接到 Argo CD,方法是将 `repository url` 设置为 `github repo url`,将修订版保留为HEAD,并将路径设置为`guestbook`: ![](https://img.tnblog.net/arcimg/hb/094e5a1f4a724eccbfedf8b888fcbb65.png) 对于`Destination`,将 `cluster` 设置为`in-cluster`和 `namespace` 为`default`: ![](https://img.tnblog.net/arcimg/hb/4d80f204930d44668b15004b39e9d37f.png) 填写完以上信息后,点击UI上方的Create,创建`guestbook`应用: ![](https://img.tnblog.net/arcimg/hb/896032aa94f9430e9920dc6f72df765b.png) async(部署)应用程序 ------------ >### 通过 CLI 同步 创建留言簿应用程序后,您现在可以查看其状态: ```bash argocd app get guestbook ``` >应用程序状态为初始`OutOfSync`状态,因为应用程序尚未部署,并且尚未创建任何 Kubernetes 资源。要同步(部署)应用程序,请运行: ```bash argocd app sync guestbook ``` >此命令从存储库中检索清单并执行`kubectl apply`清单中的一个。留言板应用程序现在正在运行,您现在可以查看其资源组件、日志、事件和评估的健康状态。 ![](https://img.tnblog.net/arcimg/hb/61084fc86f8f412786aa5be7dc8a9355.png) ![](https://img.tnblog.net/arcimg/hb/52b7bb68184d472ea064cfee5cc65cfe.png) NodePort发布 ------------ ```bash vim nodeport-argocd-server.yaml kubectl apply -f nodeport-argocd-server.yaml ``` ```yaml apiVersion: v1 kind: Service metadata: name: nodeport-argocd-server namespace: argocd spec: type: NodePort selector: app.kubernetes.io/name: argocd-server ports: - nodePort: 32000 port: 443 protocol: TCP targetPort: 443 ``` tn2>通过命令登录: ```bash argocd login 127.0.0.1:32000 --username admin --password 86382516@qq.com --insecure ``` 命令创建应用 ------------ ```bash ARGOCD_SERVER="127.0.0.1:32000" argocd login 127.0.0.1:32000 --username admin --password 86382516@qq.com --insecure argocd app create nginx-test \ --repo https://gitee.com/zuxiazijiahebo/k8s-ocelot.git \ --path kustomize/testnginx \ --dest-namespace default \ --dest-server https://kubernetes.default.svc \ --server $ARGOCD_SERVER # 修改参数 argocd app set nginx-test --kustomize-image=nginx:stable #argocd --grpc-web app sync nginx-test --force # 执行同步 argocd app sync nginx-test --force # 等待超时 argocd app wait nginx-test --timeout 6000 ``` tn2>更多参数请参考:https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_set/