검색

2.11. 사이드카 삽입 활성화

download PDF

메시에 서비스가 포함된 네임스페이스를 추가한 후 다음 단계는 애플리케이션의 Deployment 리소스에서 자동 사이드카 삽입을 활성화하는 것입니다. 각 배포에 대해 자동 사이드카 삽입을 활성화해야 합니다.

Bookinfo 샘플 애플리케이션을 설치한 경우 애플리케이션이 배포되고 사이드카가 설치 절차의 일부로 삽입되었습니다. 자체 프로젝트 및 서비스를 사용하는 경우 OpenShift Container Platform에 애플리케이션을 배포합니다.

자세한 내용은 OpenShift Container Platform 설명서, 배포 이해 를 참조하십시오.

참고

Pod의 애플리케이션 컨테이너보다 먼저 실행되는 특수 컨테이너인 Init Container에서 시작한 트래픽은 기본적으로 서비스 메시 외부에서 이동할 수 없습니다. 메시 외부에서 네트워크 트래픽 연결을 설정해야 하는 모든 작업 Init Container가 수행됩니다.

Init Container를 서비스에 연결하는 방법에 대한 자세한 내용은 Service Mesh 사이드카가 삽입된 Pod의 CrashLoopBackOff의 Red Hat Knowledgebase 솔루션 initContainer를참조하십시오.

2.11.1. 사전 요구 사항

2.11.2. 자동 사이드카 삽입 활성화

애플리케이션을 배포할 때 배포 오브젝트에서 spec.template.metadata.labels 의 label sidecar.istio.io/injecttrue 로 구성하여 애플리케이션을 삽입할 수 있습니다. 이 설정을 통해 사이드카 삽입이 OpenShift Container Platform 에코시스템 내 여러 프레임 워크에서 사용되는 builder pod와 같은 다른 OpenShift Container Platform 기능을 방해하지 않도록 할 수 있습니다.

사전 요구 사항

  • 서비스 메시의 일부인 네임스페이스와 자동 사이드카 삽입이 필요한 배포를 식별합니다.

프로세스

  1. 배포를 찾으려면 oc get 명령을 사용합니다.

    $ oc get deployment -n <namespace>

    예를 들어 info 네임스페이스에서 'ratings-v1' 마이크로 서비스에 대한 Deployment YAML 파일을 보려면 다음 명령을 사용하여 YAML 형식의 리소스를 확인합니다.

    oc get deployment -n info ratings-v1 -o yaml
  2. 편집기에서 애플리케이션의 Deployment YAML 파일을 엽니다.
  3. 다음 예와 같이 spec.template.metadata.labels.sidecar.istio/inject 를 Deployment YAML 파일에 추가하고 sidecar.istio.io/injecttrue 로 설정합니다.

    info deployment-ratings-v1.yaml의 스니펫 예

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ratings-v1
      namespace: info
      labels:
        app: ratings
        version: v1
    spec:
      template:
        metadata:
          labels:
            sidecar.istio.io/inject: 'true'

    참고

    자동 사이드카 삽입을 활성화할 때 annotations 매개변수를 사용하는 것은 더 이상 사용되지 않으며 labels 매개변수를 사용하여 교체됩니다.

  4. Deployment YAML 파일을 저장합니다.
  5. 앱이 포함된 프로젝트에 파일을 다시 추가합니다.

    $ oc apply -n <namespace> -f deployment.yaml

    이 예에서 inforatings-v1 앱이 포함된 프로젝트의 이름이며 deployment-ratings-v1.yaml 은 편집한 파일입니다.

    $ oc apply -n info -f deployment-ratings-v1.yaml
  6. 리소스가 업로드되었는지 확인하려면 다음 명령을 실행합니다.

    $ oc get deployment -n <namespace> <deploymentName> -o yaml

    예를 들면 다음과 같습니다.

    $ oc get deployment -n info ratings-v1 -o yaml

2.11.3. 사이드카 삽입 검증

Kiali 콘솔은 애플리케이션, 서비스 및 워크로드에 사이드카 프록시가 있는지 여부를 확인하는 여러 가지 방법을 제공합니다.

그림 2.3. 누락된 사이드카 배지

