1.10. 사이드카 삽입 활성화

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

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

1.10.1. 사전 요구 사항

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

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

사전 요구 사항

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

프로세스

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

    $ oc get deployment -n <namespace>

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

    oc get deployment -n info ratings-v1 -o yaml
  2. 편집기에서 애플리케이션의 배포 구성 YAML 파일을 엽니다.
  3. 다음 예와 같이 spec.template.metadata.annotations.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:
          annotations:
            sidecar.istio.io/inject: 'true'

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

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

    이 예제에서 inforatings-v1 app 및 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

1.10.3. 사이드카 삽입 검증

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

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

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

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

그림 1.4. 누락된 사이드카 아이콘

누락된 사이드카 아이콘

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

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

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

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

또한 워크로드 세부 정보 페이지에는 Envoy 프록시인 모든 워크로드에 대한 Envoy 탭이나 Envoy 프록시와 함께 삽입되어 있습니다. 이 탭에는 클러스터,Listeners,Routes,Bootstrap,ConfigMetrics 에 대한 하위 탭이 포함된 기본 제공 Envoy 대시보드가 표시됩니다.

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

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

1.10.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에 의해 덮어쓰거나 삭제됩니다.

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

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

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

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

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

1.10.6. 다음 단계

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