前一天我们在 K8s Cluster 建置好了 ArgoCD 服务,今天就来实际操作看看,透过 ArgoCD 建立 Application 的 Stage 以及 Production 环境。
因为 ArgoCD 是以 GitOps 的方式运作,一开始需要先将 Manifest Repo 连线到 ArgoCD ,我们就来实际操作看看。
使用 Day21 介绍的方式登入到 ArgoCD
点击左边齿轮,接着点选 Repositories
CONNECT REPO USING HTTPS
Clone-> Clone with HTTPS
复制地址Repository URL
贴上位址,完成後点击CONNECT
可以看到成功连线到 Manifest Repository。
因为我们设置的是 Public Repository ,不需要提供帐号密码就能连线,若你是使用 Privare 的 Repo,就需要建立金钥才能连线。
接着试着透过 GUI ,建立 Application 的 Stage 环境。
CREATE APPLICATION
GENERAL
输入以下资讯Application Name
Project
SYNC POLICY
PRUNE RESOURCES
打勾SELF HEAL
打勾AUTO-CREATE NAMESPACE
打勾这里的 Sync Policy 为同步方式,Automatic 代表当 Git Repo 更新 ArgoCD 也会自动同步。
SOURCE
以及 DESTINATION
输入以下资讯Repository URL
Revision
Path
Cluster URL
Namespace
Source 为你要使用的资源位置,这里的设置代表会使用 Manifest Repo 在 HEAD 上的根目录档案。
Destination 为资源要部属的位置,这里选择 default.svc ( 执行 ArgoCD 的 K8s Cluster ),并且会部属在 stage 的命名空间。
还记得之前的章节我们在 Helm Chart 里面建立了多个 values 档案,在 ArgoCD 中,就可以根据需要的环境带入不同配置的 values 档案。
Helm -> VALUES FILES
选择 values.stage.yaml
档案CREATE
,主画面就可以看到新的 Application等到 Status 显示 Synced ,代表 ArgoCD 已经建置好服务了,我们可以到 Kubernetes 实际验证一下。
进入 Cloud Shell 网站
点击倒三角形->点选专案的 PROJECT_ID
,开启专案 Terminal
kubectl get all -n stage
(输出结果)
NAME READY STATUS RESTARTS AGE
pod/webapp-stage-5bcbc8d798-4nf9j 1/1 Running 0 9m36s
pod/webapp-stage-5bcbc8d798-4nvkr 1/1 Running 0 9m36s
pod/webapp-stage-5bcbc8d798-9nhdb 1/1 Running 0 9m36s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/webapp-stage LoadBalancer 10.3.254.204 34.150.28.184 80:31918/TCP 9m39s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/webapp-stage 3/3 3 3 9m40s
NAME DESIRED CURRENT READY AGE
replicaset.apps/webapp-stage-5bcbc8d798 3 3 3 9m41s
可以看到元件都已建置完成,使用 Service 的 EXTERNAL-IP 连线到服务确认有无正常执行。
http://<SERVICE EXTERNAL-IP>
可以看到服务正常运行。
ArgoCD 的 Application 也是一种 Kubernetes 元件,所以可以建置相关的 yaml 档案,并用 kubectl apply
的方式来建立,就来试着用 CLI 的方式建立 Application 的 Production 环境。
webapp-prod.yaml
档案mkdir ~/argocd && cd ~/argocd
touch webapp-prod.yaml
webapp-prod.yaml
档案并输入以下内容,需要将 repoURL 改成你的 Manifest RepoapiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: webapp-prod
spec:
destination:
name: ''
namespace: prod
server: 'https://kubernetes.default.svc'
source:
path: .
repoURL: '<YOUR Manifest Repo>'
targetRevision: HEAD
helm:
valueFiles:
- values.production.yaml
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
kubectl apply -f <file>
建立 ArgoCD Applicationkubectl apply -f webapp-prod.yaml
kubectl get application -n argocd
(输出结果)
NAME SYNC STATUS HEALTH STATUS
webapp-prod Synced Progressing
webapp-stage Synced Healthy
会看到多了一个 webapp-prod 的 App ,在 ArgoCD 的 GUI 也可以看到。
kubectl get all -n prod
(输出结果)
NAME READY STATUS RESTARTS AGE
pod/webapp-prod-6448d5b84-5fsfs 1/1 Running 0 2m9s
pod/webapp-prod-6448d5b84-bqh8n 1/1 Running 0 2m9s
pod/webapp-prod-6448d5b84-hnsjr 1/1 Running 0 2m9s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/webapp-prod LoadBalancer 10.3.254.73 34.92.49.24 80:30082/TCP 2m11s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/webapp-prod 3/3 3 3 2m10s
NAME DESIRED CURRENT READY AGE
replicaset.apps/webapp-prod-6448d5b84 3 3 3 2m10s
可以看到 Production 环境的元件也建置完成。
今天学习到如何使用 ArgoCD 建立应用程序,也代表从 Day16 - Day22 制作的 CI/CD 流水线已经可以工作了,明天我们就来试试看,到底多了 CI/CD 工具对开发以及维运有哪些好处。
: 听说你ARM很厉害 你怎麽学习的? 学习? 每天伏地挺身100下就好了阿 : ??? 在进入正题...
双十连假收假,来学习如何把 IG 汇入到 WordPress 网站中,根据网站的架构有一个 LIFE...
欸!又是 30 天罗 当年参赛之後说绝对不再参加的,结果身边一堆人参赛 自己也在想尝试其他语言,就索...
由於 WordPress 区块编辑器 已经推出了一段时间,不过部分新手在操作时发现不好上手,尤其在...
tags: swfLAB ⚠️ Of course this is only my personal...