当前位置: 首页 > backend >正文

【GitOps】初始Argo CD

初始Argo CD

文章目录

  • 初始Argo CD
    • 一、初始Argo CD
      • 1.1、什么是Argo CD
      • 1.2、为什么选择Argo CD
      • 1.3、运作方式
      • 1.4、特征
      • 1.5、核心概念
    • 二、部署Argo CD
      • 2.1、下载yaml文件apply
      • 2.2、安装Argo CD CLI工具
      • 2.3、Ingress服务暴露Argo CD
      • 2.4、访问Web UI
      • 2.5、修改密码

一、初始Argo CD

1.1、什么是Argo CD

  • Argo CD适用于 Kubernetes 的声明性 GitOps 持续交付工具。

1.2、为什么选择Argo CD

  • 应用程序定义、配置和环境应该是声明性的和版本控制的。应用程序部署和生命周期管理应该是自动化的、可审计的且易于理解的。

1.3、运作方式

  • Argo CD 遵循 GitOps 模式,使用 Git 存储库作为定义 所需的应用程序状态。可以通过多种方式指定Kubernetes 清单:

    • Kustomize 应用程序
    • Helm 图表
    • Jsonnet 文件
    • YAML/json 清单的plain 目录
    • 任何配置位配置管理插件自定义配置管理工具
  • Argo CD可再指定的目标环境中自动部署所需的应用程序状态。应用程序部署可以跟踪对分支、标签或固定到特定版本的Git提交时显现。

  • 架构如下
    在这里插入图片描述

  • Argo CD作为Kubernetes控制器实现,持续监控正在运行的应用程序,并将当前实时状态与所需的目标状态(在Git存储库中指定)进行比较。如果已部署的应用程序的实时状态偏离目标状态,则视为。Argo CD 报告并可视化差异,同时提供自动或手动将Live状态同步回所需的Target状态。对所需的目标状态可以自动应用并反映在指定的目标中环境。OutOfSync

1.4、特征

  • 自动将应用程序部署到指定的目标环境

  • 支持多种配置管理/模板管理(Kustomize、Helm、Jsonnet、plain-YAML)

  • 能够管理和部署到多个集群

  • SSO集成(OIDC 、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、Linkedln)

  • 用于授权的多租户和RBAC策略

  • 回滚/滚动到Git存储库中提交的任何应用程序配置

  • 应用程序资源部的健康状态分析

  • 自动配置偏差检测和可视化

  • 自动或手动将应用程序同步到所需状态

  • Web UI,提供应用程序活动的实时视图

  • 用于自动化的访问令牌

  • PreSync、Sync、PostSync钩子以支持复杂的应用程序推出(例如蓝绿和金丝雀升级)

  • 应用程序事件和API调用的审计跟踪

  • Prometheus指标

  • 在Git中覆盖helm参数的参数覆盖

1.5、核心概念

  • 假设你熟悉核心Git 、Docker、Kubernetes、持续交付和GitOps概念。以下是一些特定于Argo CD的概念。
    • 应用由清单定义的一组Kubernetes资源。这是自定义资源定义(CRD)
    • 应用程序源类型使用哪个工具构建应用程序
    • 目标状态应用程序的所需状态,由Git存储库中的文件表示
    • 实时状态该应用程序的实时状态。部署了哪些Pod等
    • 同步状态Live状态是否与目标 state 匹配。部署的应用程序是否与Git所说的相同?
    • 同步使应用程序移动到其目标状态的过程。例如,通过将更改应用于Kubernetes集群
    • 同步操作状态同步是否成功
    • 刷新将Git中的最新代码于live状态进行比较。找出不同之处
    • 健康应用程序的运行状态,它是否正常运行?它是否可以处理请求
    • 工具用于从文件目录创建清单的工具。例如Kustomize

二、部署Argo CD

  • 根据官方给到的部署方式进行部署

2.1、下载yaml文件apply

[root@master ~]# wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml[root@master ~]# sed -i 's/imagePullPolicy: Always/imagePullPolicy: IfNotPresent/g' install.yaml[root@master ~]# kubectl create namespace argocd[root@master ~]# kubectl apply -n argocd -f install.yaml
# 查看部署资源是否成功
[root@master ~]# kubectl get pod,svc -n argocd
NAME                                                    READY   STATUS    RESTARTS   AGE
pod/argocd-application-controller-0                     1/1     Running   0          15s
pod/argocd-applicationset-controller-79479fbfb7-sgdxb   1/1     Running   0          16s
pod/argocd-dex-server-656c7f9f99-wbtsl                  1/1     Running   0          16s
pod/argocd-notifications-controller-d9b6dbbdd-pfchm     1/1     Running   0          16s
pod/argocd-redis-67cf5f45bf-ljkbn                       1/1     Running   0          15s
pod/argocd-repo-server-57cfd8c87b-pm6cm                 1/1     Running   0          15s
pod/argocd-server-847795b7c7-xphht                      1/1     Running   0          15sNAME                                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
service/argocd-applicationset-controller          ClusterIP   10.100.160.75    <none>        7000/TCP,8080/TCP            16s
service/argocd-dex-server                         ClusterIP   10.101.167.8     <none>        5556/TCP,5557/TCP,5558/TCP   16s
service/argocd-metrics                            ClusterIP   10.109.205.190   <none>        8082/TCP                     16s
service/argocd-notifications-controller-metrics   ClusterIP   10.107.167.164   <none>        9001/TCP                     16s
service/argocd-redis                              ClusterIP   10.102.136.73    <none>        6379/TCP                     16s
service/argocd-repo-server                        ClusterIP   10.100.96.159    <none>        8081/TCP,8084/TCP            16s
service/argocd-server                             ClusterIP   10.107.223.8     <none>        80/TCP,443/TCP               16s
service/argocd-server-metrics                     ClusterIP   10.99.250.186    <none>        8083/TCP                     16s

