Argo CD 入门扫盲使用

news2024/11/26 12:42:06

目录

一、什么是 argo cd

二、为什么使用 argo cd

三、argo cd 架构图

四、Argo CD 使用 

1、安装 Argo CD

2、安装 Argo CD CLI

3、发布 Argo CD 服务

4、获取 Argo CD 密码

5、准备 Git 仓库 

6、创建 Argo CD App

7、版本升级

 8、版本回滚


一、什么是 argo cd

Argo CD 是用于 Kubernetes 的声明性 GitOps 连续交付工具。

二、为什么使用 argo cd

Argo CD 可在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在 Git 提交时跟踪对 
分支,标签的更新,或固定到清单的特定版本。

三、argo cd 架构图

Argo CD 的主要职责是 CD(Continuous Delivery,持续交付),将应用部署到 Kubernetes 等环境 
中,而 CI(Continuous Integration,持续集成)主要是交给 Jenkins,Gitlab CI 等工具来完成。
Argo CD 的架构图如下

四、Argo CD 使用 

Argo CD 一般安装在 Kubernetes 集群中。

1、安装 Argo CD

使用以下命令在 argocd 命名空间部署 Argo CD:

# 创建命名空间
kubectl create namespace argocd 
# 部署    argo cd
wget https://raw.githubusercontent.com/argoproj/argo- 
cd/stable/manifests/install.yaml
kubectl apply -n argocd -f install.yaml

2、安装 Argo CD CLI

Argo CD CLI 是用于管理 Argo CD 的命令行工具,不同操作系统具体的安装方式可以参考 Argo CD CLI 
Installation
Mac 系统可以直接使用 brew install 进行安装,如下

brew install argocd

3、发布 Argo CD 服务

默认情况下, Argo CD 服务不对外暴露服务,可以通过 LoadBalancer 或者 NodePort 类型的 
Service、Ingress、Kubectl 端口转发等方式将 Argo CD 服务发布到 Kubernetes 集群外部。
这里使用以下命令通过 NodePort 服务的方式暴露 Argo CD 到集群外部:

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

现在已经将名字为 argocd-server 的 Service 改成 NodePort 类型了,可以在集群外部通过 <节点 IP>:< 
随机生成的 NodePort 端口> 来访问 Argo CD。
浏览器输入 https://<节点 IP>:port 访问 Argo CD。

4、获取 Argo CD 密码

默认情况下 admin 帐号的初始密码是自动生成的,会以明文的形式存储在 Argo CD 安装的命名空间中 
名为 argocd-initial-admin-secret 的 Secret 对象下的 password 字段下,可以用下面的命令获取:

kubectl -n argocd get secret \ 
argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d 
# 返回结果
kj8bDMiDTnsEfnjg

在浏览器输入密码登录 Argo CD,登录界面如下图:

 登录后的界面如下所示:

5、准备 Git 仓库 

在 Gitlab 上创建项目,取名为 argocd-lab,为了方便实验将仓库设置为 public 公共仓库。在仓库中创 
建 quickstart 目录,在目录中创建两个 yaml 资源文件,分别是 myapp-deployment.yaml 和 myapp- 
service.yaml。

gitlab 内容如下:

yaml 资源文件内容如下:

# myapp-deployment.yaml 
apiVersion: apps/v1 
kind: Deployment 
metadata:
 name: myapp 
spec:
 replicas: 1
 selector:
   matchLabels:
     app: myapp
 template:
   metadata:
     labels:
       app: myapp
   spec:
     containers:
     - image: registry.cn-shanghai.aliyuncs.com/public-namespace/myapp:v1
       name: myapp 
       ports:
       - containerPort: 80 

---
# myapp-service.yaml 
apiVersion: v1 
kind: Service 
metadata:
 name: myapp
spec:
 ports:
 - port: 80
   targetPort: 80 
   nodePort: 32060 
 type: NodePort 
 selector:
   app: myapp

6、创建 Argo CD App

