LoginSignup
1
0

More than 1 year has passed since last update.

Argo CD インストール

Posted at

概要

  • k8sテスト環境構築
    Argo CD インストール

構築目次

環境

  • Rancher: v2.6.3
  • kubernetes(Client): v1.22.4
  • kubernetes(Server): v1.22.4
  • Argocd: v2.2.1

前提条件

インストール

Argocd コマンドのダウンロード

$ wget https://github.com/argoproj/argo-cd/releases/download/v2.2.1/argocd-linux-amd64
$ mv argocd-linux-amd64 argocd
$ chmod +x argocd
$ sudo mv argocd /usr/local/bin/
$ argocd version --client
argocd: v2.2.1+122ecef
  BuildDate: 2021-12-17T01:31:40Z
  GitCommit: 122ecefc3abfe8b691a08d9f3cecf9a170cc8c37
  GitTreeState: clean
  GoVersion: go1.16.11
  Compiler: gc
  Platform: linux/amd64

Argocd インストール

## Namespace 作成 ##
$ kubectl create namespace argocd

## Argocd インストール ##
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

## 確認 ##
$ kubectl get all -n argocd
NAME                                      READY   STATUS    RESTARTS   AGE
pod/argocd-application-controller-0       1/1     Running   0          7m29s
pod/argocd-dex-server-76c978c87-v66jf     1/1     Running   0          7m29s
pod/argocd-redis-5b6967fdfc-7p59t         1/1     Running   0          7m29s
pod/argocd-repo-server-8555f94d4f-zwn6n   1/1     Running   0          7m29s
pod/argocd-server-bc59fd78c-kj2f5         1/1     Running   0          7m29s

NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/argocd-dex-server       ClusterIP   10.43.215.83    <none>        5556/TCP,5557/TCP,5558/TCP   7m30s
service/argocd-metrics          ClusterIP   10.43.98.185    <none>        8082/TCP                     7m30s
service/argocd-redis            ClusterIP   10.43.48.168    <none>        6379/TCP                     7m30s
service/argocd-repo-server      ClusterIP   10.43.142.118   <none>        8081/TCP,8084/TCP            7m30s
service/argocd-server           ClusterIP   10.43.255.118   <none>        80/TCP,443/TCP               7m30s
service/argocd-server-metrics   ClusterIP   10.43.13.156    <none>        8083/TCP                     7m29s

NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/argocd-dex-server    1/1     1            1           7m29s
deployment.apps/argocd-redis         1/1     1            1           7m29s
deployment.apps/argocd-repo-server   1/1     1            1           7m29s
deployment.apps/argocd-server        1/1     1            1           7m29s

NAME                                            DESIRED   CURRENT   READY   AGE
replicaset.apps/argocd-dex-server-76c978c87     1         1         1       7m29s
replicaset.apps/argocd-redis-5b6967fdfc         1         1         1       7m29s
replicaset.apps/argocd-repo-server-8555f94d4f   1         1         1       7m29s
replicaset.apps/argocd-server-bc59fd78c         1         1         1       7m29s

NAME                                             READY   AGE
statefulset.apps/argocd-application-controller   1/1     7m29s

設定

Ingress 設定

ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-ingress
  namespace: argocd
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  ingressClassName: nginx
  rules:
  - host: argocd.test.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: argocd-server
            port:
              number: 443
  • マニフェスト適用
$ kubectl apply -f ingress.yaml
  • hosts 設定追加
    Load BalancerのIPとIngressで設定したhostを紐づけ
$ cat /etc/hosts
........
192.168.245.111 argocd.test.local
........

ログイン設定

  • 初期パスワード確認
$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
xxxxxxxxxx
  • ログイン
## サーバーは上記Ingressで設定したホスト名、パスワードは初期パスワードでログイン。
$ argocd login argocd.test.local --username admin --password xxxxxxx

## ログイン後、パスワードを自分用に変更。
$ argocd account update-password
*** Enter password of currently logged in user (admin): 
*** Enter new password for user admin: 
*** Confirm new password for user admin: 
Password updated
Context 'argocd.test.local' updated

## パスワード変更後、初期パスワード用secretは削除
$ kubectl delete secret -n argocd argocd-initial-admin-secret

※ログアウトする場合は以下実行
$ argocd logout argocd.test.local

動作確認

レポジトリ追加

  • レポジトリ追加方法はいくつがあるが、ここではSSH Private Key利用
    ※GithubのSSH設定は説明スキップ
## 追加 ##
$ argocd repo add git@github.com:prodigy413/argocd-test.git --ssh-private-key-path ~/.ssh/github_key

## 確認 ##
$ argocd repo list
TYPE  NAME  REPO                                       INSECURE  OCI    LFS    CREDS  STATUS      MESSAGE  PROJECT
git         git@github.com:prodigy413/argocd-test.git  false     false  false  false  Successful 

Application 追加

  • マニフェスト作成
    • 対象Namespace:argocd-test
    • レポジトリ:argocd-test
    • パス:ルートディレクトリ
    • auto sync:有効(3分間隔でレポジトリ自動チェック)
    • prune:有効(Githubからリソースが消えるとKubernetes上のリソースも自動削除)
    • selfheal:有効(GithubとKubernetesのリソース差分があった場合、自動復旧)
application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: test
  namespace: argocd
spec:
  destination:
    name: ''
    namespace: argocd-test
    server: 'https://kubernetes.default.svc'
  source:
    path: ./
    repoURL: 'git@github.com:prodigy413/argocd-test.git'
    targetRevision: HEAD
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
  • マニフェスト適用
## 適用 ##
$ kubectl apply -f application.yaml

## 確認 ##
$ argocd app list
NAME  CLUSTER                         NAMESPACE    PROJECT  STATUS     HEALTH   SYNCPOLICY  CONDITIONS  REPO                                       PATH  TARGET
test  https://kubernetes.default.svc  argocd-test  default  OutOfSync  Missing  <none>      <none>      git@github.com:prodigy413/argocd-test.git  ./    HEAD

Kubernetes 設定

  • Namespace 作成
$ kubectl create ns argocd-test
  • テスト用Pod作成 以下マニフェストをargocd-testレポジトリにアップロード
nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
    env: test
spec:
  containers:
  - name: nginx
    image: nginx:1.21.4
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80

確認

## Podが自動作成されている。
$ kubectl get pod -n argocd-test
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          5s

## Podを削除しても自動で再作成される。
$ kubectl delete pod nginx -n argocd-test

$ kubectl get pod -n argocd-test
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          5s
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