LoginSignup
1
0

More than 1 year has passed since last update.

[kubernetes]ArgoCDを利用したサービスのデプロイ

Last updated at Posted at 2021-06-19

事前準備

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

クラスター作成

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接続

# 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で、リポジトリを追加する

image.png

kubernetes-dashboard.yaml
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

デプロイ

下記のように設定し、sync(同期)する

image.png

結果、すべて作成され、同期できたことを確認できる。

image.png

作成結果

image.png

image.png

デフォルト設定からは、一か所だけ変更を加えている。

image.png

kubernetes-dashboardの接続

ログインするためには、ServiceAccountとclusterrolebindingが必要
- clusterrolebindingを追加する
※ServiceAccountは、argocdからdashboardを作成した時に設定しているので、追加不要

clusterrole.yaml
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が表示されるので、先ほど表示したトークンを入力する

image.png

結果、ログインに成功し、すべてのリソースが正常(緑表示)になっていることを確認する。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0