首先创建一个命名空间 devops 用于 Argo CD 部署应用。

kubectl create ns devops

可以有三种方式创建 app,分别介绍如下: 

方式一:使用 UI 创建 App
Application Name: 自定义的应用名。 
Project: 使用默认创建好的 default 项目。
SYNC POLICY:  同步方式,可以选择自动或者手动,这里我们选择手动同步。

Repository URL: 项目的 Git 地址。 
Revision: 分支名。
Path: yaml 资源文件所在的相对路径。

 Cluster URL: Kubernetes API Server 的访问地址,由于 Argo CD 和下发应用的 Kubernetes 集群是同 一个,因此可以直接使用 http://kubernetes.default.svc 来访问。关于 Kubernetes 中 DNS 解析规则可 以查看 Pod 与 Service 的 DNS。

Namespace: 部署应用的命名空间。 

创建完成后如下图所示,此时处于 OutOfSync 的状态:

 由于设置的是手动同步,因此需要点一下下面的 SYNC 进行同步:

在弹出框点击 SYNCHRONIZE,确认同步:

 等待同步完成。

在 Argo CD 上点击应用进入查看详情,如下图:

 

 方式二:使用 CLI 创建 APP

argocd app create myapp2 \
--repo http://11.8.36.29/root/argocd-lab.git \ 
--path quickstart --dest-server \
https://kubernetes.default.svc \ 
--dest-namespace devops

 使用 argocd 命令查看创建的应用:

# 列出应用
❯    argocd app list
NAME   CLUSTER                         NAMESPACE  PROJECT  STATUS  HEALTH   
SYNCPOLICY  CONDITIONS  REPO                                   PATH       
TARGET
myapp https://kubernetes.default.svc devops     default Synced Healthy 
<none>     <none>     http://11.8.36.29/root/argocd-lab.git quickstart 
main
# 查看    myapp 应用
❯    argocd app get myapp 
Name:               myapp
Project:            default
Server:             https://kubernetes.default.svc 
Namespace:          devops
URL:                https://11.8.36.159:32313/applications/myapp 
Repo:               http://11.8.36.29/root/argocd-lab.git 
Target:             main
Path:               quickstart
SyncWindow:         Sync Allowed
Sync Policy:        <none>
Sync Status:        Synced to main (82baed1) 
Health Status:      Healthy
GROUP  KIND        NAMESPACE  NAME   STATUS  HEALTH   HOOK  MESSAGE
      Service     devops     myapp  Synced  Healthy        service/myapp 
created
apps   Deployment  devops     myapp  Synced  Healthy       
deployment.apps/myapp created

方式三:使用 YAML 文件创建

apiVersion: argoproj.io/v1alpha1 
kind: Application
metadata:
 name: myapp
 namespace: argocd 
spec:
 destination:
   namespace: devops # 部署应用的命名空间
   server: https://kubernetes.default.svc # API Server 地址
 project: default # 项目名
 source:
   path: quickstart # 资源文件路径
   repoURL: http://11.8.36.29/root/argocd-lab.git # Git 仓库地址
   targetRevision: main # 分支名

7、版本升级

将 myapp 应用从手动同步改成自动同步。点击 APP DETAILS -> SYNC POLICY,点击 ENABLE AUTO- SYNC

编辑 myapp 资源文件,将版本从 v1 改为 v2,点击 Commit changes,提交更改:

等待一会 Argo CD 会自动更新应用,如果等不及可以点击 Refresh,Argo CD 会去立即获取最新的资源 文件。可以看到此时 myapp Deployment 会新创建 v2 版本的 Replicaset,v2 版本的 Replicaset 会创 建并管理 v2 版本的 Pod。

 

 8、版本回滚

升级到 v2 版本以后, v1 版本的 Replicaset 并没有被删除,而是继续保留,这是为了方便我们回滚应 用。在 myapp 应用中点击 HISTORY AND ROLLBACK 查看历史记录,可以看到有 2 个历史记录:

假设刚刚上线的 v2 版本出现了问题,需要回滚回 v1 版本,那么可以选中 v1 版本,然后点击 Rollback 进行回滚: 

在回滚的时候需要禁用 AUTO-SYNC 自动同步,点击 OK 确认即可:

 等待一会可以看到此时已经回滚成功,此时 Pod 是 v1 版本的,并且由于此时线上的版本并不是 Git 仓 库中最新的版本,因此此时同步状态是 OutOfSync:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

S_Tide使用总结(1)函数及数据

1、使用增强调和分析&#xff08;EHA&#xff09;计算实测潮位的调和常数&#xff0c;不考虑交点改正。 % s_tide.m - computes the tidal analysis of the real tidal % time series using Enhanced Harmonic Analysis (EHA) without nodal correcti…

Web 3.0时代,重塑教育与学习方式的可能性

随着科技的快速发展和互联网的普及&#xff0c;教育领域也面临着巨大的机遇和挑战。Web 3.0时代的到来为教育与学习方式带来了全新的可能性。在这个数字化时代&#xff0c;我们可以探索和利用Web 3.0技术&#xff0c;重塑教育的方式&#xff0c;提供更个性化、互动性和灵活性的…

数控机床编程与操作

一、数控机床 的产生 常见数控机床: 数控车床 数控铣床 加工中心 多轴数控机床 柔性制造单元 数控线切割机床 二、数控机床的发展历程 第一代 1952年-1959年 电 子管的硬件数控系统 第二代1959年-1965年 晶体管电路为主的硬件数控系统 第三代1965年开始 小、中规模集成电路…

HIVE SQL 根据主键去重并实现其余字段分组聚合

相同个人id下所有字段按时间顺序补位&#xff0c;取首个不为空值 --数据建表 drop table if exists db.tb_name; create table if not exists db.tb_name ( id string,name string,tele string,email string,date string ) ; insert overwrite table db.tb_name values (&qu…

Redis实战案例18-Redisson的锁重试和watchdog机制

1. 锁重试 首先要理解为什么要进行锁重试&#xff0c;之前我们在获取锁时&#xff0c;只要一次获取失败就直接返回false&#xff0c;这样的机制需要进行修改&#xff1b; 尝试获取锁的底层逻辑是 返回锁的有效期&#xff08;null或者其他值&#xff09;&#xff1b; 为null然后…

大数据第一步-Mac安装Hadoop3

1.安装工作 1.1 准备工作 前提是把jJDK8安装好&#xff0c;hadoop3.x最低需要jdk8。 然后打开共享把远程登陆打开&#xff0c;不打开说是后面会报错&#xff0c; 到终端输入命令&#xff1a;ssh localhost 生成新的keygen否则后面会报错 Permission denied 命令&#xff1a;…

SAP/ABAP(二)

一、循环结构 *&---------------------------------------------------------------------* *& Report ZDEMO_LIMING01 *&---------------------------------------------------------------------* *&作者&#xff1a;黎明 *&--------------------------…

DBISAM Client-Server Crack

您是否需要经过验证且可靠的 BDE&#xff08;Borland 数据库引擎&#xff09;替代品&#xff1f; DBISAM是Delphi或CBuilder应用中替代BDE的标准。它已被部署到全球数千个地点&#xff0c;并且可以打上品牌&#xff0c;以至于没有人知道正在使用DBISAM。它是按开发人员许可的&a…

创建型模式 - 工厂模式

概述 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类&#xff08;Coffee&#xff09;&#xff0c;并定义其两个子类&#xff08;美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】&#xff09;&#xff1b;再设计一个咖啡店类&#xff08;CoffeeStore&#xf…

Sa-Token + SpringBoot 实现登录鉴权

1. 技术选型 今天最近在做登录、授权的功能,一开始考虑到的是spring boot + spring security,但spring security太重,而我们是轻量级的项目,所以,spring security不适合我们。 而后考虑spring boot + shiro,但shiro自带的aop会影响spring boot的aop,所以,shiro也不适…