2.2、安装Argo CD CLI工具

[root@master ~]# curl -sSL -o /usr/local/bin/argocd https://ghproxy.com/https://github.com/argoproj/argo-cd/releases/download/v2.8.4/argocd-linux-amd64
[root@master ~]# chmod +x /usr/local/bin/argocd[root@master ~]# argocd version
argocd: v2.8.4+c279299BuildDate: 2023-09-13T19:43:37ZGitCommit: c27929928104dc37b937764baf65f38b78930e59GitTreeState: cleanGoVersion: go1.20.7Compiler: gcPlatform: linux/amd64
FATA[0000] Argo CD server address unspecified

2.3、Ingress服务暴露Argo CD

  • Argo CD会运行一个 gRPC 服务(由 CLI 使用)和HTTP/HTTPS 服务(UI使用),这两种协议都由 argocd-server服务在 80 和 443 端口进行暴露,不过因为 Argo CD 本身支持了一个 gRPC 的方式,所以,如果要用一个Ingress规则去暴露它,则需要配置一个注解(以Ingress-nginx为例)ssl-passthrough,但是这个透传需要在 ingress 控制器上开启这功能,这里选择两个规则。
[root@master ~]# cat argocd_ingress.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: argocd-server-http-ingressnamespace: argocdannotations:nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:ingressClassName: "nginx"tls:- hosts:- argocd.devops-engineer.com.cnsecretName: argocd-secretrules:- host: argocd.devops-engineer.com.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: argocd-serverport:name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: argocd-server-grpc-ingressnamespace: argocdannotations:nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
spec:ingressClassName: "nginx"tls:- hosts:- grpc.argocd.devops-engineer.com.cnsecretName: argocd-secretrules:- host: grpc.argocd.devops-engineer.com.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: argocd-serverport:name: https
# 加载资源
[root@master ~]# kubectl apply -f argocd_ingress.yaml 
ingress.networking.k8s.io/argocd-server-http-ingress created
ingress.networking.k8s.io/argocd-server-grpc-ingress created
# 自签证书,需要在 argocd-server 的 deployment 中添加一个args
[root@master ~]# kubectl edit -n argocd deployment argocd-servercontainers:- args:- /usr/local/bin/argocd-server- --insecure   # 添加这一行

2.4、访问Web UI

  • 注意:需要与ingress现实的物理IP做域名解析(hosts)
  • 访问地址:https://argocd.devops-engineer.com.cn
  • 用户名:admin
  • 密码:kubectl get secrets -n argocd argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
    在这里插入图片描述

在这里插入图片描述

2.5、修改密码

[root@master ~]# echo "192.168.93.147 argocd.devops-engineer.com.cn" >> /etc/hosts
[root@master ~]# argocd login argocd.devops-engineer.com.cn
WARNING: server certificate had error: tls: failed to verify certificate: x509: certificate is valid for ingress.local, not argocd.devops-engineer.com.cn. Proceed insecurely (y/n)? y
WARN[0001] Failed to invoke grpc call. Use flag --grpc-web in grpc calls. To avoid this warning message, use flag --grpc-web. 
Username: admin
Password:   # kubectl命令回显的默认密码
'admin:login' logged in successfully
Context 'argocd.devops-engineer.com.cn' updated
# 修改秘密
# YjTca4bgrAQOHgQR:旧密码
# wzh.2005:新密码
[root@master ~]# argocd account update-password --current-password YjTca4bgrAQOHgQR --new-password wzh.2005
WARN[0000] Failed to invoke grpc call. Use flag --grpc-web in grpc calls. To avoid this warning message, use flag --grpc-web. 
Password updated
Context 'argocd.devops-engineer.com.cn' updated
  • 使用新密码登录
    在这里插入图片描述
http://www.xdnf.cn/news/19872.html

相关文章:

  • Unity学习----【进阶】Addressables(一)--概述与简单的使用
  • 小企业环境-流水线管理
  • vue2头部布局示例
  • 基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)
  • c语言程序之魂——算法(练习题,流程图,程序源码)
  • 2025 年国内外十大顶尖低代码开发平台排行榜
  • 【C++】控制台输入与输出
  • 机器学习实战:逻辑回归算法深度解析与案例应用
  • Win64OpenSSL-3_5_2.exe【安装步骤】
  • ABAP BAPI_CONTRACT_CREATE 报错 06 658
  • 【FastDDS】Layer DDS之Core (详解)
  • pytorch gpu版本安装(最新保姆级安装教程)
  • Masonry
  • 从全栈开发到微服务架构:一位Java工程师的实战经验分享
  • el-dialog 打开dialog弹框,鼠标点击事件无法执行
  • [TryHackMe]Oh My WebServer(nday漏洞+容器逃逸)
  • Teacher Forcing技术解析
  • 解构复杂财务逆向业务:如何优雅地生成与管理负数单?
  • c++ zint二维码、条形码开发库
  • k8s初始化常见问题
  • 笔记:深层卷积神经网络(CNN)中的有效感受野简单推导
  • 行业分享丨基于SimSolid的大型汽车连续冲压模具刚度分析
  • vue3前端开发的基础教程——快速上手
  • flutter 中间组件自适应宽度
  • 硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器
  • 深入解析MongoDB内部架构设计
  • 深度学习-----简单入门卷积神经网络CNN的全流程
  • 做 DevOps 还在被动救火?这篇让你把监控玩成 “运维加速器”!
  • 【CV】OpenCV基本操作④——算术操作
  • OpenGL视图变换矩阵详解:从理论推导到实战应用