Azure Kubernetes Service 대한 Istio 기반 서비스 메시 추가 기능 배포(미리 보기)
이 문서에서는 AKS(Azure Kubernetes Service) 클러스터용 Istio 기반 서비스 메시 추가 기능을 설치하는 방법을 보여 줍니다.
Istio 및 서비스 메시 추가 기능에 대한 자세한 내용은 Azure Kubernetes Service 대한 Istio 기반 서비스 메시 추가 기능을 참조하세요.
중요
AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.
시작하기 전에
환경 변수 설정
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Azure CLI 및 aks-preview 확장 버전 확인
추가 기능에는 다음이 필요합니다.
- Azure CLI 버전 2.44.0 이상이 설치되었습니다. 설치 또는 업그레이드하려면 [Azure CLI 설치][install-azure-cli]를 참조하세요.
aks-preview
버전 0.5.133 이상의 Azure CLI 확장이 설치됨
를 실행 az --version
하여 위의 버전을 확인할 수 있습니다.
aks-preview 확장을 설치하려면 다음 명령을 실행합니다.
az extension add --name aks-preview
다음 명령을 실행하여 릴리스된 확장의 최신 버전으로 업데이트합니다.
az extension update --name aks-preview
AzureServiceMeshPreview 기능 플래그 등록
az feature register 명령을 사용하여 AzureServiceMeshPreview
기능 플래그를 등록합니다.
az feature register --namespace "Microsoft.ContainerService" --name "AzureServiceMeshPreview"
기능을 등록하는 데 몇 분 정도 걸립니다. az feature show 명령을 사용하여 등록 상태를 확인합니다.
az feature show --namespace "Microsoft.ContainerService" --name "AzureServiceMeshPreview"
상태가 등록됨으로 표시되면 az provider register 명령을 사용하여 Microsoft.ContainerService 리소스 공급자의 등록을 새로 고칩니다.
az provider register --namespace Microsoft.ContainerService
클러스터를 만들 때 Istio 추가 기능 설치
클러스터를 만들 때 Istio 추가 기능을 설치하려면 또는--enable-asm
매개 변수를 --enable-azure-service-mesh
사용합니다.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm
기존 클러스터에 대한 Istio 추가 기능 설치
다음 예제에서는 기존 AKS 클러스터에 대해 Istio 추가 기능을 사용하도록 설정합니다.
중요
OSM 추가 기능이 이미 클러스터에 있는 경우 기존 클러스터에서 Istio 추가 기능을 사용하도록 설정할 수 없습니다. Istio 추가 기능을 설치하기 전에 OSM 추가 기능을 제거합니다. 자세한 내용은 AKS 클러스터에서 OSM 추가 기능 제거를 참조하세요. Istio 추가 기능은 버전 >= 1.23의 AKS 클러스터에서만 사용하도록 설정할 수 있습니다.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
성공적인 설치 확인
Istio 추가 기능이 클러스터에 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
출력에 가 표시되는지 확인합니다 Istio
.
AKS 클러스터의 자격 증명에 사용합니다 az aks get-credentials
.
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
를 사용하여 kubectl
(Istio 컨트롤 플레인 istiod
) Pod가 성공적으로 실행되고 있는지 확인합니다.
kubectl get pods -n aks-istio-system
Pod에 의 istiod
상태 확인합니다Running
. 예:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-17-74f7f7c46c-xfdtl 1/1 Running 0 2m
사이드카 주입 사용
새 Pod에 사이드카를 자동으로 설치하려면 네임스페이스에 주석을 추가합니다.
kubectl label namespace default istio.io/rev=asm-1-17
중요
기본 istio-injection=enabled
레이블 지정이 작동하지 않습니다. 명시적 버전 관리(istio.io/rev=asm-1-17
)가 필요합니다.
를 사용하여 istioctl kube-inject
사이드카를 수동으로 삽입하려면 () 및 revision
(-i
-r
)에 대한 추가 매개 변수를 istioNamespace
지정해야 합니다. 예제:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-1-17) -n foo
샘플 애플리케이션 배포
를 사용하여 kubectl apply
클러스터에 샘플 애플리케이션을 배포합니다.
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/platform/kube/bookinfo.yaml
클러스터에 여러 배포 및 서비스가 만들어지는지 확인합니다. 예:
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
를 사용하여 kubectl get services
서비스가 성공적으로 만들어졌는지 확인합니다.
kubectl get services
다음 서비스가 배포되었는지 확인합니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.180.193 <none> 9080/TCP 87s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 15m
productpage ClusterIP 10.0.112.238 <none> 9080/TCP 86s
ratings ClusterIP 10.0.15.201 <none> 9080/TCP 86s
reviews ClusterIP 10.0.73.95 <none> 9080/TCP 86s
kubectl get pods
모든 Pod에 의 상태 Running
확인합니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s
참고
각 Pod에는 두 개의 컨테이너가 있으며, 그 중 하나는 Istio가 주입한 Envoy 사이드카이고 다른 하나는 애플리케이션 컨테이너입니다.
수신에 대해 이 샘플 애플리케이션을 테스트하려면 다음 단계를 검사.
리소스 삭제
를 사용하여 kubectl delete
샘플 애플리케이션을 삭제합니다.
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/platform/kube/bookinfo.yaml
클러스터에서 Istio 수신을 사용하도록 설정하지 않고 Istio 추가 기능을 사용하지 않도록 설정하려면 다음 명령을 실행합니다.
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
주의
서비스 메시 추가 기능을 사용하지 않도록 설정하면 클러스터에서 Istio 컨트롤 플레인이 완전히 제거됩니다.
Istio CustomResourceDefintion
(CRD)는 기본적으로 삭제되지 않습니다. 클린 하려면 다음을 사용합니다.
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
를 사용하여 az group delete
클러스터 및 연결된 리소스를 삭제합니다.
az group delete --name ${RESOURCE_GROUP} --yes --no-wait