Anthos Service Mesh는 Google Kubernetes Engine(GKE) 및 VMware용 GKE에서 실행되는 서비스를 연결, 모니터링, 보호하기 위한 Istio 호환 프레임워크입니다. 이 프레임워크를 사용하면 서비스 코드를 변경하지 않아도 부하 분산, 서비스 간 인증, 모니터링 등이 포함된 배포된 서비스 네트워크를 만들 수 있습니다. Anthos Service Mesh는 애플리케이션의 각 pod에 사이드카 프록시를 자동으로 삽입합니다. 사이드카 프록시는 pod에서 주고 받는 모든 네트워크 트래픽을 가로챕니다. 또한 Anthos Service Mesh는 인그레스 게이트웨이를 구성하여 메시에 대한 인바운드 트래픽을 관리합니다. 오픈소스 Istio API를 사용하여 사이드카 및 게이트웨이에 적용되는 정책을 구성할 수 있습니다.
이 가이드에서는 새 Google Cloud GKE 클러스터에 Anthos Service Mesh 1.5.10 버전을 설치하는 방법을 설명합니다. 설치를 통해 다음 기능을 사용할 수 있습니다.
또한 이 가이드에서는 클러스터와 동일한 Google Cloud 프로젝트에 있는 Fleet에 클러스터를 등록하는 방법을 설명합니다. Fleet을 사용하면 클러스터를 구성하여 멀티 클러스터를 더욱 간편하게 관리할 수 있습니다. 클러스터를 Fleet에 등록하면 서비스와 기타 인프라를 필요에 따라 그룹화하여 일관된 정책을 적용할 수 있습니다.
시작하기 전에
이 가이드에서는 다음 작업을 이미 완료했다고 가정합니다.
설치를 시작하기 전에 다음을 수행하세요.
요구사항
GKE Enterprise 무료 체험판 라이선스 또는 구독이 있어야 합니다. 자세한 내용은 GKE Enterprise 가격 책정 가이드를 참조하세요.
GKE 클러스터는 다음 요구사항을 충족해야 합니다.
서비스 메시에 포함하려면 서비스 포트의 이름이 지정되어야 하며 이름은
name: protocol[-suffix]
구문에서 포트 프로토콜을 포함해야 합니다. 여기서 대괄호는 대시로 시작해야 하는 선택적 서픽스를 나타냅니다. 자세한 내용은 서비스 포트 이름 지정을 참조하세요.비공개 클러스터에서 Anthos Service Mesh를 설치하는 경우 자동 사이드카 삽입을 사용하려면 포트 15017을 열도록 방화벽 규칙을 추가해야 합니다. 방화벽 규칙을 추가하지 않고 자동 사이드카 삽입이 사용 설정되어 있으면 워크로드를 배포할 때 오류가 발생합니다. 방화벽 규칙 추가에 대한 세부정보는 특정 사용 사례에 대한 방화벽 규칙 추가를 참조하세요.
조직에서 서비스 경계를 만든 경우 경계에 Mesh CA 서비스를 추가해야 할 수도 있습니다. 자세한 내용은 서비스 경계에 Mesh CA 추가를 참조하세요.
제한사항
Google Cloud 프로젝트당 Anthos Service Mesh 설치는 한 개만 지원됩니다. 단일 프로젝트에서 여러 메시 배포는 지원되지 않습니다.
인증서 데이터
Mesh CA의 인증서에는 애플리케이션 서비스에 대한 다음 데이터가 포함됩니다.
- Google Cloud 프로젝트 ID
- GKE 네임스페이스
- GKE 서비스 계정 이름
프로젝트 설정
- 클러스터가 생성될 프로젝트의 프로젝트 ID를 가져옵니다.
gcloud
gcloud projects list
콘솔
- Google Cloud 콘솔에서 대시보드 페이지로 이동합니다.
-
페이지 상단에서 선택 드롭다운 목록을 클릭합니다. 선택 창이 나타나면 프로젝트를 선택합니다.
프로젝트 ID가 프로젝트 대시보드 프로젝트 정보 카드에 표시됩니다.
- 프로젝트 ID의 환경 변수를 만듭니다.
export PROJECT_ID=YOUR_PROJECT_ID
-
gcloud
명령줄 도구의 기본 프로젝트 ID를 설정합니다.gcloud config set project ${PROJECT_ID}
- 프로젝트 번호의 환경 변수를 만듭니다.
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
-
필요한 Identity and Access Management(IAM) 역할을 설정합니다. 프로젝트 소유자인 경우 설치를 완료하고 Environ에 클러스터를 등록하는 데 필요한 모든 권한이 있습니다.
프로젝트 소유자가 아닌 경우 다음과 같은 특정 IAM 역할을 부여할 사람이 필요합니다. 다음 명령어에서
GCP_EMAIL_ADDRESS
를 Google Cloud에 로그인하는 데 사용하는 계정으로 변경합니다.gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member user:GCP_EMAIL_ADDRESS \ --role=roles/editor \ --role=roles/compute.admin \ --role=roles/container.admin \ --role=roles/resourcemanager.projectIamAdmin \ --role=roles/iam.serviceAccountAdmin \ --role=roles/iam.serviceAccountKeyAdmin \ --role=roles/gkehub.admin
IAM 역할을 부여하는 방법에 대한 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요. 이러한 역할에 대한 설명은 Anthos Service Mesh를 설치하는 데 필요한 권한을 참조하세요.
- 다음 API를 사용 설정합니다.
gcloud services enable \ container.googleapis.com \ compute.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ cloudtrace.googleapis.com \ meshca.googleapis.com \ meshtelemetry.googleapis.com \ meshconfig.googleapis.com \ iamcredentials.googleapis.com \ anthos.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ cloudresourcemanager.googleapis.com
API를 사용 설정하려면 완료하는 데 1분 이상 걸릴 수 있습니다. API가 사용 설정되면 다음과 비슷한 출력이 표시됩니다.
Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully.
새 GKE 클러스터 설정
이 섹션에서는 Anthos Service Mesh에 필요한 옵션으로 GKE 클러스터를 만들기 위한 기본 사항을 설명합니다. 자세한 내용은 클러스터 만들기를 참조하세요.
새 클러스터를 설정하는 방법은 다음과 같습니다.
새 클러스터의 영역 또는 리전, 머신 유형, GKE 출시 채널을 선택합니다. Anthos Service Mesh에 필요한 최소 머신 유형은 e2-standard-4입니다. 모든 출시 채널 옵션을 사용할 수 있습니다.
단일 영역 클러스터를 만드는 경우 다음 명령어를 실행하여 사용 가능한 GCP 영역 목록을 가져옵니다.
gcloud compute zones list
리전 클러스터를 만드는 경우 다음 명령어를 실행하여 사용 가능한 리전 목록을 가져옵니다.
gcloud compute regions list
머신 유형 목록을 가져오는 방법은 다음과 같습니다.
gcloud compute machine-types list | more
다음의 환경 변수를 만듭니다.
클러스터 이름을 설정합니다.
export CLUSTER_NAME=YOUR_CLUSTER_NAME
클러스터 이름에는 소문자 영숫자 및 '-'만 포함되어야 하고 문자로 시작하고 영숫자로 끝나야 하며 40자를 초과할 수 없습니다.
CLUSTER_LOCATION
을 클러스터 영역 또는 클러스터 리전으로 설정합니다.export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
워크로드 풀을 설정합니다.
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
메시 ID를 설정합니다.
export MESH_ID="proj-${PROJECT_NUMBER}"
출시 채널을 설정합니다.
YOUR_CHANNEL
을regular
,stable
,rapid
중 하나로 바꿉니다.export CHANNEL=YOUR_CHANNEL
각 채널에 대한 설명은 사용 가능한 채널을 참조하세요.
Google Cloud CLI의 기본 영역 또는 리전을 설정합니다.
단일 영역 클러스터의 경우 기본 영역을 설정합니다.
gcloud config set compute/zone ${CLUSTER_LOCATION}
리전 클러스터의 경우 기본 리전을 설정합니다.
gcloud config set compute/region ${CLUSTER_LOCATION}
팁: 나중에 셸 환경을 더 쉽게 설정할 수 있도록 각 환경 변수의
export
문을 복사하여 새로운 셸을 시작할 때source
로 사용하는 간단한 셸 스크립트에 붙여넣습니다. 또한 스크립트에 기본값을 설정하는gcloud
명령어를 추가할 수 있습니다. 또는gcloud init
를 사용하여 이름이 지정된gcloud
구성을 만들고 활성화할 수 있습니다.Anthos Service Mesh에서 필요한 옵션을 사용하여 클러스터를 만듭니다. 다음 명령어는 vCPU가 4개 있는 e2-standard-4 머신 유형의 노드 4개를 포함하는 클러스터를 만듭니다. Anthos Service Mesh에 필요한 최소 머신 유형 및 노드 수입니다. vCPU가 4개 이상인 다른 머신 유형을 지정할 수 있으며 시스템 요구사항에 따라 노드 수를 늘릴 수 있습니다.
gcloud beta container clusters create ${CLUSTER_NAME} \ --machine-type=e2-standard-4 \ --num-nodes=4 \ --workload-pool=${WORKLOAD_POOL} \ --enable-stackdriver-kubernetes \ --subnetwork=default \ --labels=mesh_id=${MESH_ID} \ --release-channel=${CHANNEL}
clusters create
명령어에는 다음이 포함됩니다.workload-pool=${WORKLOAD_POOL}
: GKE 애플리케이션에서 Google Cloud 서비스에 안전하게 액세스하는 데 권장되는 워크로드 아이덴티티를 사용 설정합니다.enable-stackdriver-kubernetes
: GKE에서 Cloud Monitoring 및 Cloud Logging을 사용 설정합니다.subnetwork=default
: 기본 서브네트워크를 만듭니다.labels mesh_id=${MESH_ID}
: Google Cloud 콘솔의 Anthos Service Mesh 페이지에 측정항목을 표시하는 데 필요한 클러스터의mesh_id
라벨을 설정합니다.release-channel ${CHANNEL}
: 지정된 출시 채널에 클러스터를 등록합니다.
사용자 인증 정보 및 권한 설정
계속하기 전에 필요한 모든 API를 사용 설정했는지 확인하세요. 의심스러운 경우에는 gcloud services enable 명령어를 다시 실행해도 됩니다.
- 프로젝트를 설치할 수 있도록 초기화합니다. 무엇보다도 이 명령어는 사이드카 프록시와 같은 Istio 구성요소가 프로젝트의 데이터 및 리소스에 안전하게 액세스할 수 있도록 서비스 계정을 만듭니다.
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize
이 명령어는 빈 중괄호(
{}
)를 사용하여 응답합니다.나중에 이 클러스터에 새 버전의 Anthos Service Mesh를 설치하는 경우에는 명령어를 다시 실행할 필요가 없지만 명령어를 다시 실행해도 설치에 영향을 주지 않습니다.
- 클러스터와 상호작용하기 위해 사용자 인증 정보를 가져옵니다.
gcloud container clusters get-credentials ${CLUSTER_NAME}
-
클러스터 관리자 권한을 현재 사용자에게 부여합니다. Anthos Service Mesh에 필요한 역할 기반 액세스 제어(RBAC) 규칙을 만들려면 이러한 권한이 필요합니다.
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
"cluster-admin-binding" already exists
오류가 표시되면 안전하게 무시하고 기존 cluster-admin-binding을 계속 진행할 수 있습니다.
클러스터 등록
Google Cloud 콘솔에서 통합 사용자 인터페이스에 액세스하려면 프로젝트 Fleet에 클러스터를 등록해야 합니다. Fleet에서는 Google Cloud 외부의 클러스터를 포함하여 클러스터와 워크로드를 통합된 방식으로 보고 관리할 수 있습니다.
Google Cloud 서비스 계정 및 키 파일 만들기
클러스터를 등록하려면 서비스 계정 사용자 인증 정보가 포함된 JSON 파일이 필요합니다. 최소 권한의 원칙을 따르려면 등록한 클러스터마다 별도의 서비스 계정을 만드는 것이 좋습니다.
서비스 계정 및 키 파일을 만들려면 다음 안내를 따르세요.
서비스 계정의 이름을 선택하고 환경 변수를 만듭니다.
export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
서비스 계정을 만듭니다.
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
프로젝트의 모든 서비스 계정을 나열하여 서비스 계정이 생성되었는지 확인합니다.
gcloud iam service-accounts list
gkehub.connect IAM 역할을 서비스 계정에 바인딩합니다.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
JSON 파일을 저장할 로컬 파일 경로의 환경 변수를 만듭니다. 서비스 계정 이름과 프로젝트 ID를 사용하여 파일 이름을 지정하는 것이 좋습니다. 예를 들면
/tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json
입니다.export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
서비스 계정의 비공개 키 JSON 파일을 다운로드합니다.
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \ --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
클러스터 등록
다음 명령어에서 MEMBERSHIP_NAME
을 허브에 등록하려는 클러스터를 고유하게 나타내는 이름으로 바꿉니다.
gcloud container hub memberships register MEMBERSHIP_NAME \ --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \ --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}
이 명령어는 다음과 유사한 출력으로 응답합니다.
kubeconfig entry generated for CLUSTER_NAME. Waiting for membership to be created...done. Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME] Generating the Connect Agent manifest... Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]... Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]. Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.
이 서비스 계정 키는 gke-connect
네임스페이스에 creds-gcp
라는 보안 비밀로 저장됩니다.
클러스터 등록에 대한 자세한 내용은 연결 문서의 클러스터 등록을 참조하세요.
설치 파일 다운로드
계속하기 전에 먼저 ASM Mesh Data Plane Service Account가 프로젝트의 구성원인지 확인합니다.
gcloud projects get-iam-policy ${PROJECT_ID} | grep -B 1 'roles/meshdataplane.serviceAgent'
이전 명령어가 아무것도 출력하지 않으면 사용자 인증 정보 및 권한 설정 섹션으로 돌아가서 curl
명령어를 실행합니다.
- Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-linux.tar.gz
- 서명 파일을 다운로드하고
openssl
을 사용하여 서명을 확인합니다.curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-linux.tar.gz.1.sig openssl dgst -verify - -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
예상되는 출력은
Verified OK
입니다. -
원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
tar xzf istio-1.5.10-asm.2-linux.tar.gz
이 명령어는 다음을 포함하는 현재 작업 디렉터리에
istio-1.5.10-asm.2
이라는 설치 디렉터리를 만듭니다.samples
의 샘플 애플리케이션bin
디렉터리에 있는 다음 도구:istioctl
:istioctl
을 사용하여 Anthos Service Mesh를 설치합니다.asmctl
: Anthos Service Mesh를 설치한 후 보안 구성을 검증하기 위해asmctl
을 사용합니다. 현재 VMware용 GKE에서는asmctl
이 지원되지 않습니다.
- Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-osx.tar.gz
- 서명 파일을 다운로드하고
openssl
을 사용하여 서명을 확인합니다.curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
예상되는 출력은
Verified OK
입니다. -
원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
tar xzf istio-1.5.10-asm.2-osx.tar.gz
이 명령어는 다음을 포함하는 현재 작업 디렉터리에
istio-1.5.10-asm.2
이라는 설치 디렉터리를 만듭니다.samples
의 샘플 애플리케이션bin
디렉터리에 있는 다음 도구:istioctl
:istioctl
을 사용하여 Anthos Service Mesh를 설치합니다.asmctl
: Anthos Service Mesh를 설치한 후 보안 구성을 검증하기 위해asmctl
을 사용합니다. 현재 VMware용 GKE에서는asmctl
이 지원되지 않습니다.
- Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-win.zip
- 서명 파일을 다운로드하고
openssl
을 사용하여 서명을 확인합니다.curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
예상되는 출력은
Verified OK
입니다. -
원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
tar xzf istio-1.5.10-asm.2-win.zip
이 명령어는 다음을 포함하는 현재 작업 디렉터리에
istio-1.5.10-asm.2
이라는 설치 디렉터리를 만듭니다.samples
의 샘플 애플리케이션bin
디렉터리에 있는 다음 도구:istioctl
:istioctl
을 사용하여 Anthos Service Mesh를 설치합니다.asmctl
: Anthos Service Mesh를 설치한 후 보안 구성을 검증하기 위해asmctl
을 사용합니다. 현재 VMware용 GKE에서는asmctl
이 지원되지 않습니다.
-
Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
cd istio-1.5.10-asm.2
- 편의를 위해
/bin
디렉터리의 도구를 PATH에 추가합니다.export PATH=$PWD/bin:$PATH
Linux
MacOS
Windows
리소스 구성 파일 준비
istioctl apply command
를 실행하여 Anthos Service Mesh를 설치하려면 명령줄에서 -f istio-operator.yaml
을 지정합니다. 이 파일에는 메시 원격 분석 및 메시 보안 기능을 사용 설정하는 데 필요한 프로젝트 및 클러스터에 대한 정보가 포함되어 있습니다. istio-operator.yaml
및 기타 리소스 구성 파일을 다운로드하고 프로젝트 및 클러스터 정보를 설정해야 합니다.
리소스 구성 파일을 준비하려면 다음 안내를 따르세요.
아직 설치하지 않았다면
kpt
를 설치합니다.gcloud components install kpt
선택적으로 Anthos Service Mesh 패키지 리소스 구성 파일을 위한 새 디렉터리를 만듭니다. 2개 이상의 클러스터를 설정하려는 경우 클러스터 이름을 디렉터리 이름으로 사용하는 것이 좋습니다.
Anthos Service Mesh 패키지를 다운로드할 디렉터리로 변경합니다.
Anthos Service Mesh 패키지를 현재 작업 디렉터리에 다운로드합니다.
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm .
클러스터 이름을 설정합니다.
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
필요한 경우
kpt
setter를 사용하여 리소스 구성 파일을 맞춤설정합니다. 기본적으로 이러한 setter는gcloud config
의 기본값을 사용합니다.gcloud config
기본값을 설정하거나 값을 변경하려면 다음 setter를 실행합니다.프로젝트 ID를 설정합니다.
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
기본 영역 또는 리전을 설정합니다.
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
원하는 경우 Cloud Source Repositories와 같은 자체 소스 제어 시스템에 리소스 구성 파일을 대조하여 파일의 변경사항을 추적할 수 있습니다.
Anthos Service Mesh 설치
이 섹션에서는 Anthos Service Mesh를 설치하고 사용 설정하는 방법을 설명합니다.
- 지원되는 기능 페이지에 나열된 지원되는 기본 기능
- Anthos Service Mesh 인증 기관(Mesh CA)
- Google Cloud 콘솔에서 Anthos Service Mesh 대시보드를 구동하는 원격 분석 데이터 파이프라인
지원되는 선택 기능 사용에 대한 자세한 내용은 선택 기능 사용 설정을 참조하세요.
Anthos Service Mesh를 설치하려면 다음을 사용하세요.
다음 명령어 중 하나를 선택하여 PERMISSIVE
상호 TLS(mTLS) 인증 모드 또는 STRICT
mTLS 모드에서 Anthos Service Mesh를 구성합니다.
PERMISSIVE mTLS
istioctl manifest apply --set profile=asm \ -f asm/cluster/istio-operator.yaml
STRICT mTLS
istioctl manifest apply --set profile=asm \ -f asm/cluster/istio-operator.yaml \ --set values.global.mtls.enabled=true
설치 검증
asmctl
분석 도구를 사용하여 프로젝트, 클러스터, 워크로드의 기본 구성을 검증하는 것이 좋습니다. asmctl
테스트가 실패하면 asmctl
에서 가능한 경우 해결책을 권장합니다. asmctl validate
명령어는 다음을 확인하는 기본 테스트를 실행합니다.
- Anthos Service Mesh에 필요한 API가 프로젝트에 사용 설정되어 있는지 여부
- Istio-Ingressgateway가 Mesh CA를 호출하도록 올바르게 구성되어 있는지 여부
- Istiod 및 Istio-Ingressgateway의 전반적인 상태
선택사항인 --with-testing-workloads
플래그를 사용하여 asmctl validate
명령어를 실행하면 기본 테스트 외에도 asmctl
이 다음을 확인하는 보안 테스트를 실행합니다.
- 상호 TLS(mTLS) 통신이 올바르게 구성되었습니다.
- Mesh CA는 인증서를 발급할 수 있습니다.
보안 테스트를 실행하기 위해 asmctl
은 클러스터의 워크로드를 테스트 네임스페이스에 배포하고 mTLS 통신 테스트를 실행하며 결과를 출력하고 테스트 네임스페이스를 삭제합니다.
asmctl
을 실행하려면 다음 안내를 따르세요.
gcloud 애플리케이션 기본 사용자 인증 정보가 설정되어 있는지 확인합니다.
gcloud auth application-default login
아직 하지 않은 경우 사용자 인증 정보를 가져와 클러스터와 상호작용합니다.
gcloud container clusters get-credentials ${CLUSTER_NAME}
PATH
에istio-1.5.10-asm.2/bin
이 있는 경우 기본 및 보안 테스트를 모두 실행하려면 다음을 입력하세요.asmctl validate --with-testing-workloads
성공하면 이 명령어는 다음과 비슷한 출력으로 응답합니다.
[asmctl version 0.3.0] Using Kubernetes context: example-project_us-central1-example-cluster To change the context, use the --context flag Validating enabled APIs OK Validating ingressgateway configuration OK Validating istio system OK Validating sample traffic Launching example services... Sent traffic to example service http code: 200 verified mTLS configuration OK Validating issued certs OK
사이드카 프록시 삽입
Anthos Service Mesh는 사이드카 프록시를 사용하여 네트워크 보안, 안정성, 관측 가능성을 개선합니다. Anthos Service Mesh를 사용하면 이러한 함수가 애플리케이션의 기본 컨테이너에서 추상화되고 동일한 포드에서 별도의 컨테이너로 제공되는 공용 프로세스 외부 프록시로 구현됩니다.
워크로드를 배포하기 전에 사이드카 프록시 삽입을 구성하여 Anthos Service Mesh가 트래픽을 모니터링하고 보호할 수 있도록 해야 합니다.명령어 하나로 자동 사이드카 삽입을 사용 설정할 수 있습니다. 예를 들면 다음과 같습니다.
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
여기서 NAMESPACE
는 네임스페이스를 명시적으로 만들지 않은 경우 애플리케이션 서비스의 네임스페이스 이름 또는 default
입니다.
자세한 내용은 사이드카 프록시 삽입을 참조하세요.
Anthos Service Mesh 대시보드 보기
사이드카 프록시가 삽입된 클러스터에 워크로드가 배포되면 Google Cloud Console의 Anthos Service Mesh 페이지에서 Anthos Service Mesh에서 제공하는 모든 관측 가능성 기능을 볼 수 있습니다. 워크로드를 배포한 후 Google Cloud 콘솔에 원격 분석 데이터가 표시되는 데 약 1~2분 정도가 걸립니다.
Google Cloud 콘솔에서 Anthos Service Mesh에 대한 액세스는 Identity and Access Management(IAM)로 제어됩니다. Anthos Service Mesh 페이지에 액세스하려면 프로젝트 소유자가 사용자에게 프로젝트 편집자 또는 뷰어 역할이나 Google Cloud 콘솔에서 Anthos Service Mesh에 대한 액세스 제어에 설명된 더 제한적인 역할을 부여해야 합니다.
Google Cloud 콘솔에서 Anthos Service Mesh로 이동합니다.
메뉴 바의 드롭다운 목록에서 Google Cloud 프로젝트를 선택합니다.
서비스 메시가 2개 이상 있으면 Service Mesh 드롭다운 목록에서 해당 메시를 선택합니다.
자세한 내용은 Google Cloud 콘솔에서 Anthos Service Mesh 탐색을 참조하세요.
Anthos Service Mesh 페이지 외에도 서비스와 관련된 측정항목(예: 특정 서비스에서 수신한 요청 수)이 Cloud Monitoring으로 전송되어 측정항목 탐색기에 표시됩니다.
측정항목을 보려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Monitoring 페이지로 이동합니다.
리소스 > 측정항목 탐색기를 선택합니다.
측정항목의 전체 목록은 Cloud Monitoring 문서의 Istio 측정항목을 참조하세요.