Day21 - ArgoCD 介绍及安装

ArgoCD 介绍

在学习 ArgoCD 前,先来想想之前我们是如何部属服务到 Kubernetes,普通方法会先将所需的原件写成 yaml 档案,接着包装到 Helm Chart 里,最後就可以使用 helm install 的指令安装服务。

忘记 Helm Chart 如何建立可以回到 Day15 复习一下。

https://ithelp.ithome.com.tw/upload/images/20210921/20139235Nb8vEaZjER.png

当你的应用程序有新的更动,就需要更新 Helm Chart 里面的内容,并且再重新布署一次,这样一来一回的动作常会导致许多问题

  • 不知道环境里到底是哪个版本的应用程序
  • 不小心更新错了,也没有一个好的方式可以 Rollback

当手动操作容易发生问题, DevOps 方法告诉你这时候就要想办法用自动化来解决,於是 GitOps 的概念就出现了。今天要学习的 ArgoCD 就是一种 GitOps 方式的 CD 工具,只需要将应用程序所需元件设定档 (如 Helm) 做版本控制,当我们更新 Git Repo,ArgoCD 就会根据新版本自动更新 Kubernetes 应用程序。

https://ithelp.ithome.com.tw/upload/images/20210921/201392350NpBaoRHHA.png

藉由版本控制的特性,不仅可以确定环境中的版本为何,也可以纪录每次对应用程序的变动,若需要 Rollback ,只需要将 Git 退回特定版本就行。

ArgoCD 安装

接下来我们就在 GKE 上安装 ArgoCD 应用,本篇参考 Argo CD Getting Started 教学。

  1. 进入 Cloud Shell 网站

  2. 点击倒三角形->点选专案的 PROJECT_ID,开启专案 Terminal

  1. 建立 argocd 命名空间
kubectl create namespace argocd

K8s 利用命名空间将环境切割,使各个命名空间不能互相干扰,以达到隔离作用。

  1. 使用 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> 查看原件。

  1. 查看 ArgoCD Pods 运行状态
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 作为连接。

  1. 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 的方式连线。

  1. 查看 argocd-server Service
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 。

  1. 开启浏览器,输入网址後送出
http://<EXTERNAL-IP>

https://ithelp.ithome.com.tw/upload/images/20210921/20139235Hqd7Bvqg8P.png

可以看到 ArgoCD 登入画面,预设密码是随机产生的,可以使用 kubectl 指令获取密码。

  1. 获取预设密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

(输出结果)

T5akbLXLVfdUW30K
  1. 输入帐号密码登入 ArgoCD 介面。
  • Username
    • admin
  • Password
    • 刚刚拿到的密码
  1. 进入到 UI 介面後,点击左边 User Info

https://ithelp.ithome.com.tw/upload/images/20210921/20139235VW624kjs0P.png

  1. 点击 UPDATE PASSWORD ,输入新的密码後点选 SAVE NEW PASSWORD

https://ithelp.ithome.com.tw/upload/images/20210921/20139235SO9dXk8q3C.png

ArgoCD 的基本安装与配置就完成了。


<<:  [Day9]-字典(dict)

>>:  Day 9 Dart语言-继承及介面实现

Day17: 【TypeScript 学起来】什麽是 Narrowing?

其实看官网看这篇的时候很想pass,有点看不下去XD,但还是做了笔记。若有错误,欢迎留言指教,感恩...

NNI的特性及核心功能

上次开场白说明了NNI最基本的Hyper-parameters(超参)调整,其实只是其中的功能之一。...

[Day 09] 剩下的时间规划

  由於感觉我这前几天的文章都字数以及内容都蛮少的,简单来说就只是想低空 飞过,打混过关;结果想透过...

[ Raspberry Pi ] Compute module 4 eMMC 烧录流程 ((CM4))

终於拿到手的Raspberry Pi Compute module 4 参考 官网 (确保电脑没有连...

[第十三只羊] 迷雾森林舞会VI devise登入

天亮了 昨晚是平安夜 关於迷雾森林故事 焦虑抑制剂 10号:哈罗大家好,我是海马诚实小君,其实原本一...