在学习 ArgoCD 前,先来想想之前我们是如何部属服务到 Kubernetes,普通方法会先将所需的原件写成 yaml 档案,接着包装到 Helm Chart 里,最後就可以使用 helm install
的指令安装服务。
忘记 Helm Chart 如何建立可以回到 Day15 复习一下。
当你的应用程序有新的更动,就需要更新 Helm Chart 里面的内容,并且再重新布署一次,这样一来一回的动作常会导致许多问题
当手动操作容易发生问题, DevOps 方法告诉你这时候就要想办法用自动化来解决,於是 GitOps 的概念就出现了。今天要学习的 ArgoCD 就是一种 GitOps 方式的 CD 工具,只需要将应用程序所需元件设定档 (如 Helm) 做版本控制,当我们更新 Git Repo,ArgoCD 就会根据新版本自动更新 Kubernetes 应用程序。
藉由版本控制的特性,不仅可以确定环境中的版本为何,也可以纪录每次对应用程序的变动,若需要 Rollback ,只需要将 Git 退回特定版本就行。
接下来我们就在 GKE 上安装 ArgoCD 应用,本篇参考 Argo CD Getting Started 教学。
进入 Cloud Shell 网站
点击倒三角形->点选专案的 PROJECT_ID
,开启专案 Terminal
argocd
命名空间kubectl create namespace argocd
K8s 利用命名空间将环境切割,使各个命名空间不能互相干扰,以达到隔离作用。
kubectl apply -n <namespace> -f <file>
建立 ArgoCD 应用kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
应用所需元件就会部属到 argocd
的命名空间里,可以使用 kubectl get <type> -n <namespace>
查看原件。
kubectl get pods -n argocd
(输出结果)
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 5m18s
argocd-dex-server-6dbfc4d6bf-hrjx2 1/1 Running 0 5m19s
argocd-redis-74d8c6db65-hxwv2 1/1 Running 0 5m19s
argocd-repo-server-5449b9744b-lrdch 1/1 Running 0 5m19s
argocd-server-5cd74676dc-m927x 1/1 Running 0 5m19s
再来我们要使用 ArgoCD 的 UI 介面,预设并没有外部 IP 可以连线,所以我们将 argocd-server
的 Service Type 改成 LoadBalancer
, GCP 就会分发一个外部 IP 作为连接。
argocd-server
的 Service Type 改为 LoadBalancer
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
若你是在本地端工作可以下
kubectl port-forward svc/argocd-server -n argocd 8080:443
指令,透过 port-forward 的方式连线。
kubectl get svc argocd-server -n argocd
(输出结果)
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 10.3.250.234 34.96.199.37 80:31624/TCP,443:32380/TCP 7m39s
可以看到 Type 为 LoadBalancer
,并且得到了一组 External-IP ,透过此 IP 就能可以连线到 ArgoCD 。
http://<EXTERNAL-IP>
可以看到 ArgoCD 登入画面,预设密码是随机产生的,可以使用 kubectl
指令获取密码。
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
(输出结果)
T5akbLXLVfdUW30K
User Info
UPDATE PASSWORD
,输入新的密码後点选 SAVE NEW PASSWORD
ArgoCD 的基本安装与配置就完成了。
其实看官网看这篇的时候很想pass,有点看不下去XD,但还是做了笔记。若有错误,欢迎留言指教,感恩...
上次开场白说明了NNI最基本的Hyper-parameters(超参)调整,其实只是其中的功能之一。...
由於感觉我这前几天的文章都字数以及内容都蛮少的,简单来说就只是想低空 飞过,打混过关;结果想透过...
终於拿到手的Raspberry Pi Compute module 4 参考 官网 (确保电脑没有连...
天亮了 昨晚是平安夜 关於迷雾森林故事 焦虑抑制剂 10号:哈罗大家好,我是海马诚实小君,其实原本一...