0
0

More than 1 year has passed since last update.

Amazon EKSでArgoCDを利用する

Last updated at Posted at 2022-10-19

はじめに

Amazon EKSでArgoCDを利用する方法をまとめます。
Mac環境を想定しています。

実行環境の準備

  1. AWS CLIの設定
    AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。

  2. EKSクラスタの構築
    Macでeksctlを利用してAmazon EKSのクラスターを構築するを参考にしてください。

  3. EKSのコンテキストの設定
    MacにてAmazon EKSの設定をするを参考にしてください。

  4. Helmの設定
    Amazon EKSでHelmを利用するを参考にしてください。

環境設定

  1. ArgoCD CLIのインストール

    brew install argocd
    
  2. ArgoCDのチャートをHelmでインストールする
    ※事前にKubernetesクラスターのコンテキストの設定をします。

    # argo チャートリポジトリを追加する
    helm repo add argo https://argoproj.github.io/argo-helm
    
    # リポジトリを更新する
    helm repo update
    
    # ArgoCD のチャートをインストールする
    # Install CRDs if you are using Helm2.
    helm install argocd argo/argo-cd \
      -n argocd \
      --set installCRDs=false \
      --create-namespace
    
    # ArgoCD がインストールされたことを確認する
    helm list -n argocd
    
  3. ArgoCD 初期パスワードを確認する

    kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
    
  4. ArgoCD を起動する

    kubectl port-forward service/argocd-server -n argocd 8080:443
    
  5. ArgoCD 初期パスワードを変更する
    ※デフォルトのアカウント名は admin になります。
    ※ArgoCDを起動した状態でないとパスワードの変更はできません。

    # ログインする
    argocd login \
      --username admin \
      --password "$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d && echo)" \
      --insecure localhost:8080
    
    # パスワードを変更する
    argocd account update-password \
      --account admin \
      --current-password "$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d && echo)" \
      --new-password "${新しいパスワード}" --insecure
    
  6. ArgoCD 初期パスワードが格納されていたSecretを削除する

    kubectl -n argocd delete secret argocd-initial-admin-secret
    
  7. ArgoCD にアクセスする

    open "https://localhost:8080"
    

[サンプル] guestbook-goのマニフェスト

guestbook-goを構築する。

  1. guestbook-go.yaml を作成する

    guestbook-go.yaml
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: guestbook
      namespace: argocd
      finalizers:
        - resources-finalizer.argocd.argoproj.io
    spec:
      project: default
      source:
        repoURL: https://github.com/kubernetes/examples.git
        path: guestbook-go
      destination:
        server: 'https://kubernetes.default.svc'
        namespace: guestbook
      syncPolicy:
        syncOptions:
        - CreateNamespace=true
        automated:
          prune: true
          selfHeal: true
    
  2. クラスターに適用する

    kubectl apply -f guestbook-go.yaml
    
  3. guestbook にアクセスする
    ※ELBが構築されるまで、数分アクセスできないことがあります。

    open "http://$(kubectl get svc -n guestbook guestbook | awk '{ print $4 }' | tail -1):$(kubectl get svc -n guestbook guestbook | awk '{ print $5 }' | tail -1 | cut -d ':' -f 1)"
    

クリーンアップ

  1. クラスターから削除する

    kubectl delete -f guestbook-go.yaml
    
  2. ArgoCDをHelmで削除する

    helm delete argo -n argocd 
    
  3. Namespaceを削除する

    kubectl delete ns argocd
    
0
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
0
0