본문으로 건너뛰기

Upgrade

Canary 업그레이드

사전 체크

istioctl x precheck

CRD 업그레이드

kubectl apply -f https://raw.githubusercontent.com/istio/istio/1.14.5/manifests/charts/base/crds/crd-all.gen.yaml
kubectl apply -f https://raw.githubusercontent.com/istio/istio/1.14.5/manifests/charts/base/crds/crd-operator.yaml

istiod 새 버전 추가

helm show values istio/istiod \
--version 1.14.5 \
> istiod-1-14-5-values.yaml
istiod-1-14-5-values.yaml
revision: 1-14-5
경고

multi-cluster 등을 위한 istiod 추가적인 설정이 있으면 revision 외의 설정도 수정해줘야 합니다.

helm upgrade istiod-1-14-5 istio/istiod \
--install \
--version 1.14.5 \
-n istio-system \
-f istiod-1-14-5-values.yaml

re-injection Envoy sidecar

istio-injection=enabled 레이블이 있는 네임스페이스는 istio-injection 레이블을 삭제하고 명시적으로 revision을 설정해줍니다.

kubectl label namespace -l istio-injection=enabled istio-injection- istio.io/rev=1-14-5

이전 버전이 명시되어 있는 경우 새로운 버전으로 변경합니다.

kubectl label namespace -l istio.io/rev=1-13-2 istio.io/rev=1-14-5

변경된 레이블을 확인합니다.

kubectl get namespace -L istio.io/rev -L istio-injection

변경된 레이블에 따라 새로운 Envoy sidecar가 추가될 수 있도록 Deployment를 rollout합니다.

for ns in $(kubectl get namespace -l istio.io/rev=1-14-5 -o name); do
kubectl rollout restart deployment -n $(echo $ns | cut -d'/' -f2)
done

아래 명령어를 통해 새로운 istiod를 사용하는지 확인합니다.

istioctl proxy-status --revision 1-13-2
istioctl proxy-status --revision 1-14-5
경고

service “istiod” not found 에러가 발생하면 MutatingWebhookConfiguration 또는 Validatingwebhookconfigurations를 확인해보시기 바랍니다.

기존 istiod 삭제

helm delete istiod-1-13-2 -n istio-system

istio-base 업그레이드

helm show values istio/base \
--version 1.14.5 \
> istio-base-values.yaml
istio-base-values.yaml
defaultRevision: 1-14-5
helm upgrade istio-base istio/base \
--install \
--version 1.14.5 \
-n istio-system \
--skip-crds \
-f istio-base-values.yaml