
初探Argo
什么是 Argo CD?
Argo CD 是 Kubernetes 的声明性 GitOps 持续交付工具。
应用程序定义、配置和环境应该是声明性的并且是版本控制的。应用程序部署和生命周期管理应该是自动化的、可审计的并且易于理解。
入门
安装 Argo CD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
这将创建一个新的命名空间 ,Argo CD 服务和应用程序资源将在其中驻留。
安装 Argo CD CLI
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
如果下载不成功这里有百度云盘的连接
链接: https://pan.baidu.com/s/13TKHCK7oMn76Vweu2kOkHg 密码: 5efe
访问 Argo CD API 服务器
默认情况下,Argo CD API 服务器不公开外部 IP。要访问 API 服务器,请选择以下技术之一来公开 Argo CD API 服务器:
服务类型负载均衡器
将 argocd-server 服务类型更改为LoadBalancer:
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
转发端口
Kubectl 端口转发也可用于连接到 API 服务器而不暴露服务。这里我将它暴露到任何都可以访问的地方。
# 暴露到本地
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
注意关闭防火墙
该admin
帐户的初始密码是自动生成的,并以明文形式存储 在 Argo CD 安装命名空间中命名password
的机密字段中argocd-initial-admin-secret
。您可以简单地使用kubectl
以下方法检索此密码:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
使用上面的用户名
admin
和密码,登录 Argo CD 的 IP 或主机名:
argocd login <ARGOCD_SERVER>
使用以下命令更改密码:
argocd account update-password
在界面上登录:
从 Git 存储库创建应用程序
https://github.com/argoproj/argocd-example-apps.git
提供了一个包含留言簿应用程序的示例存储库, 以演示 Argo CD 的工作原理。
通过UI创建应用程序
点击+ NEW APP
按钮,如下图:
为您的应用命名guestbook
,使用项目default
,并将同步策略保留为Manual
:
将https://github.com/argoproj/argocd-example-apps.git
repo连接到 Argo CD,方法是将 repository url
设置为 github repo url
,将修订版保留为HEAD,并将路径设置为guestbook
:
对于Destination
,将 cluster
设置为in-cluster
和 namespace
为default
:
填写完以上信息后,点击UI上方的Create,创建guestbook
应用:
async(部署)应用程序
通过 CLI 同步
创建留言簿应用程序后,您现在可以查看其状态:
argocd app get guestbook
应用程序状态为初始
OutOfSync
状态,因为应用程序尚未部署,并且尚未创建任何 Kubernetes 资源。要同步(部署)应用程序,请运行:
argocd app sync guestbook
此命令从存储库中检索清单并执行
kubectl apply
清单中的一个。留言板应用程序现在正在运行,您现在可以查看其资源组件、日志、事件和评估的健康状态。
NodePort发布
vim nodeport-argocd-server.yaml
kubectl apply -f nodeport-argocd-server.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
通过命令登录:
argocd login 127.0.0.1:32000 --username admin --password 86382516@qq.com --insecure
命令创建应用
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
更多参数请参考:https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_set/
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

