使用Kubernetes的ArgoCD来部署服务

筹备工作

Kind的安装

choco install kind
kind -version
#>kind v0.11.1 go1.16.4 windows/amd64

安装argoCD-cli

$version = (Invoke-RestMethod https://api.github.com/repos/argoproj/argo-cd/releases/latest).tag_name
$url = "https://github.com/argoproj/argo-cd/releases/download/" + $version + "/argocd-windows-amd64.exe"
$output = "C:\argocd\argocd.exe"
Invoke-WebRequest -Uri $url -OutFile $output

然后,在系统环境变量中设置argoCD。

argocd version
#>argocd: v2.0.3+8d2b13d
#>  BuildDate: 2021-05-27T17:42:53Z
#>  GitCommit: 8d2b13d733e1dff7d1ad2c110ed31be4804406e2
#>  GitTreeState: clean
#>  GoVersion: go1.16
#>  Compiler: gc
#>  Platform: windows/amd64

创建集群

# a cluster with 3 control-plane nodes and 3 workers
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: control-plane
  - role: control-plane
  - role: worker
  - role: worker
  - role: worker
kind create cluster --config kind-3-3-cluster.yaml
kubectl create namespace argocd

ArgoCD的安装配置

展开ArgoCD。

kubectl apply -n argocd -f argoCD.yaml
kubectl get svc argocd-server -n argocd

#>NAME            TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                      AGE
#>argocd-server   LoadBalancer   10.96.91.38   <pending>     80:30619/TCP,443:32674/TCP   3h10m

对于Helm Chart的情况

PS C:\Users\aruki\Desktop\dev\kind> helm repo list
#NAME            URL
#gitlab          https://charts.gitlab.io
#local           http://***/api/v4/projects/8/packages/helm/stable
#bitnami         https://charts.bitnami.com/bitnami
#ingress-nginx   https://kubernetes.github.io/ingress-nginx

helm install my-argo-cd local/argo-cd

连接到ArgoCD用户界面

# Kubectlポートフォワーディング
kubectl port-forward svc/argocd-server -n argocd 8080:443

# 初期パスワードのチェック
kubectl -n argocd get secret argocd-initial-admin-secret -o go-template="{{.data.password | base64decode }}"
#>********

argocd login localhost:8080
#> WARNING: server certificate had error: x509: certificate signed by unknown authority. Proceed insecurely (y/n)?
#>Username: admin
#>Password:
#>'admin:login' logged in successfully
#>Context 'localhost:8080' updated

# パスワード変更
argocd account update-password

在此之后,您可以在浏览器中访问以下链接,即可显示argoCD的用户界面。
https://localhost:8080/applications

范例:部署Kubernetes仪表盘。

准备前事项

使用ArgoCD通过Helmchart部署Kubernetes Dashboard。

    SettingsRepositoriesで、リポジトリを追加する
image.png
project: default
source:
  repoURL: 'https://kubernetes.github.io/dashboard/'
  targetRevision: 4.3.1
  helm:
    valueFiles:
      - values.yaml
    parameters:
      - name: serviceAccount.name
        value: admin-user
  chart: kubernetes-dashboard
destination:
  server: 'https://kubernetes.default.svc'
  namespace: kubernetes-dashboard
syncPolicy:
  syncOptions:
    - CreateNamespace=true

    • NEW APPで下記のように登録

helmchartの名前、バージョンを指定する
すると、VALUES FILESをクリックしたときに候補としてvalues.yamlを選択できるようになるので、選択する
values.yamlを選択するとデフォルトの設定が入力されるが、デフォルト設定から、一か所だけ変更を加える。

serviceaccount.nameをadmin-userにする。これにより、ServiceAccountが追加される

image.png
image.png
image.png

部署

按照以下方式进行设置,并进行同步。

image.png

最终,我们可以确认所有内容都已创建并成功同步。

image.png

制作结果

image.png
image.png

从默认设置中,只进行了一处更改。

image.png

连接到Kubernetes仪表盘

要登录,需要ServiceAccount和clusterrolebinding。
– 添加clusterrolebinding。
※由于在argocd创建仪表板时会设置ServiceAccount,所以不需要额外添加。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
 kubectl apply -f clusterrole.yaml
    トークン取得
# トークン取得
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
>#eyJ*************************************************************************

kubectl proxy

然后,通过浏览器连接到下面的地址,就会显示出kubernetes-dashboard的用户界面,接着输入刚才显示的令牌即可。

image.png
image.png
广告
将在 10 秒后关闭
bannerAds