使用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で、リポジトリを追加する
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が追加される
部署
按照以下方式进行设置,并进行同步。
最终,我们可以确认所有内容都已创建并成功同步。
制作结果
从默认设置中,只进行了一处更改。
连接到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的用户界面,接着输入刚才显示的令牌即可。