はじめに
Kubernetes 1.22 で複数の Beta版のAPI の廃止に伴って、ArgoCD v2.0.0からbetaのAPIが消えているため、ArgoCDのバージョンを1.8.7から2.0.5 にアップグレードします。
現状バージョンの確認
$ argocd version --short argocd: v2.5.5+fc3eaec.dirty argocd-server: v1.8.7+eb3d1fb
v2.0.5 用マニフェストのダウンロード
v2.0.5 用のマニフェストをダウンロードします。
$ curl -O https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.5/manifests/install.yaml
v2.0.5 用ディレクトリ配下にマニフェストの分割
管理やすいために、latchmihay/k8s-yaml-splitter を用いて base-v2.0.5ディレクトリ配下にマニフェストを分割して配置します。
$ mkdir base-v2.0.5 $ k8s-yaml-splitter install.yaml base-v2.0.5 $ $ ls base-v2.0.5/ ClusterRole-argocd-application-controller.yaml ClusterRole-argocd-server.yaml ClusterRoleBinding-argocd-application-controller.yaml ClusterRoleBinding-argocd-server.yaml ConfigMap-argocd-cm.yaml ConfigMap-argocd-gpg-keys-cm.yaml ConfigMap-argocd-rbac-cm.yaml ConfigMap-argocd-ssh-known-hosts-cm.yaml ConfigMap-argocd-tls-certs-cm.yaml CustomResourceDefinition-applications.argoproj.io.yaml CustomResourceDefinition-appprojects.argoproj.io.yaml Deployment-argocd-dex-server.yaml Deployment-argocd-redis.yaml Deployment-argocd-repo-server.yaml Deployment-argocd-server.yaml NetworkPolicy-argocd-application-controller-network-policy.yaml NetworkPolicy-argocd-dex-server-network-policy.yaml NetworkPolicy-argocd-redis-network-policy.yaml NetworkPolicy-argocd-repo-server-network-policy.yaml NetworkPolicy-argocd-server-network-policy.yaml Role-argocd-application-controller.yaml Role-argocd-dex-server.yaml Role-argocd-redis.yaml Role-argocd-server.yaml RoleBinding-argocd-application-controller.yaml RoleBinding-argocd-dex-server.yaml RoleBinding-argocd-redis.yaml RoleBinding-argocd-server.yaml Secret-argocd-secret.yaml Service-argocd-dex-server.yaml Service-argocd-metrics.yaml Service-argocd-redis.yaml Service-argocd-repo-server.yaml Service-argocd-server-metrics.yaml Service-argocd-server.yaml ServiceAccount-argocd-application-controller.yaml ServiceAccount-argocd-dex-server.yaml ServiceAccount-argocd-redis.yaml ServiceAccount-argocd-server.yaml StatefulSet-argocd-application-controller.yaml $ $ rm -f install.yaml # 不要なので削除
バージョン v2.0.5 は v1.8.7に比べと、下記の5つのNetworkPolicy ファイルが追加されました:
NetworkPolicy-argocd-application-controller-network-policy.yaml
NetworkPolicy-argocd-dex-server-network-policy.yaml
NetworkPolicy-argocd-redis-network-policy.yaml
NetworkPolicy-argocd-repo-server-network-policy.yaml
NetworkPolicy-argocd-server-network-policy.yaml
[Option]Proxy の設定
環境により必要であれば、以下ファイルに Proxy(Squid) の設定を行う。
argo-cd/base-v1.8.7/StatefulSet-argocd-application-controller.yaml
argo-cd/base-v2.0.5/Deployment-argocd-dex-server.yaml
argo-cd/base-v2.0.5/Deployment-argocd-redis.yaml
argo-cd/base-v2.0.5/Deployment-argocd-repo-server.yaml
argo-cd/base-v2.0.5/Deployment-argocd-server.yaml
imagePullPolicy: Always
の次行に以下設定を追記します。
envFrom: - configMapRef: name: proxy-*****
[Option]ALB 経由で ArgoCD へアクセス可能とさせる設定
環境により必要であれば、以下ファイルを修正します。
argo-cd/base-v2.0.5/Deployment-argocd-server.yaml
argo-cd/base-v2.0.5/Service-argocd-server.yaml
Deployment-argocd-server.yaml:argocd-server
の起動オプションに --insecure
を追加します。
spec: containers: - command: - argocd-server - --staticassets - /shared/app - --insecure # 追加
Service-argocd-server.yaml:
環境により必要であれば、https の ClusterIP は使用しない場合、コメントアウトします。
# - name: https # port: 443 # protocol: TCP # targetPort: 8080
kube2iam で使用する ServiceAccount の設定
以下ファイルを修正します。
argo-cd/base-v2.0.5/Deployment-argocd-repo-server.yaml
spec.template.metadata に以下 annotations を追加します。
spec: selector: matchLabels: app.kubernetes.io/name: argocd-repo-server template: metadata: annotations: # 追記 iam.amazonaws.com/role: ***role名*** # 追記 labels: app.kubernetes.io/name: argocd-repo-server
バージョンアップ実施
検証のための環境ではGitLab上でmaster ブランチへのマージを行うと、ArgoCD にて自動デプロイが実行され、この部分の解説は省略させていただきます。
argocli でサーバのバージョンを確認し、argocd-server のバージョンが v2.0.5 となっていることを確認します。
$ argocd version --short argocd: v2.5.5+fc3eaec.dirty argocd-server: v2.0.5+4c94d88
動作確認
ArgoCD の WebUI にアクセスし、ログインできることを確認します。