⚙️
Kubernetes: Upgrading Argo CD
Argo CD の version up について。個人的な memo として。
Argo CD の maintenance が滞っていたため、Argo CD の version up と cluster の version up に対応する。
下記の warning によって自動更新が止まっていた。
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
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.
Deprecated resource warning
- API
/apis/policy/v1beta1/podsecuritypolicies
が削除された。1.25 において。
以下の message が表示される。 - configmap
argocd-cm
に設定を追加する。PodSecurityPolicy
を監視から除外する。edit 後、argocd-application-controller
の rollout も忘れずに。
argocd-cm
resource.exclusions: |
- apiGroups:
- policy
kinds:
- PodSecurityPolicy
clusters:
- "*"
Update Cluster
- cluster を manual で update する。
BTW
single-tenant で運用すると cluster の数だけ maintenance が発生する cons がある。
一方、multi-tenant だと maintenance は一発で終わるが、影響が大きい。
悩ましい。
Discussion