7.5. 각 메시에 애플리케이션 워크로드 배포
애플리케이션 워크로드를 배포하려면 각 워크로드를 별도의 네임스페이스에 할당합니다.
프로세스
다음 명령을 실행하여
app-ns-1
이라는 애플리케이션 네임스페이스를 생성합니다.oc create namespace app-ns-1
$ oc create namespace app-ns-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 첫 번째 컨트롤 플레인에서 네임스페이스를 검색하도록 다음 명령을 실행하여
istio-discovery=mesh-1
라벨을 추가합니다.oc label namespace app-ns-1 istio-discovery=mesh-1
$ oc label namespace app-ns-1 istio-discovery=mesh-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 네임스페이스의 Pod가 첫 번째 컨트롤 플레인에 매핑되는 동안 기본적으로 모든 pod에 사이드카를 삽입하려면 다음 명령을 실행하여
istio.io/rev=mesh-1
레이블을 네임스페이스에 추가합니다.oc label namespace app-ns-1 istio.io/rev=mesh-1
$ oc label namespace app-ns-1 istio.io/rev=mesh-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 실행하여
mesh-1
리버전 이름을 확인할 수 있습니다.oc get istiorevisions
$ oc get istiorevisions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
sleep
및httpbin
애플리케이션을 배포합니다.oc apply -n app-ns-1 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
$ oc apply -n app-ns-1 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
httpbin
및sleep
pod가 삽입된 사이드카를 사용하여 실행될 때까지 기다립니다.oc get pods -n app-ns-1
$ oc get pods -n app-ns-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE httpbin-7f56dc944b-kpw2x 2/2 Running 0 2m26s sleep-5577c64d7c-b5wd2 2/2 Running 0 91m
NAME READY STATUS RESTARTS AGE httpbin-7f56dc944b-kpw2x 2/2 Running 0 2m26s sleep-5577c64d7c-b5wd2 2/2 Running 0 91m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
app-ns-2
라는 두 번째 애플리케이션 네임스페이스를 생성합니다.oc create namespace app-ns-2
$ oc create namespace app-ns-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
app-ns-3
이라는 세 번째 애플리케이션 네임스페이스를 생성합니다.oc create namespace app-ns-3
$ oc create namespace app-ns-3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 두 번째 컨트롤 플레인의 검색 선택기와 일치하도록 네임스페이스와 버전 버전 레이블
mesh-2
모두에istio-discovery=mesh-2
레이블을 추가합니다.oc label namespace app-ns-2 app-ns-3 istio-discovery=mesh-2 istio.io/rev=mesh-2
$ oc label namespace app-ns-2 app-ns-3 istio-discovery=mesh-2 istio.io/rev=mesh-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
절전
및httpbin
애플리케이션을app-ns-2
네임스페이스에 배포합니다.oc apply -n app-ns-2 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
$ oc apply -n app-ns-2 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
절전
및httpbin
애플리케이션을app-ns-3
네임스페이스에 배포합니다.oc apply -n app-ns-3 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
$ oc apply -n app-ns-3 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 사용하여 배포를 사용할 수 있을 때까지 기다립니다.
oc wait deployments -n app-ns-2 --all --for condition=Available
$ oc wait deployments -n app-ns-2 --all --for condition=Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
애플리케이션을 배포한 후
istioctl ps
명령을 사용하여 각 애플리케이션 워크로드가 할당된 컨트롤 플레인에 의해 관리되는지 확인합니다.다음 명령을 실행하여 워크로드가
istio-system-1
의 컨트롤 플레인에 할당되었는지 확인합니다.istioctl ps -i istio-system-1
$ istioctl ps -i istio-system-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-vwfm5.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0 sleep-5577c64d7c-d675f.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-vwfm5.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0 sleep-5577c64d7c-d675f.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 워크로드가
istio-system-2
의 컨트롤 플레인에 할당되었는지 확인합니다.istioctl ps -i istio-system-2
$ istioctl ps -i istio-system-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-54gjs.app-ns-3 Kubernetes SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 httpbin-7f56dc944b-gnh72.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-k9mxz.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-m9hvm.app-ns-3 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-54gjs.app-ns-3 Kubernetes SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 httpbin-7f56dc944b-gnh72.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-k9mxz.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-m9hvm.app-ns-3 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
애플리케이션 연결이 해당 메시 내의 워크로드로 제한되었는지 확인합니다.
다음 명령을 실행하여 통신이 실패하는지 확인하려면
app-ns-1
의sleep
포드에서app-ns-2
의httpbin
서비스로 요청을 보냅니다.oc -n app-ns-1 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-2.svc.cluster.local:8000
$ oc -n app-ns-1 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-2.svc.cluster.local:8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전에 생성된
PeerAuthentication
리소스는 각 메시 내의STRICT
모드에서 상호 TLS(mTLS) 트래픽을 적용합니다. 각 메시는istio-ca-root-cert
구성 맵에서 관리하는 자체 루트 인증서를 사용하여 메시 간 통신을 방지합니다. 출력은 다음 예와 유사한 통신 실패를 나타냅니다.출력 예
HTTP/1.1 503 Service Unavailable content-length: 95 content-type: text/plain date: Wed, 16 Oct 2024 12:05:37 GMT server: envoy
HTTP/1.1 503 Service Unavailable content-length: 95 content-type: text/plain date: Wed, 16 Oct 2024 12:05:37 GMT server: envoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mesh-2
에서 관리하는app-ns-2
네임스페이스에 있는httpbin
서비스로절전
포드에서 요청을 전송하여 통신이 작동하는지 확인합니다. 다음 명령을 실행합니다.oc -n app-ns-2 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-3.svc.cluster.local:8000
$ oc -n app-ns-2 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-3.svc.cluster.local:8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow