⚙️

Kubernetes: Upgrading Argo CD

2024/02/17に公開

Argo CD の version up について。個人的な memo として。

Argo CD の maintenance が滞っていたため、Argo CD の version up と cluster の version up に対応する。

下記の warning によって自動更新が止まっていた。

https://cloud.google.com/kubernetes-engine/docs/deprecations/podsecuritypolicy?hl=ja

Upgrading Argo CD and Ingress

Upgrading Argo CD

  • stable を apply する。
gcloud config set project $PROJECT_ID
gcloud container clusters get-credentials $DEFAULT_CLUSTER_NAME --zone $DEFAULT_ZONE --project $PROJECT_ID
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

https://argo-cd.readthedocs.io/en/stable/operator-manual/upgrading/overview/

Recreate Ingress

  • argocd-server の manifest が変更になっているため service discovery を含め、再作成する。
kubectl delete ingress argocd -n argocd
kubectl delete svc argocd-server -n argocd
kubectl delete svc argocd-server -n argocd
cat << EOF  | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: argocd-server
  namespace: argocd
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app.kubernetes.io/name: argocd-server
EOF
cat << EOF  | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd
  namespace: argocd
  annotations:
    kubernetes.io/ingress.global-static-ip-name: example-cd-ip
    networking.gke.io/managed-certificates: secret-example
    ingressClassName: "gce"
spec:
  rules:
    - host: cd.example.com
      http:
        paths:
        - pathType: Prefix
          path: "/"
          backend:
            service:
              name: argocd-server
              port:
                number: 80
EOF
  • argocd-server の TLS の対応を行う。configmap で server.insecure: "true" を設定する。edit 後、argocd-server の rollout も忘れずに。
    kubectl rollout restart sts argocd-application-controller -n argocd
    

    Disable internal TLS
    First, to avoid internal redirection loops from HTTP to HTTPS, the API server should be run with TLS disabled.
    Edit the --insecure flag in the argocd-server command of the argocd-server deployment, or simply set server.insecure: "true" in the argocd-cmd-params-cm ConfigMap as described here.

https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#google-cloud-load-balancers-with-kubernetes-ingress

Deprecated resource warning

  • API /apis/policy/v1beta1/podsecuritypolicies が削除された。1.25 において。
    以下の message が表示される。
  • configmap argocd-cm に設定を追加する。PodSecurityPolicy を監視から除外する。edit 後、argocd-application-controller の rollout も忘れずに。

https://github.com/argoproj/argo-cd/issues/12382

https://argo-cd.readthedocs.io/en/latest/operator-manual/declarative-setup/#resource-exclusioninclusion

argocd-cm
  resource.exclusions: |
    - apiGroups:
      - policy
      kinds:
      - PodSecurityPolicy
      clusters:
      - "*"

Update Cluster

  • cluster を manual で update する。

BTW

single-tenant で運用すると cluster の数だけ maintenance が発生する cons がある。
一方、multi-tenant だと maintenance は一発で終わるが、影響が大きい。
悩ましい。

GitHubで編集を提案

Discussion