ArgoCDをOpenShift環境にデプロイする


はじめに

調査のための検証のメモです。(あくまで、簡易検証の作業のメモです。本番環境などではご自身で適切な手順を調査/検証してください。)

環境

  • Red Hat OpenShift on IBM Cloud
    • 4.7.16_1523
  • ArgoCD
    • v2.0.4+0842d44
  • 端末はWindows10
    • ocコマンド導入済み

参考にした情報

作業メモ

プロジェクト(namespace)の作成

oc login済みである前提です。

  1. oc new-project argocdを実施
PS C:\mywork> oc new-project argocd
Now using project "argocd" on server "https://XXXX.jp-tok.containers.cloud.ibm.com:31105".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app rails-postgresql-example

to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=k8s.gcr.io/serve_hostname

PS C:\mywork>

ArgoCDのマニフェストをApply

1. 作業用ディレクトリの作成

PS C:\mywork> mkdir argocd


    ディレクトリ: C:\mywork


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2021/07/09     10:42                argocd


PS C:\mywork> cd .\argocd\
PS C:\mywork\argocd>

2. install.yamlの入手

PS C:\mywork\argocd> Invoke-WebRequest -Uri https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -OutFile install.yaml
PS C:\mywork\argocd> dir


    ディレクトリ: C:\mywork\argocd


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/07/09     10:44         136926 install.yaml


PS C:\mywork\argocd>

3. install.yamlのapply

PS C:\mywork\argocd> oc apply -n argocd -f ./install.yaml
customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-redis created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-redis created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
clusterrole.rbac.authorization.k8s.io/argocd-server created
rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
rolebinding.rbac.authorization.k8s.io/argocd-redis created
rolebinding.rbac.authorization.k8s.io/argocd-server created
clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
configmap/argocd-cm created
configmap/argocd-gpg-keys-cm created
configmap/argocd-rbac-cm created
configmap/argocd-ssh-known-hosts-cm created
configmap/argocd-tls-certs-cm created
secret/argocd-secret created
service/argocd-dex-server created
service/argocd-metrics created
service/argocd-redis created
service/argocd-repo-server created
service/argocd-server created
service/argocd-server-metrics created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created
statefulset.apps/argocd-application-controller created
networkpolicy.networking.k8s.io/argocd-application-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-dex-server-network-policy created
networkpolicy.networking.k8s.io/argocd-redis-network-policy created
networkpolicy.networking.k8s.io/argocd-repo-server-network-policy created
networkpolicy.networking.k8s.io/argocd-server-network-policy created
PS C:\mywork\argocd>

4. podの状態確認

  • oc get podsコマンドを使い、argocdのnamespaceに存在しているpodの状態を確認します(エラーが出ているPodが無いか)
PS C:\mywork\argocd> oc project
Using project "argocd" on server "https://XXXXXX.jp-tok.containers.cloud.ibm.com:31105".
PS C:\mywork\argocd> 
PS C:\mywork\argocd> oc get pods
NAME                                  READY   STATUS    RESTARTS   AGE
argocd-application-controller-0       1/1     Running   0          2m42s
argocd-dex-server-76ff776f97-8pfmc    1/1     Running   0          2m42s
argocd-redis-747b678f89-ltjk9         1/1     Running   0          2m42s
argocd-repo-server-6fc4456c89-wvb2j   1/1     Running   0          2m42s
argocd-server-7d57bc994b-xs8hm        1/1     Running   0          2m42s
PS C:\mywork\argocd>
PS C:\mywork\argocd> oc get pods -n argocd
NAME                                  READY   STATUS    RESTARTS   AGE
argocd-application-controller-0       1/1     Running   0          2m38s
argocd-dex-server-76ff776f97-8pfmc    1/1     Running   0          2m38s
argocd-redis-747b678f89-ltjk9         1/1     Running   0          2m38s
argocd-repo-server-6fc4456c89-wvb2j   1/1     Running   0          2m38s
argocd-server-7d57bc994b-xs8hm        1/1     Running   0          2m38s
PS C:\mywork\argocd> 
  • 後続作業の前提として、以下の2つのPodの状態は要チェックします
PS C:\mywork\argocd> oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server"                                     NAME                             READY   STATUS    RESTARTS   AGE
argocd-server-7d57bc994b-xs8hm   1/1     Running   0          6m22s
PS C:\mywork\argocd> oc -n argocd get pod -l "app.kubernetes.io/name=argocd-dex-server"
NAME                                 READY   STATUS    RESTARTS   AGE
argocd-dex-server-76ff776f97-8pfmc   1/1     Running   0          6m43s
PS C:\mywork\argocd>

ArgoCDサーバーのパスワード取得

  • [argocd-initial-admin-secret]を選択し、詳細画面を開く
  • 画面をスクロール(ここで[Reveal values]リンクをクリックすると表示される)

ArgoCDサーバーのExposeおよびRouteの作成

1. patchの適用

  • 詳細は調べていないのですが(恥)、、検証した人のブログ等を参考に対応しました(--insecureの設定を追加したりしていました。)
PS C:\mywork\argocd> oc -n argocd patch deployment argocd-server --patch-file argocd-server-deployment.yaml
deployment.apps/argocd-server patched
PS C:\mywork\argocd>

2. Route作成

PS C:\mywork\argocd> oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect
route.route.openshift.io/argocd-server created
PS C:\mywork\argocd>
PS C:\mywork\argocd> oc get route -n argocd
NAME            HOST/PORT                                                                                                              PATH   SERVICES        PORT   TERMINATION     WILDCARD
argocd-server   argocd-server-argocd.mycluster-jp-tok-123456-0XXXXXXXXXXXXXXXXXXX0-0000.jp-tok.containers.appdomain.cloud          argocd-server   http   edge/Redirect   None
PS C:\mywork\argocd>

3. ブラウザーからアクセス

  • get routeコマンドで確認したHOST/PORTの値をブラウザーのアドレスバーに入力し、アクセスします

Adminパスワードのリセット

1. 初回のログイン

  • [Username]には「admin」、[Password]にはsecretから確認した値を指定し[SIGIN IN]をクリックします
  • ログインできることを確認します

2. パスワードの変更

  • FAQより、ガイドを抜粋します
    • To change the password, edit the argocd-secret secret and update the admin.password field with a new bcrypt hash.
  • Web Console上で[argocd-secret]の詳細画面を開きます
  • [Action]⇒[Edit Secret]メニューをクリックします
  • [admin.password]を編集します
    • FAQを参考に暗号化します(You can use a site like https://www.browserling.com/tools/bcrypt to generate a new hash
  • 編集後は忘れず[Save]します

  • 新しいパスワードでログインできることも確認してください

ArgoCD CLIのダウンロード

感想

特に躓かずに作業できましたが、以下には手を出せていません。

以上。