누락된 사이드카 배지

그래프 페이지에는 다음 그래프의 Missing Sidecar 를 나타내는 노드 배지가 표시됩니다.

  • 앱 그래프
  • 버전이 지정된 앱 그래프
  • 워크로드 그래프

그림 2.4. 사이드카 아이콘이 누락됨

누락된 사이드카 아이콘

애플리케이션 페이지에는 사이드카가 없는 네임스페이스의 모든 애플리케이션에 대한 세부 정보 열에 Missing Sidecar 아이콘이 표시됩니다.

워크로드 페이지에는 사이드카가 없는 네임스페이스의 모든 애플리케이션에 대한 세부 정보 열에 Missing Sidecar 아이콘이 표시됩니다.

서비스 페이지에는 사이드카가 없는 네임스페이스의 모든 애플리케이션에 대한 세부 정보 열에 Missing Sidecar 아이콘이 표시됩니다. 서비스 버전이 여러 개 있는 경우 서비스 세부 정보 페이지를 사용하여 Missing 사이드카 아이콘을 확인합니다.

워크로드 세부 정보 페이지에는 애플리케이션 및 프록시 로그 를 보고 상호 연결할 수 있는 특수한 통합 로그 탭이 있습니다. Envoy 로그를 애플리케이션 워크로드에 대한 사이드카 삽입의 유효성을 확인하는 또 다른 방법으로 볼 수 있습니다.

워크로드 세부 정보 페이지에는 Envoy 프록시이거나 Envoy 프록시로 삽입된 워크로드에 대한 Envoy 탭도 있습니다. 이 탭에는 Clusters, Listeners, Routes, Bootstrap, Config, Metrics에 대한 하위 탭이 포함된 내장 Envoy 대시보드가 표시됩니다.

Envoy 액세스 로그 활성화에 대한 자세한 내용은 문제 해결 섹션을 참조하십시오.

Envoy 로그를 보는 방법에 대한 자세한 내용은 Kiali 콘솔에서 로그 보기를참조하십시오.

2.11.4. 주석을 통해 프록시 환경 변수 설정

Envoy 사이드카 프록시에 대한 구성은 ServiceMeshControlPlane 에서 관리합니다.

injection-template.yaml 파일의 배포에 Pod 주석을 추가하여 애플리케이션의 사이드카 프록시의 환경 변수를 설정할 수 있습니다. 환경 변수가 사이드카에 삽입됩니다.

예: injection-template.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: resource
spec:
  replicas: 7
  selector:
    matchLabels:
      app: resource
  template:
    metadata:
      annotations:
        sidecar.maistra.io/proxyEnv: "{ \"maistra_test_env\": \"env_value\", \"maistra_test_env_2\": \"env_value_2\" }"

주의

고유한 사용자 정의 리소스를 생성할 때 maistra.io/ 레이블 및 주석을 포함하지 않아야 합니다. 이러한 레이블 및 주석은 Operator에서 리소스를 생성 및 관리함을 나타냅니다. 자체 리소스를 생성할 때 Operator 생성 리소스에서 콘텐츠를 복사하는 경우 maistra.io/ 로 시작하는 레이블 또는 주석을 포함하지 마십시오. 다음 조정 중에 Operator가 이러한 레이블 또는 주석을 포함하는 리소스를 덮어쓰거나 삭제합니다.

2.11.5. 사이드카 프록시 업데이트

사이드카 프록시 구성을 업데이트하려면 애플리케이션 관리자가 애플리케이션 Pod를 다시 시작해야 합니다.

배포 시 자동 사이드카 삽입을 사용하는 경우 주석을 추가하거나 수정하여 배포에서 pod 템플릿을 업데이트할 수 있습니다. 다음 명령을 실행하여 pod를 다시 배포합니다.

$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'

배포에서 자동 사이드카 삽입을 사용하지 않는 경우 배포 또는 Pod에 지정된 사이드카 컨테이너 이미지를 수정하여 사이드카를 수동으로 업데이트한 다음 Pod를 다시 시작해야 합니다.

2.11.6. 다음 단계

환경에 맞게 Red Hat OpenShift Service Mesh 기능을 구성합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.