Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具,支持多种配置管理/模板工具(例如 Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)。
Argo CD 被实现为一个 Kubernetes 控制器,它持续监控正在运行的应用程序并将当前的实时状态与所需的目标状态(例如 Git 仓库中的配置文件)进行比较,在 Git 仓库更改时自动同步和部署应用程序。
环境准备:
1、一套k8s集群(部署教程可以看k8s专栏,亲测无坑)
2、git仓库(此处为了方便演示cd过程,所以使用gitee作为演示)
部署:
# 创建命名空间
kubectl create namespace argocd
# 下载yaml文件
wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
#修改argo-server的service的tpye为NodePort
vim install.yaml
...
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: server
app.kubernetes.io/name: argocd-server
app.kubernetes.io/part-of: argocd
name: argocd-server
spec:
type: NodePort #对外暴露端口
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
- name: https
port: 443
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: argocd-server
...
#部署(需要等待几分钟,拉取镜像的过程比较慢)
kubectl apply -n argocd -f install.yaml
#查看服务情况
kubectl get svc,deploy -n argocd
浏览器访问 ip:port
默认账号admin
密码获取方式:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=“{.data.password}” | base64 -d
在gitee上创建一个仓库argocd ,创建一个名为test的文件夹下面放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
实验所需的镜像已经在阿里云的镜像仓库中准备好了,大家可以直接使用
1、配置仓库认证
配置过程省略
2、创建项目
#创建k8s名称空间,本次项目部署在该处
kubectl create namespace devops
创建成功会看到这个
访问 ip+port
更新
修改gitee上deploy的版本为v2
观察argo,自动更新
访问 ip+port
2、回退
访问 ip+port