버전 1.11

참조

이 페이지에서는 스크립트에 사용 가능한 인수를 설명하고 스크립트가 프로젝트 및 GKE 클러스터에 적용하는 변경사항에 대한 세부정보를 제공합니다.

옵션

-p|--project_id CLUSTER_PROJECT_ID
클러스터가 생성된 프로젝트의 프로젝트 ID입니다.
-n|--cluster_name CLUSTER_NAME
클러스터의 이름입니다.
-l|--cluster_location CLUSTER_LOCATION
클러스터가 생성된 영역(단일 영역 클러스터) 또는 리전(리전 클러스터용)입니다.
-m|--mode {install|migrate|upgrade}

Istio의 새 설치, 업그레이드 또는 마이그레이션에는 --mode install을 사용할 수 있습니다. 업그레이드 또는 마이그레이션에 --mode install을 사용하면 install_asm은 클러스터의 제어 영역 버전에 관계없이 업그레이드/마이그레이션을 허용합니다. migrateupgrade 플래그는 이전 부 버전 또는 이전 패치 버전에서의 업그레이드 또는 마이그레이션만 허용합니다.

업그레이드 또는 마이그레이션에 --mode install을 사용하는 경우 현재 클러스터에서 사용 설정된 동일한 인증 기관(CA)을 지정해야 합니다. CA를 변경하면 다운타임이 발생합니다. --upgrade 플래그에서는 CA를 변경할 수 없으므로 부적절한 다운타임이 방지됩니다.

Istio에서 마이그레이션하는 경우 CA를 변경하고 Anthos Service Mesh 인증 기관(Mesh CA)을 사용 설정할 수 있습니다. Mesh CA로의 마이그레이션을 위한 다운타임을 예약할 수 없는 경우에도 Mesh CA로의 마이그레이션 경로는 있지만 추가 단계가 필요합니다. 자세한 내용은 Mesh CA로 마이그레이션을 참조하세요.

-c|--ca {mesh_ca|citadel}

새 설치의 경우 Mesh CA를 사용하려면 스크립트가 기본적으로 Mesh CA로 설정되므로 이 옵션을 포함할 필요가 없습니다. 업그레이드의 경우 스크립트에서 CA 변경이 허용되지 않으므로 이 옵션을 포함할 필요가 없습니다. 마이그레이션의 경우에는 citadel 또는 mesh_ca를 지정합니다. 마이그레이션을 위한 다운타임을 예약할 수 있는 경우 mesh_ca를 사용하는 것이 좋습니다. 사용할 CA에 대한 자세한 내용은 인증 기관 선택을 참조하세요. Istio CA를 사용할 때 지정해야 하는 추가 옵션은 Istio CA 커스텀 인증서 옵션을 참조하세요.

--co|--custom_overlay YAML_FILE

기본적으로 사용 설정되지 않은 기능을 사용 설정하기 위한 IstioOperator 커스텀 리소스(CR) YAML 파일의 이름입니다. 스크립트가 YAML 파일을 찾을 수 있어야 합니다. 따라서 파일이 스크립트와 동일한 디렉터리에 있어야 하거나, 상대 경로를 지정할 수도 있습니다. 여러 파일을 추가하려면 --co|--custom_overlay 및 파일 이름을 지정합니다(예: --co overlay_file1.yaml --co overlay_file2.yaml --co overlay_file3.yaml).

-o|--option OPTION_FILE

IstioOperator CR이 포함된 anthos-service-mesh 패키지의 YAML 파일 이름으로서 선택적 기능을 사용 설정하는 데 사용됩니다. 이러한 파일 중 하나를 포함할 때는 anthos-service-mesh 패키지를 먼저 다운로드할 필요가 없으며 .yaml 확장 프로그램을 지정하지 않습니다. 파일을 수정해야 하면 anthos-service-mesh 패키지를 다운로드하고, 항목을 변경하고, --custom_overlay 옵션을 사용합니다. 여러 파일을 추가하려면 -o|--option 및 파일 이름을 지정합니다(예: -o option_file1 -o option_file2 -o option_file3).

