이 가이드에서는 다른 Google Cloud 프로젝트에 있는 여러 Google Kubernetes Engine(GKE) 클러스터가 포함된 메시에 Anthos Service Mesh를 설치하는 방법을 설명합니다.
이 가이드는 다음과 같은 온보딩 사용 사례에 사용할 수 있습니다.
Anthos Service Mesh 1.11.8 신규 설치
1.9 or a 1.10 patch release에서 Anthos Service Mesh 1.11.8로 업그레이드. 이전 버전에서의 업그레이드는 지원되지 않습니다.
오픈소스 Istio 에서 Anthos Service Mesh 1.11.8 버전으로 마이그레이션 이전 버전의 Istio를 사용하는 경우에는 업그레이드를 먼저 진행한 후에 Anthos Service Mesh로 마이그레이션해야 합니다. 업그레이드해야 하는 경우 해당 Istio 버전의 Istio 업그레이드 페이지로 이동합니다. 한 번에 둘 이상의 부 버전(예: 1.6.x에서 1.8.x)으로 Istio를 업그레이드하는 것은 공식적으로 테스트되거나 권장되지 않습니다. Istio에서 마이그레이션 준비를 검토하여 마이그레이션을 계획하세요.
여러 프로젝트에 클러스터가 있는 서비스 메시에는 일부 기능을 사용할 수 없습니다. 특히 Google Cloud Console의 Anthos Service Mesh 대시보드는 현재 사용할 수 없습니다. 그러나 각 프로젝트에 대해 Cloud Logging의 로그와 Cloud Monitoring의 측정항목은 계속 볼 수 있습니다.
시작하기 전에
이 가이드에서는 다음 작업을 이미 완료했다고 가정합니다.
Istio에서 마이그레이션하는 경우 Istio에서 마이그레이션 준비를 참조하세요.
Anthos 및 Anthos Service Mesh 차이점
Anthos Service Mesh는 GKE Enterprise에서 또는 독립형 서비스로 사용 가능합니다. Google API는 청구 방식을 결정하는 데 사용됩니다. Anthos Service Mesh를 독립형 서비스로 사용하려면 프로젝트에 GKE Enterprise API를 사용 설정하지 마세요. Anthos Service Mesh 가격에 대한 상세 설명은 가격 책정을 참조하세요.
GKE Enterprise 구독자는 GKE Enterprise API를 사용 설정해야 합니다.
GKE Enterprise 구독자가 아니어도 Anthos Service Mesh를 설치할 수 있지만 GKE Enterprise 구독자만 Google Cloud 콘솔의 특정 UI 요소와 기능을 사용할 수 있습니다. 구독자와 비구독자가 사용할 수 있는 항목에 대한 자세한 내용은 GKE Enterprise 및 Anthos Service Mesh UI 차이점을 참조하세요.
GKE Enterprise API를 사용 설정했지만 Anthos Service Mesh를 독립형 서비스로 사용하려면 GKE Enterprise API를 중지합니다.
요구사항
클러스터가 서로 다른 프로젝트에 있으므로 이들은 공유 Virtual Private Cloud(VPC)에 있어야 합니다. 클러스터 구성에 대한 상세 설명은 공유 VPC를 사용하여 클러스터 설정을 참조하세요.
GKE 클러스터는 다음 요구사항을 충족해야 합니다.
Autopilot 클러스터에
istio-sidecar-injector
에 대해MutatingWebhookConfiguration
을 허용하지 않는 웹훅 제한이 포함되기 때문에 GKE 클러스터가 Standard여야 합니다.vCPU가 4개 이상 있는 머신 유형(예:
e2-standard-4
). 클러스터의 머신 유형에 4개 미만의 vCPU가 있으면 여러 머신 유형에 워크로드 마이그레이션에 설명된 대로 머신 유형을 변경합니다.최소 노드 수는 머신 유형에 따라 다릅니다. Anthos Service Mesh에는 최소 8개의 vCPU가 필요합니다. 머신 유형에 vCPU가 4개 있는 경우 클러스터에는 노드가 2개 이상 있어야 합니다. 머신 유형에 vCPU가 8개 있는 경우 클러스터에는 노드가 1개만 필요합니다. 노드를 추가해야 하는 경우 클러스터 크기 조절을 참조하세요.
Anthos Service Mesh를 설치하기 전에 클러스터를 준비하려면 워크로드 아이덴티티를 사용 설정합니다. 워크로드 아이덴티티는 Google API 호출에 권장되는 방법입니다. 워크로드 아이덴티티를 사용 설정하면 워크로드 아이덴티티 제한사항의 설명대로 워크로드에서 Google API로 호출이 보호되는 방식이 변경됩니다.
선택사항이지만 출시 채널에 클러스터를 등록하는 것이 좋습니다. 다른 채널은 Anthos Service Mesh 1.11.8에서 지원되지 않는 GKE 버전을 기반으로 할 수 있으므로 일반 출시 채널에 등록하는 것이 좋습니다. 자세한 내용은 지원되는 플랫폼을 참조하세요. 정적 GKE 버전이 있는 경우 출시 채널에 기존 클러스터 등록의 안내를 따릅니다.
서비스 메시에 포함하려면 서비스 포트의 이름이 지정되어야 하며 이름은
name: protocol[-suffix]
구문에서 포트 프로토콜을 포함해야 합니다. 여기서 대괄호는 대시로 시작해야 하는 선택적 서픽스를 나타냅니다. 자세한 내용은 서비스 포트 이름 지정을 참조하세요.비공개 클러스터에 Anthos Service Mesh를 설치하는 경우 자동 사이드카 삽입과 함께 사용되는 웹훅을 가져오려면 방화벽에서 포트 15017을 열어야 제대로 작동합니다. 자세한 내용은 비공개 클러스터에서 포트 열기를 참조하세요.
조직에서 서비스 경계를 만든 경우 경계에 Mesh CA 서비스를 추가해야 할 수도 있습니다. 자세한 내용은 서비스 경계에 Mesh CA 추가를 참조하세요.
Google Cloud 프로젝트에는 하나의 메시만 연결할 수 있습니다.
istio-proxy
사이드카 컨테이너에 대한 기본 리소스 한도를 낮추려면 새로운 한도는 메모리 부족(OOM) 이벤트를 방지할 수 있도록 충분한 메모리를 허용해야 합니다.
인증 기관 선택
Istio의 신규 설치 및 마이그레이션의 경우 Anthos Service Mesh 인증 기관(Mesh CA) 또는 Istio의 Citadel을 상호 TLS(mTLS) 인증서 발급을 위한 인증 기관(CA)으로 사용할 수 있습니다.
HashiCorp Vault 등의 커스텀 CA가 필요하지 않으면 다음과 같은 이유로 Mesh CA를 사용하는 것이 좋습니다.
- Mesh CA는 Google Cloud에서 동적으로 확장되는 워크로드에 최적화된 안정성과 확장성이 뛰어난 서비스입니다.
- Google은 Mesh CA를 사용하여 CA 백엔드의 보안과 가용성을 관리합니다.
- Mesh CA를 사용하면 여러 클러스터에서 신뢰할 수 있는 단일 루트를 사용할 수 있습니다.
Istio에서 마이그레이션하는 경우 Mesh CA로 마이그레이션하거나 Istio의 Citadel CA를 계속 사용할 수 있습니다. Citadel을 선택하면 마이그레이션 중에 mTLS 트래픽이 중단되지 않으므로 다운타임이 거의 발생하지 않습니다. Mesh CA를 선택하는 경우 신뢰할 수 있는 루트가 Citadel에서 Mesh CA로 변경되므로 마이그레이션을 위한 다운타임을 예약해야 합니다. Mesh CA 신뢰할 수 있는 루트로 마이그레이션을 완료하려면 모든 네임스페이스의 모든 pod를 다시 시작해야 합니다. 이 프로세스 중에는 이전 pod가 새 pod와 mTLS 연결을 설정할 수 없습니다.
Mesh CA의 인증서에는 애플리케이션 서비스에 대한 다음 데이터가 포함됩니다.
- Google Cloud 프로젝트 ID
- GKE 네임스페이스
- GKE 서비스 계정 이름
클러스터 등록
프로젝트의 Fleet(이전 명칭: Environ)에 클러스터를 등록해야 합니다. Fleet을 사용하면 클러스터를 구성하여 멀티 클러스터를 더욱 간편하게 관리할 수 있습니다. 클러스터를 Fleet에 등록하면 서비스와 기타 인프라를 필요에 따라 그룹화하여 일관된 정책을 적용할 수 있습니다. 클러스터가 서로 다른 프로젝트에 있는 경우 클러스터가 생성된 프로젝트가 아닌 Fleet 호스트 프로젝트를 사용하여 클러스터를 등록해야 합니다. 클러스터 등록 방법에 대한 상세 설명은 Fleet에 클러스터 등록을 참조하세요.
Fleet 호스트 프로젝트의 개념은 클러스터를 설정하여 Anthos Service Mesh에 필요한 옵션을 사용 설정할 때 중요합니다. 클러스터의 서비스 메시는 프로젝트 번호를 기반으로 하는 값으로 식별됩니다. 다른 프로젝트에서 클러스터를 설정할 경우 Fleet 호스트 프로젝트에 프로젝트 번호를 사용해야 합니다.