Oracle Cloud Native 환경에서 Istio Proxy Sidecar Injection 사용
소개
Istio는 서비스 간 통신을 처리하기 위해 별도의 인프라 계층을 제공하는 서비스 메시입니다. 네트워크 통신은 서비스 자체에서 추상화되고 프록시에 의해 처리됩니다. Istio는 sidecar 설계를 사용합니다. 즉, 모든 서비스 컨테이너 옆에 있는 자체 컨테이너에서 통신 프록시가 실행됩니다. 자동 sidecar 주입을 적용하려면 응용 프로그램에서 사용할 이름 공간에 istio-injection=enabled 레이블이 지정되어야 합니다.
목표
이 사용지침서에서는 자동 프록시 sidecar 삽입을 사용으로 설정하여 Oracle Cloud Native Environment에서 Istio의 기능을 활용하는 방법을 보여줍니다.
이 자습서에서는 자동 프록시 sidecar 주입을 사용하지 않고 응용 프로그램을 배치합니다. 그런 다음 자동 프록시 sidecar 인젝션을 사용으로 설정하고 응용 프로그램을 다시 배치합니다. 그런 다음 서비스 메시의 Pods가 Istio sidecar 프록시를 실행하고 있음을 알 수 있습니다.
필요 조건
Kubernetes 클러스터를 포함하는 Oracle Cloud Native Environment Release 1.4 배포. 다음 위치에서 자습서를 참조하십시오.
고가용성 Oracle Cloud Native 환경 배포
또한 Istio 모듈을 사용하여 서비스 메시를 배포해야 합니다. Istio 모듈 배포에 대한 자세한 내용은 Oracle Cloud Native Environment Documentation를 참조하십시오.
Istio가 설치되어 실행 중인지 확인
컨트롤 플레인 노드에서 다음 명령을 사용하여 istio-system 이름 공간에 배치를 표시합니다.
kubectl get deployment -n istio-system
출력은 다음과 유사해야 합니다.
NAME READY UP-TO-DATE AVAILABLE AGE
grafana 2/2 2 2 2m44s
istio-egressgateway 2/2 2 2 2m48s
istio-ingressgateway 2/2 2 2 2m48s
istiod 2/2 2 2 3m2s
prometheus-server 2/2 2 2 2m44s
간단한 NGINX 배포 생성
다음 명령을 사용하여 nginx 이미지를 실행하는 hello-world라는 새 배치를 만듭니다.
kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world
기본 네임스페이스의 Kubernetes POD 보기
다음 명령을 사용하여 POD를 나열합니다.
kubectl get pods
출력은 다음과 유사해야 합니다.
NAME READY STATUS RESTARTS AGE
hello-world-... 1/1 Running 0 18s
READY 열이 1/1이면 Istio 자동 프록시 sidecar 주입이 활성화되지 않았음을 나타냅니다.
NGINX 배포 삭제
다음 명령을 사용하여 hello-world 배치를 삭제합니다.
kubectl delete deployments hello-world
자동 프록시 sidecar 인젝션 사용
자동 sidecar 주입을 적용하려면 응용 프로그램에서 사용할 이름 공간에 istio-injection=enabled 레이블이 지정되어야 합니다. 다음 예에서는 기본 이름 공간에 레이블을 지정합니다.
kubectl label namespace default istio-injection=enabled
kubectl get namespace 명령은 기본 이름 공간에 레이블이 제대로 지정되었는지 확인합니다.
kubectl get namespace -L istio-injection
출력은 다음과 유사해야 합니다.
NAME STATUS AGE ISTIO-INJECTION
default Active 23m enabled
externalip-validation-system Active 22m
istio-system Active 19m
kube-node-lease Active 23m
kube-public Active 23m
kube-system Active 23m
kubernetes-dashboard Active 22m
이제 기본 네임스페이스에 ISTIO_INJECTION 레이블이 포함된 것을 확인할 수 있습니다.
간단한 NGINX 배포 생성
다음 명령을 사용하여 nginx 이미지를 실행하는 hello-world라는 새 배치를 만듭니다.
kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world
기본 네임스페이스의 Kubernetes POD 보기
kubectl get pods 명령을 사용하여 POD를 나열합니다.
kubectl get pods
출력은 다음과 유사해야 합니다.
NAME READY STATUS RESTARTS AGE
hello-world-... 2/2 Running 0 20s
READY 열은 2/2입니다. 즉, Istio 자동 프록시 sidecar 주입이 활성화되어 있고 메시의 Pods가 Istio sidecar 프록시를 실행하고 있음을 나타냅니다.
프록시 측의 자동 주입 비활성화
다음과 같이 kubectl label를 사용하여 기본 네임스페이스에서 istio-injection=enabled 레이블을 제거합니다.
kubectl label namespace default istio-injection-
kubectl get namespace 명령은 레이블이 기본 이름 공간에서 제거되었는지 확인합니다.
kubectl get namespace -L istio-injection
출력은 다음과 유사해야 합니다.
NAME STATUS AGE ISTIO-INJECTION
default Active 39m
externalip-validation-system Active 38m
istio-system Active 36m
kube-node-lease Active 39m
kube-public Active 39m
kube-system Active 39m
kubernetes-dashboard Active 38m
마지막으로 NGINX 배치를 삭제합니다.
kubectl delete deployments hello-world
추가 정보
- Oracle Cloud Native 환경 문서
- https://istio.io/의 업스트림 설명서
- Oracle Cloud Native Environment Training
- Oracle Linux 커리큘럼
- Oracle Linux 학습 구독
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 찾아보거나 Oracle Learning YouTube channel에서 무료 학습 콘텐츠에 액세스할 수 있습니다. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer로 변경하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Enable Istio Proxy Sidecar Injection in Oracle Cloud Native Environment
F49724-02
November 2021
Copyright © 2021, Oracle and/or its affiliates.