测试:Argo CD的工作流程
准备 Git 仓库
在 GitHub 上创建一个项目,取名为 argocd-lab,为了方便实验将仓库设置为公共仓库。在仓库中新建 dev 目录,在目录中创建两个 YAML 配置清单,分别是 deployment.yaml
和 service.yaml
。
清单配置文件如下:
#清单配置
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
selector:
matchLabels:
app: myapp
replicas: 2
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: nginx:latest
ports:
- containerPort: 80
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- port: 80
protocol: TCP
targetPort: 80
#application的配置清单
# application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp-argo-application
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/yangchuansheng/argocd-lab.git
targetRevision: HEAD
path: dev
destination:
server: https://kubernetes.default.svc
namespace: myapp
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
prune: true
Argo CD 默认情况下每 3 分钟会检测 Git 仓库一次,用于判断应用实际状态是否和 Git 中声明的期望状态一致,如果不一致,状态就转换为 OutOfSync
。默认情况下并不会触发更新,除非通过 syncPolicy
配置了自动同步。
蓝绿部署
蓝绿部署核心流程
部署新版本(Green):在旧版本(Blue)运行的同时,部署新版本但不接收外部流量。
验证新版本