Cloud Service Mesh 호환성 이해
이 가이드에서는 구성, 인프라, 규모가 TRAFFIC_DIRECTOR 컨트롤 플레인 구현과 호환되는지 확인하여 컨트롤 플레인 현대화를 위한 Fleet의 호환성을 평가하는 방법을 자세히 설명합니다.
호환성 검사 선택 또는 선택 해제
호환성 검사를 시작하려면 Fleet의 유효성 검사 모드를 사용 설정합니다. 그러면 모든 Istio 구성, 인프라 구성, 규모 매개변수에 대한 지속적인 감사가 트리거됩니다. 이러한 검사를 사용 설정해도 Fleet 또는 클러스터가 변경되지는 않습니다. 호환성 보고만 사용 설정됩니다.
검사 사용 설정
호환성 감사를 시작하려면 다음 gcloud 명령어를 실행합니다.
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
FLEET_PROJECT_ID를 Fleet 호스트 프로젝트의 ID로 바꿉니다.
일반적으로 FLEET_PROJECT_ID는 프로젝트와 이름이 같습니다.
사용 설정되면 Cloud Service Mesh는 Fleet 및 Fleet에서 프로비저닝된 모든 Cloud Service Mesh 클러스터의 현대화 호환성을 평가하기 시작합니다.
검사 사용 중지
호환성 결과 보고를 중지하려면 다음 명령어를 실행합니다.
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
이 명령어는 멤버십 상태에서 현대화 호환성 조건을 삭제하고 개별 Istio CR에서 ModernizationCompatible 상태를 삭제합니다.
호환성 이해
현대화 호환성은 Fleet 및 멤버십 (클러스터) 수준 모두에서 조건을 사용하여 보고됩니다. 시스템은 다양한 시간에 다양한 검사를 수행하며 모든 검사는 하루에 한 번 이상 실행됩니다. 검사를 사용 설정하거나 수정을 적용한 후 상태가 업데이트되는 데 최대 하루가 걸릴 수 있습니다.
이러한 결과를 보려면 다음 명령어를 사용하여 최신 메시 상태를 가져옵니다.
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
클러스터 수준 호환성
Fleet의 각 Cloud Service Mesh 프로비저닝 클러스터에 대해 membershipStates.servicemesh 아래에 WARNING 또는 ERROR 심각도가 있는 조건을 찾습니다. 비호환성이 있는 경우 출력은 다음과 비슷합니다.
membershipSpecs:
projects/project_id/locations/global/memberships/cluster-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/cluster-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
- code: WORKLOAD_IDENTITY_REQUIRED
details: 'Workload Identity is not enabled for the cluster or at least one of the node pools.'
documentationLink: https://cloud.google.com/...
severity: ERROR
...
각 조건 내에 제공된 documentationLink를 따라 특정 비호환성을 이해하고 해결합니다.
호환성 문제 해결
호환되지 않는 포드 주석 해결
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION 코드는 특정 포드에 지원되지 않거나 잘못된 Istio 주석이 있기 때문에 클러스터를 TRAFFIC_DIRECTOR 컨트롤 플레인으로 현대화할 수 없음을 나타냅니다.
멤버십에 대해 MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION 조건이 설정된 gcloud container fleet mesh describe 명령어의 출력 예시는 다음과 같습니다.
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
이러한 포드 주석을 해결하려면 다음 단계를 따르세요.
문제 있는 주석 식별: 상태 조건의
details필드를 확인하여 지원되지 않거나 잘못된 주석 키를 찾습니다. 문제 있는 주석 키가 있는 모든 포드를 찾습니다.수정 및 확인:
- 배포 또는 포드의 YAML 사양을 수정하여 식별된 주석을 삭제하거나 수정하고 지원되지 않는 주석이 포함되지 않도록 합니다. 업데이트된 YAML을 클러스터에 다시 적용합니다.
- 모든 포드 주석이 수정되면 해당 멤버십에 더 이상
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION조건이 표시되지 않습니다.