[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
choco install kind
kind -version
#>kind v0.11.1 go1.16.4 windows/amd64
$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
クラスター作成
kind-3-3-cluster.yaml
# 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
helmchartの場合
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 UI接続
# 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展開
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
helmchartの場合
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 UI接続
# 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のUIが表示される。
https://localhost:8080/applications
サンプル:kubernetes-dashboardのデプロイ
事前準備
kubernetes-dashboardをargoCDでデプロイする(Helmchart経由)
- 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が追加される
デプロイ
下記のように設定し、sync(同期)する
結果、すべて作成され、同期できたことを確認できる。
作成結果
デフォルト設定からは、一か所だけ変更を加えている。
kubernetes-dashboardの接続
ログインするためには、ServiceAccountとclusterrolebindingが必要
- clusterrolebindingを追加する
※ServiceAccountは、argocdからdashboardを作成した時に設定しているので、追加不要
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のUIが表示されるので、先ほど表示したトークンを入力する
Author And Source
この問題について([kubernetes]ArgoCDを利用したサービスのデプロイ), 我々は、より多くの情報をここで見つけました https://qiita.com/KO_YAmajun/items/dc24e03275eab7e3f9af著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .