brew tap argoproj/tap
brew install argoproj/tap/argocd
Linux安装
VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
可以参考:argoproj.github.io/argo-cd/cli…
4.3 访问Argo CD API server
默认情况下,Argo CD API服务器未使用外部IP公开。要访问API服务器,请选择以下技术之一以公开Argo CD API服务器:
[root@master ~]
4.4 通过CLI登录Argo
初始密码将自动生成为Argo CD API服务器的容器名称。可以使用以下命令进行检索:
[root@master ~]# kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
argocd-server-656f9b895b-bfjvw
使用用户名admin和上面的密码,登录到Argo CD的IP或主机名:
argocd login <ARGOCD_SERVER>
使用以下命令更改密码:
argocd account update-password
[root@master ~]# argocd login localhost:8080
WARNING: server certificate had error: x509: certificate signed by unknown authority. Proceed insecurely (y/n)? yes
Username: admin
Password:
'admin' logged in successfully
Context 'localhost:8080' updated
[root@master ~]# argocd account update-password
*** Enter current password:
*** Enter new password:
*** Confirm new password:
Password updated
Context 'localhost:8080' updated
4.5 注册集群以将应用程序部署到(可选)
此步骤将群集的凭据注册到Argo CD,仅在部署到外部群集时才需要。在内部进行部署(到与Argo CD运行所在的同一集群)时,应将https://kubernetes.default.svc用作应用程序的K8s API服务器地址。
首先列出当前kubconfig中的所有集群上下文:
argocd cluster add
上面的命令将ServiceAccount(argocd-manager)安装到该kubectl上下文的kube-system命名空间中,并将服务帐户绑定到管理员级别的ClusterRole。Argo CD使用此服务帐户令牌执行其管理任务(即部署/监视)。
可以修改argocd-manager-role角色的规则,使其仅具有对一组有限的名称空间,组和种类的创建,更新,修补,删除特权。但是,在群集作用域中,获取,列出,监视特权是Argo CD起作用所必需的。
4.6 从Git存储库创建应用程序
一个guestbook的应用来仓库保护示例,来说明Argo CD如何去工作:github.com/argoproj/ar…
4.6.1 通过CLI创建APP
You can access Argo CD using port forwarding: add --port-forward-namespace argocd
flag to every CLI command or set ARGOCD_OPTS
environment variable: 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
4.6.2 通过web UI创建APP
打开浏览器进入Argo CD外部UI,然后通过在浏览器中访问IP /主机名登录并使用在步骤4中设置的凭据。
给您的应用命名为留言簿,使用项目默认值,并将同步策略保留为“手动”:
Connect the github.com/redhatxl/ar… repo to Argo CD by setting repository url to the github repo url, leave revision as HEAD
, and set the path to guestbook
:
注意:仓库可以使用我fork的,目前以及更改了镜像地址,可以正常拉取,
对于目标,将集群设置为集群内,并将名称空间设置为默认值:
填写完以上信息后,请单击UI顶部的“创建”以创建留言簿应用程序:
4.7 同步(部署)应用
创建留言簿应用程序后,您现在可以查看其状态:
[root@master ~]# argocd app get guestbook
Name: guestbook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: https://localhost:8080/applications/guestbook
Repo: https://github.com/redhatxl/argocd-example-apps.git
Target: HEAD
Path: guestbook
SyncWindow: Sync Allowed
Sync Policy: <none>
Sync Status: OutOfSync from HEAD (4973f15)
Health Status: Missing
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Service default guestbook-ui OutOfSync Missing
apps Deployment default guestbook-ui OutOfSync Missing
由于尚未部署应用程序,并且尚未创建Kubernetes资源,因此应用程序状态最初处于OutOfSync状态。要同步(部署)应用程序,请运行:
[root@master ~]# argocd app sync guestbook
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
2020-01-24T12:59:13+08:00 Service default guestbook-ui OutOfSync Missing
2020-01-24T12:59:13+08:00 apps Deployment default guestbook-ui OutOfSync Missing
2020-01-24T12:59:14+08:00 Service default guestbook-ui Synced Healthy
Name: guestbook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: https://localhost:8080/applications/guestbook
Repo: https://github.com/redhatxl/argocd-example-apps.git
Target: HEAD
Path: guestbook
SyncWindow: Sync Allowed
Sync Policy: <none>
Sync Status: Synced to HEAD (4973f15)
Health Status: Progressing
Operation: Sync
Sync Revision: 4973f150497aa18bc5fbd81b19102db2469eb6f0
Phase: Succeeded
Start: 2020-01-24 12:59:11 +0800 CST
Finished: 2020-01-24 12:59:12 +0800 CST
Duration: 1s
Message: successfully synced (all tasks run)
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Service default guestbook-ui Synced Healthy service/guestbook-ui created
apps Deployment default guestbook-ui Synced Progressing deployment.apps/guestbook-ui created
此命令从存储库中检索清单,并对清单执行kubectl应用。该留言簿应用程序现在正在运行,您现在可以查看其资源组件,日志,事件和评估的健康状态:
部署完成后状态:
[root@master ~]# kubectl get all -l app=guestbook-ui
NAME READY STATUS RESTARTS AGE
pod/guestbook-ui-7bc795dc8c-m69fl 1/1 Running 0 3m6s
NAME DESIRED CURRENT READY AGE
replicaset.apps/guestbook-ui-7bc795dc8c 1 1 1 3m6s
修改guestbook的访问方式为NodePort
五 操作手册
5.1 概述
本指南适用于希望为其他开发人员安装和配置Argo CD的管理员和操作员。
5.2 架构概述
5.2.1 API Server
API服务器是gRPC / REST服务器,它公开了Web UI,CLI和CI / CD系统使用的API。它具有以下职责:
应用管理和状态报告
应用调用操作(同步,回滚,用户定义)
仓库和集群认证管理
向外部身份提供者的身份验证和身份验证委派
RBAC强制执行
监听/转发Git webhook events
5.2.2 Repository Server
仓库服务是一个内部的服务,维护了一个本地的git仓库缓存了应用的manifests,利用他来生成和返回kubernetes的manifests当提供一下的输入的时候
仓库URL
版本(commit,tag,branch)
5.2.3 Application Controller
应用控制器是一个k8s的控制器,利用他来持续的监控正在运行的应用和对比当前的状态,和存活的状态分配已经期望的目标状态(来源于制定的repo), 他检测outofsync应用状态和可选的任务,它调用任何用户自定义的hooks对于声明周期事件
5.3 声明设置
5.3.1 快速参考
可以使用Kubernetes清单声明性地定义Argo CD应用程序,项目和设置。
Description
argocd-tls-certs-cm.yaml
ConfigMap
Custom TLS certificates for connecting Git repositories via HTTPS (v1.2 and later)
argocd-ssh-known-hosts-cm.yaml
ConfigMap
SSH known hosts data for connecting Git repositories via SSH (v1.2 and later)
application.yaml
Application
Example application spec
project.yaml
AppProject
Example project spec
5.3.2 应用
Application CRD是Kubernetes资源对象,代表环境中已部署的应用程序实例。它由两个关键信息定义:
对Git中所需状态的源引用(存储库,修订版,路径,环境)对
目标集群和名称空间的目标引用。
最低的应用程序规范如下:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: guestbook
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/argoproj/argocd-example-apps.git
targetRevision: HEAD
path: guestbook
destination:
server: https://kubernetes.default.svc
namespace: guestbook
参考 application.yaml 查看附加字段
名称空间必须与Argo cd的名称空间匹配,通常为argocd。
默认情况下,删除应用程序将不会执行级联删除,从而删除其资源。如果需要这种行为,则必须添加终结器-您可能不希望这样做。
您可以创建一个可以创建其他应用程序的应用程序,而该应用程序又可以创建其他应用程序。这样,您就可以声明性地管理可以协调部署和配置的一组应用程序。请参阅群集引导。
AppProject CRD是Kubernetes资源对象,代表应用程序的逻辑分组。它由以下关键信息定义:
sourceRepos引用项目中的应用程序可以从中提取清单的存储库。
目标引用项目中的应用程序可以部署到的群集和名称空间。
实体的角色列表及其在项目中对资源的访问权限的定义。
argoproj.github.io/argo-cd/?sp…
kaliarch
Devops @ anchnet
731.6k
粉丝