等保测评包过是真的吗?安全吗?

最近有小伙伴在问&#xff0c;等保测评包过是真的吗&#xff1f;安全吗&#xff1f;哪位大哥来解答一下&#xff1f; 等保测评包过是真的吗&#xff1f;安全吗&#xff1f; 【回答】&#xff1a;等级保护采用备案与测评机制&#xff0c;而非认证机制&#xff0c;因此不存在“包…

uni-app:常见组件view、text、icon

根据html&#xff1a;可知div是块级标签&#xff0c;span是行级标签 这里view类似于div&#xff0c;text类似于span&#xff0c;即 块级标签&#xff1a;view 行级标签&#xff1a;text、icon 类似效果 两个icon图标&#xff0c;置于第一排 两个view&#xff0c;分别位于第…

四维轻云地理空间数据在线协作管理平台为测绘行业用户解决了这些难题

测绘作为一个基础性行业&#xff0c;从大比例的地形图到铁路网、公路网的分布&#xff0c;再到互联网地图&#xff0c;测绘的身影随处可见。随着科技的不断发展与进步&#xff0c;无人机也成为测绘行业的一部分。通过无人机测绘技术能够获取高精度的影像数据并生成三维模型和点…

华菱电子冲刺创业板上市:计划募资6.5亿元,总经理为日本国籍

7月17日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;已对山东华菱电子股份有限公司&#xff08;下称“华菱电子”&#xff09;发出第1轮审核问询函。目前&#xff0c;华菱电子在深圳证券交易所的审核状态已经变更为“已问询”。 根据公开信息&#xff0c;华菱电子于2…

WooCommerce适合企业电子商务吗?

目录 成功开展电子商务业务变得比以往任何时候都容易。市场上有几个现成的平台&#xff0c;完全有可能将一个初步的想法快速转变为在线贸易业务&#xff0c;并源源不断地收到订单。 什么是 WooCommerce&#xff1f; 为什么您应该考虑使用 WooCommerce 很灵活 重量轻且功…

一文读懂 MySQL 中的索引

文章目录 1. 索引概述1.1 索引概述1.2 优点1.3 缺点1.6 常见索引概念1.6.1 聚簇索引1.6.2 二级索引&#xff08;辅助索引、非聚簇索引&#xff09;1.6.3 联合索引 1.8 MyISAM索引的原理1.9 MyISAM 与 InnoDB对比1.10 索引的代价 2. 索引的创建与设计原则2.1 索引的声明与使用2.…

算法训练营第四十二天||● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

● 01背包问题&#xff0c;你该了解这些&#xff01; 二维dp数组 ● 01背包问题&#xff0c;你该了解这些&#xff01; 滚动数组 一维dp数组 dp[j] max(dp[j], dp[j - weight[i]] value[i]); ● 416. 分割等和子集 本题属于01背包问题的应用&#xff0c; 这道题目是要…

【EasyExcel】在SpringBoot+VUE项目中引入EasyExcel实现对数据的导出(封装工具类)

在SpringBootVUE项目中引入EasyExcel实现导入导出 一、引入EasyExcel 通过maven引入&#xff0c;坐标如下&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.3.2</version…

Mysql 单表使用索引注意事项(避免失效)

Mysql 单表使用索引 1.尽量建全索引 查询的字段按照顺序在索引中都可以匹配到&#xff01; SQL中查询字段的顺序&#xff0c;跟使用索引中字段的顺序是有关系的。但是在不影响SQL执行结果的前提下&#xff0c;给你自动地优化。没有顺序限制了 2. 最佳左前缀法则 查询字段与…

ES系列--es进阶

一、系统架构 一个运行中的 Elasticsearch 实例称为一个节点&#xff0c;而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成&#xff0c; 它们共同承担数据和负载的压力。当有节点加入集群中或者 从集群中移除节点时&#xff0c;集群将会重新平均分布所有的数据。 …