-D|--output_dir DIR_PATH

지정하지 않으면, 스크립트가 Anthos Service Mesh 설치에 필요한 파일 및 구성을 다운로드할 임시 디렉터리를 만듭니다. --output-dir 플래그를 지정하여 대신 사용할 디렉터리의 상대 경로를 지정합니다. 완료되면 지정된 디렉터리에 asmistio-1.11.2-asm.17 하위 디렉터리가 포함됩니다. asm 디렉터리에는 설치 구성이 포함됩니다. istio-1.11.2-asm.17 디렉터리에는 istioctl, 샘플, 매니페스트를 비롯한 설치 파일에서 추출한 콘텐츠가 포함됩니다. --output-dir을 지정하고 디렉터리에 이미 필요한 파일이 포함된 경우 스크립트가 이를 다운로드하는 대신 해당 파일을 사용합니다.

-r|--revision_name REVISION NAME>

버전 라벨은 제어 영역에 설정된 키-값 쌍입니다. 버전 라벨 키는 항상 istio.io/rev입니다. 기본적으로 스크립트는 Anthos Service Mesh 버전을 기준으로 버전 라벨 값을 설정합니다(예: asm-1112-17). 기본값을 재정의하고 직접 지정하려면 이 옵션을 포함하세요. REVISION NAME 인수는 DNS-1035 라벨이어야 하고 소문자, 영숫자 문자 또는 -로 구성되어야 하며 영문자로 시작하고 영숫자 문자(예: my-name' 또는 abc-123)로 끝나야 합니다. 검증에 사용되는 정규식은 '[a-z]([-a-z0-9]*[a-z0-9])?')입니다.

-s|--service_account ACCOUNT

Anthos Service Mesh를 설치하는 데 사용되는 서비스 계정의 이름입니다. 지정하지 않으면 현재 gcloud 구성의 활성 사용자 계정이 사용됩니다. 활성 사용자 계정을 변경해야 하는 경우 gcloud auth login을 실행합니다.

-k|--key_file FILE_PATH

서비스 계정의 키 파일입니다. 서비스 계정을 사용하지 않으면 이 옵션을 생략합니다.

Citadel 커스텀 인증서 옵션

--ca citadel을 지정했고 커스텀 CA를 사용하는 경우, 다음 옵션을 포함합니다.

  • --ca_cert FILE_PATH: 중간 인증서
  • --ca_key FILE_PATH: 중간 인증서의 키
  • --root_cert FILE_PATH: 루트 인증서
  • --cert_chain FILE_PATH: 인증서 체인

자세한 내용은 기존 CA 인증서 연결을 참조하세요.

사용 설정 플래그

--enable로 시작하는 플래그를 사용하면 스크립트가 필수 Google API를 사용 설정하고 필수 Identity and Access Management(IAM) 권한을 설정하고 클러스터를 업데이트할 수 있습니다. 원하는 경우 멀티 프로젝트 설치 가이드의 프로젝트 설정클러스터 설정 섹션에 설명된 대로, 스크립트를 실행하기 전에 프로젝트 및 클러스터를 직접 업데이트할 수 있습니다. 이러한 플래그는 모두 --only_validate와 호환되지 않으며 스크립트는 이 경우 오류와 함께 종료됩니다.

-e|--enable_all
스크립트가 아래에 설명된 모든 개별 사용 설정 작업을 수행하도록 허용합니다.
--enable_cluster_roles
스크립트를 실행하는 GCP 사용자 또는 서비스 계정을 클러스터의 cluster-admin 역할에 결합하도록 스크립트를 허용합니다. 스크립트에서 gcloud config get-value core/account 명령어를 통해 사용자 계정을 결정합니다. 사용자 계정을 사용해 스크립트를 로컬에서 실행하는 경우 스크립트를 실행하기 전에 gcloud auth login 명령어를 호출해야 합니다. 사용자 계정을 변경해야 하는 경우 gcloud config set core/account GCP_EMAIL_ADDRESS 명령어를 실행합니다. 여기서 GCP_EMAIL_ADDRESS는 Google Cloud에 로그인할 때 사용하는 계정입니다.
--enable_cluster_labels
스크립트가 필수 클러스터 라벨을 설정하도록 허용합니다.
--enable_gcp_components

스크립트가 다음 필수 Google Cloud 관리형 서비스 및 구성요소를 사용 설정하도록 허용합니다.

--enable_gcp_apis

스크립트가 모든 필수 Google API를 사용 설정하도록 허용합니다.

--enable_gcp_iam_roles

스크립트가 필수 IAM 권한을 설정하도록 허용합니다.

--enable_registration

스크립트가 클러스터가 있는 프로젝트에 클러스터를 등록할 수 있도록 허용합니다. 이 플래그를 포함하지 않는 경우에는 클러스터 등록의 단계에 따라 클러스터를 수동으로 등록합니다. 다른 사용 설정 플래그와 달리 --enable_registration은 클러스터 등록이 필요한 옵션(예: --option vm 또는 --option hub-meshca)을 지정할 때만 --enable_all에 포함됩니다. 그렇지 않으면 이 플래그를 별도로 지정해야 합니다.

기타 플래그

--dry_run
명령어를 출력하지만 실행하지는 않습니다.
--only_validate
유효성 검사를 실행하지만 프로젝트 또는 클러스터를 업데이트하지 않고 Anthos Service Mesh를 설치하지 않습니다. 이 플래그는 사용 설정 플래그와 호환되지 않습니다. 사용 설정 플래그로 --only_validate를 지정하면 스크립트가 오류와 함께 종료됩니다.
--print_config
Anthos Service Mesh를 설치하는 대신 모든 컴파일된 YAML을 표준 출력(stdout)으로 출력합니다. 다른 모든 출력은 일반적으로 stdout으로 이동하더라도 표준 오류(stderr)에 기록됩니다. 이 플래그를 지정하면 스크립트는 모든 검증 및 설정을 건너 뜁니다.
--disable_canonical_service
기본적으로 이 스크립트는 표준 서비스 컨트롤러를 클러스터에 배포합니다. 스크립트에서 컨트롤러를 배포하지 않으려면 --disable_canonical_service를 지정합니다. 자세한 내용은 표준 서비스 컨트롤러 사용 설정 및 중지를 참조하세요.
-h|--help
선택사항과 플래그를 설명하는 도움말 메시지를 표시하고 종료합니다.
-v|--verbose
스크립트가 실행될 때 다음에 실행될 명령어를 인쇄합니다. --verbose 플래그를 사용하면 스크립트가 실행된 후 명령어를 인쇄합니다.
--version
install_asm 버전을 인쇄하고 종료합니다. 명령어가 버전을 출력하지 않으면 최신 버전의 install_asm_1.11다운로드하세요.

스크립트 이해

안전한 Cloud Source Repositories 위치에서 스크립트를 다운로드하더라도 해당 스크립트는 GitHub에서도 사용할 수 있기 때문에 다운로드하기 전에 스크립트의 기능을 확인할 수 있습니다. 이 스크립트는 프로젝트 및 클러스터가 Anthos Service Mesh 요구사항을 충족하는지 검증하고 프로젝트와 클러스터를 구성하기 위해 수동으로 하는 모든 단계를 자동화하고 istioctl install 명령어를 사용하여 Anthos Service Mesh를 설치합니다.

Anthos Service Mesh 1.11.2에서 release-1.11 분기에 install_asm 스크립트의 버전을 사용합니다. 버전 관리 및 출시 프로세스에 대한 설명은 버전 관리/출시를 참조하세요.

검증

validate_dependencies() {
  validate_node_pool
  validate_k8s
  validate_expected_control_plane

  if [[ "${MODE}" = "migrate" ]]; then
    validate_istio_version
  elif [[ "${MODE}" = "upgrade" ]]; then
    validate_asm_version
    validate_ca_consistency
  fi
}

install_asm 스크립트는 다음을 확인합니다.

  • 매개변수 값으로 입력한 프로젝트 ID, 클러스터 이름, 클러스터 위치가 유효합니다.
  • 클러스터가 최소 필수 머신 유형 및 노드 수를 충족합니다.

프로젝트 설정

필요한 역할

--enable_all 또는 --enable_gcp_iam_roles 플래그를 포함했으면 스크립트가 필수 IAM 권한을 설정합니다.

required_iam_roles() {
  # meshconfig.admin - required for init, stackdriver, UI elements, etc.
  # servicemanagement.admin/serviceusage.serviceUsageAdmin - enables APIs
  if can_modify_gcp_components || \
     can_modify_cluster_labels || \
     can_modify_cluster_roles; then
    echo roles/container.admin
  fi
  if can_modify_gcp_components; then
    echo roles/meshconfig.admin
  fi
  if can_modify_gcp_apis; then
    echo roles/servicemanagement.admin
    echo roles/serviceusage.serviceUsageAdmin
  fi
  if can_modify_gcp_iam_roles; then
    echo roles/resourcemanager.projectIamAdmin
  fi
  if is_sa; then
    echo roles/iam.serviceAccountAdmin
  fi
  if can_register_cluster; then
    echo roles/gkehub.admin
  fi
  if [[ "${CA}" = "gcp_cas" ]]; then
    echo roles/privateca.admin
  fi
  if [[ "${_CI_I_AM_A_TEST_ROBOT}" -eq 1 ]]; then
    echo roles/compute.admin
    echo roles/iam.serviceAccountKeyAdmin
  fi
}

필수 Google API

--enable_all 또는 --enable_apis 플래그를 포함했다면 스크립트는 필수 APIS를 사용 설정합니다.

required_apis() {
    cat << EOF
container.googleapis.com
monitoring.googleapis.com
logging.googleapis.com
cloudtrace.googleapis.com
meshtelemetry.googleapis.com
meshconfig.googleapis.com
iamcredentials.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
cloudresourcemanager.googleapis.com
stackdriver.googleapis.com
EOF
  case "${CA}" in
   mesh_ca)
     echo meshca.googleapis.com
     ;;
   gcp_cas)
     echo privateca.googleapis.com
     ;;
    *);;
  esac

  if [[ "${_CI_I_AM_A_TEST_ROBOT}" -eq 1 ]]; then
    echo compute.googleapis.com
  fi
}

클러스터 설정

--enable_all 플래그 또는 아래 나열된 더 세분화된 사용 설정 플래그 중 하나가 포함된 경우 스크립트는 클러스터에 다음 업데이트를 수행합니다.

클러스터 업데이트 플래그
GKE 애플리케이션에서 Google Cloud 서비스에 안전하게 액세스하는 데 권장되는 워크로드 아이덴티티를 사용 설정합니다. --enable_gcp_components
GKE에서 Cloud Monitoring 및 Cloud Logging을 사용 설정합니다. --enable_gcp_components
Cloud Console의 Anthos Service Mesh 페이지에 측정항목을 표시하는 데 필요한 mesh_id 라벨을 클러스터에서 설정합니다. --enable_cluster_labels
스크립트가 클러스터를 수정했는지 확인할 수 있도록 asmv=asm-1112-17과 같은 라벨을 설정합니다. --enable_cluster_labels
스크립트를 실행하는 GCP 사용자 또는 서비스 계정을 클러스터의 cluster-admin 역할에 결합합니다. --enable_cluster_roles

다음 단계