免费建立个人网站,装修设计工作室推荐,手机网页制作软件有哪些,将网站制作成app目录
一、什么是 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
A…目录
一、什么是 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 的主要职责是 CDContinuous Delivery持续交付将应用部署到 Kubernetes 等环境 中而 CIContinuous Integration持续集成主要是交给 JenkinsGitlab 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: 1selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- image: registry.cn-shanghai.aliyuncs.com/public-namespace/myapp:v1name: myapp ports:- containerPort: 80 ---
# myapp-service.yaml
apiVersion: v1
kind: Service
metadata:name: myapp
spec:ports:- port: 80targetPort: 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 MESSAGEService 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: myappnamespace: 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 会自动更新应用如果等不及可以点击 RefreshArgo CD 会去立即获取最新的资源 文件。可以看到此时 myapp Deployment 会新创建 v2 版本的 Replicasetv2 版本的 Replicaset 会创 建并管理 v2 版本的 Pod。 8、版本回滚
升级到 v2 版本以后 v1 版本的 Replicaset 并没有被删除而是继续保留这是为了方便我们回滚应 用。在 myapp 应用中点击 HISTORY AND ROLLBACK 查看历史记录可以看到有 2 个历史记录 假设刚刚上线的 v2 版本出现了问题需要回滚回 v1 版本那么可以选中 v1 版本然后点击 Rollback 进行回滚 在回滚的时候需要禁用 AUTO-SYNC 自动同步点击 OK 确认即可 等待一会可以看到此时已经回滚成功此时 Pod 是 v1 版本的并且由于此时线上的版本并不是 Git 仓 库中最新的版本因此此时同步状态是 OutOfSync