Kubernetes 네이티브 사이드카는 사이드카 패턴을 Kubernetes 애플리케이션에 통합하여 효율성, 안정성 및 단순성을 개선하는 보다 강력하고 사용자 친화적인 방법을 제공하는 것을 목표로 합니다.
네이티브 사이드카는 Istio에 적합합니다. 간소화된 사이드카 관리와 같은 여러 가지 이점을 제공합니다. 또한 안정성과 조정력이 개선됩니다. 또한 리소스를 최적화하고 운영 효율성을 향상시킵니다.
Kubernetes 버전 1.29부터 AKS에 대해 사이드카 컨테이너 기능이 활성화됩니다. 이번 변경으로 Istio 네이티브 사이드카 모드를 AKS용 Istio 추가 기능과 함께 사용할 수 있습니다.
이 문서에서는 AKS에서 Istio 기반 서비스 메시에 대한 네이티브 사이드카 모드를 사용하도록 설정하는 방법을 안내합니다.
시작하기 전에
az feature register를 통해
IstioNativeSidecarModePreview
기능 플래그를 등록합니다.az feature register --namespace Microsoft.ContainerService --name IstioNativeSidecarModePreview
az feature show를 통해 등록 상태를 확인합니다.
az feature show --namespace Microsoft.ContainerService --name IstioNativeSidecarModePreview
상태가
Registered
로 표시되는 데 몇 분 정도 걸립니다.상태가 등록됨으로 표시되면 az provider register를 통해
Microsoft.ContainerService
리소스 공급자의 등록을 새로 고칩니다.az provider register --namespace Microsoft.ContainerService
기존 클러스터에서
버전 확인
az aks show를 사용하여 AKS 클러스터의 Kubernetes 컨트롤 플레인 버전이 1.29 이상인지 확인합니다.
az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER -o json | jq ".kubernetesVersion"
컨트롤 플레인 버전이 너무 오래된 경우 Kubernetes 컨트롤 플레인을 업그레이드합니다.
노드 풀이
1.29
이상 버전을 실행하고 전원 상태가 실행 중인지 확인합니다.az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER -o json | jq ".agentPoolProfiles[] | { currentOrchestratorVersion, powerState}"
주의
네이티브 사이드카 모드에는 1.29+의 Kubernetes 컨트롤 플레인과 데이터 평면이 모두 필요합니다. 네이티브 사이드카 모드를 사용하도록 설정하기 전에 모든 노드가 1.29로 업그레이드되었는지 확인합니다. 그렇지 않으면 사이드카가 예상대로 작동하지 않습니다.
노드 풀 버전이 너무 오래된 경우 upgrade-node-image를
1.29
이상의 버전으로 업그레이드합니다.Istio 추가 기능이
asm-1-20
이상 수정 버전인지 확인합니다.az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER -o json | jq ".serviceMeshProfile.istio.revisions"
istiod
가 너무 오래된 경우 Istio 업그레이드의 단계에 따라asm-1-20
이상으로 업그레이드합니다.
Istio 컨트롤 플레인에서 네이티브 사이드카 기능 상태 확인
AKS 클러스터는 az aks update 명령으로 조정되어야 합니다.
az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER
네이티브 사이드카 모드가 사용하도록 설정되면 환경 변수 ENABLE_NATIVE_SIDECARS
가 Istio의 컨트롤 플레인 Pod 템플릿에 true
값으로 나타납니다. 다음 명령을 사용하여 istiod
배포를 확인합니다.
kubectl get deployment -l app=istiod -n aks-istio-system -o json | jq '.items[].spec.template.spec.containers[].env[] | select(.name=="ENABLE_NATIVE_SIDECARS")'
워크로드 다시 시작
Istio 컨트롤 플레인이 준비되면 워크로드를 순차적으로 다시 시작하여 istiod
가 네이티브 사이드카를 삽입할 수 있도록 합니다.
for ns in $(kubectl get ns -l istio.io/rev -o=jsonpath='{.items[0].metadata.name}'); do
kubectl rollout restart deployments -n $ns
done
istioctl kube-inject가 삽입된 istio 사이드카가 있는 배포의 경우 사이드카를 다시 삽입해야 합니다.
사이드카 삽입 확인
네이티브 쪽 모드가 성공적으로 사용하도록 설정되면 istio-proxy
컨테이너가 init 컨테이너로 표시됩니다. 사이드카 삽입을 확인하려면 다음 명령을 사용합니다.
kubectl get pods -o "custom-columns=NAME:.metadata.name,INIT:.spec.initContainers[*].name,CONTAINERS:.spec.containers[*].name"
istio-proxy
컨테이너는 init 컨테이너로 표시되어야 합니다.
NAME INIT CONTAINERS
sleep-7656cf8794-5b5j4 istio-init,istio-proxy sleep
새 클러스터 만들기
az aks create 명령을 사용하여 새 AKS 클러스터를 만들 때 버전 1.29
이상, istio asm-1-20
이상을 선택합니다. 새 클러스터에는 네이티브 사이드카 모드가 자동으로 켜져 있어야 합니다.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER \
--enable-asm \
--kubernetes-version 1.29 \
--revision asm-1-20 \
--generate-ssh-keys
...
다음 단계
Azure Kubernetes Service