3단계: ASM 설치

ASM 설치

Apigee Hybrid는 Anthos Service Mesh(ASM)와 함께 제공된 Istio 배포판을 사용합니다. 클러스터에 ASM을 설치하려면 다음 단계를 따르세요.

지원되는 ASM 버전

하이브리드 버전 1.7에서 지원되는 ASM 버전은 Apigee Hybrid: 지원되는 플랫폼을 참조하세요.

ASM 설정 및 구성 단계 수행

ASM 설치를 완료하려면 먼저 ASM 문서의 ASM 관련 설정 및 구성 단계를 따라야 합니다. 그런 다음 클러스터에 구성을 적용하기 전에 여기로 돌아와 하이브리드 전용 구성을 완료해야 합니다.

ASM 설치 및 구성 안내는 플랫폼에 따라 다릅니다. 플랫폼은 다음 카테고리로 분류됩니다.

  • GKE: Google Cloud에서 실행되는 Google Kubernetes Engine 클러스터입니다.
  • Google Cloud 외부: 다음 위치에서 실행되는 Anthos 클러스터:
    • VMware용 Anthos 클러스터(GKE On-Prem)
    • 베어메탈용 Anthos
    • Anthos clusters on AWS
    • Amazon EKS
  • 기타 Kubernetes 플랫폼: 다음 제품에서 생성 및 실행되는 규정 준수 클러스터입니다.
    • AKS
    • EKS
    • OpenShift

GKE

ASM 설치 준비

  1. 다음 단계에 필요한 환경 변수를 확인하고 필요한 경우 설정합니다.
    echo $PROJECT_ID
    echo $CLUSTER_NAME
    echo $CLUSTER_LOCATION
  2. 다음 콘텐츠로 overlay.yaml이라는 오버레이 파일을 만듭니다.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
    
    • apigee-runtime은 노드 선택기의 기본값입니다. 1단계: 클러스터 만들기에서 만든 apigee-runtime 노드 풀입니다. 노드 선택기를 사용하지 않거나 다른 노드 선택기를 사용하는 경우 nodeSelector 속성을 변경하거나 생략합니다.
    • STATIC_IP는 부하 분산기의 IP 주소입니다. 설정하지 않은 경우 loadBalancerIP 속성을 생략하고 typeports 속성은 유지합니다.
  3. 안내를 따라 ASM을 설치합니다.
    1. Anthos 기본 요건
    2. Anthos Service Mesh를 설치하는 데 필요한 권한
    3. 설치 계획
  4. 필수 도구 설치의 안내를 따라 git, kubectl, jq와 같은 필수 도구와 asmcli를 설치합니다.
  5. 클러스터 관리자 권한 부여 단계를 수행하고 중지합니다. '프로젝트 및 클러스터 유효성 검사' 단계를 수행하지 마세요.
  6. 선택적 기능을 사용하여 ASM을 설치합니다. --option legacy-default-ingressgateway로 기존 인그레스 게이트웨이를 지정합니다. 예를 들면 다음과 같습니다.
    ./asmcli install \
      --verbose \
      --project_id $PROJECT_ID \
      --cluster_name $CLUSTER_NAME \
      --cluster_location $CLUSTER_LOCATION \
      --output_dir dir_path \
      --custom_overlay overlay.yaml \
      --enable_all \
      --option legacy-default-ingressgateway
    • dir_pathasmcli에서 모든 하위 디렉터리를 포함하여 ASM 설치를 설정할 출력 디렉터리입니다.
    • overlay.yaml은 이전 단계에서 만든 오버레이 파일입니다.

    선택적 기능으로 설치의 안내를 따를 때 이 설정을 사용합니다.

문제 해결하기

gcloud container hub memberships register를 참조하는 데 오류가 발생한 경우 GKE 허브에 등록된 최대 클러스터 수를 초과했을 수 있습니다. 예를 들면 다음과 같습니다.

asmcli_1.12: [WARNING]:  Command 'run_command gcloud
container hub memberships register my-hybrid-example
...' failed.

다음 단계를 수행하여 이 오류를 해결한 후 asmcli install을 다시 실행합니다.

  1. 프로젝트의 GKE 허브 멤버십을 나열합니다.
    gcloud container hub memberships list --project=$PROJECT_ID
  2. GKE 허브 멤버십을 삭제합니다.
    gcloud container hub memberships delete "membership" --project=$PROJECT_ID

GKE 허브 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

Google Cloud 외부

다음 제품에서 Anthos를 사용하여 실행되는 Apigee Hybrid 인스턴스를 위해 ASM을 설치 및 설정하는 방법에 대한 안내입니다.

  • VMware용 Anthos 클러스터(GKE On-Prem)
  • 베어메탈용 Anthos
  • Anthos clusters on AWS
  • Amazon EKS

ASM 설치 준비

  1. 다음 단계에 필요한 환경 변수를 확인하고 필요한 경우 설정합니다.
    echo ${PROJECT_ID}
    echo ${CLUSTER_NAME}
    echo ${CLUSTER_LOCATION}
  2. ASMCLI에 필요한 값을 기록해 둡니다. ASM 문서의 단계를 수행할 때 제공해야 하는 값입니다.
    • FLEET_PROJECT_ID는 클러스터를 연결할 프로젝트의 이름입니다. 이 설치를 위해 만들고 ${PROJECT_ID} 환경 변수에 저장된 프로젝트를 사용합니다.
    • KUBECONFIG_FILE은 kubeconfig 파일의 전체 경로입니다. 기본 경로는 $HOME/.kube/config입니다. 자세한 내용은 Kubernetes 문서의 kubeconfig 파일을 사용하여 클러스터 액세스 구성을 참조하세요.
    • DIR_PATH는 ASMCLI의 출력 디렉터리입니다. 이 경로에서 Istio 구성 파일을 만듭니다. 예를 들면 ./asm입니다.
    • GATEWAY_NAMESPACE는 Istio 인그레스 게이트웨이의 네임스페이스입니다(예: istio).
    • REVISION은 이 ASM 출시 버전의 버전 라벨입니다. asm-1129-3을 사용합니다.
    • CONTEXT는 Kubernetes 컨텍스트입니다. 다음 명령어로 Kubernetes가 클러스터의 컨텍스트를 사용 중인지 확인합니다.
      kubectl config get-contexts

      현재 클러스터가 현재 컨텍스트가 아니면 다음 명령어를 사용하여 설정하면 됩니다.

      kubectl config use-context CONTEXT
    • USER_ACCOUNT는 클러스터를 관리하는 데 사용되는 클러스터 관리자 권한이 있는 계정입니다.
  3. 다음 명령어를 사용하여 컨텍스트를 프로젝트 및 리전으로 설정합니다.

    기본 프로젝트 ID를 설정합니다.

    gcloud config set project ${PROJECT_ID}

    리전 클러스터를 사용하는 경우 기본 컴퓨팅 리전을 설정합니다.

    gcloud config set compute/region ${CLUSTER_LOCATION}
  4. 다음 명령어를 사용하여 사용자 인증 정보를 가져옵니다.
    gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID}
  5. 다음 콘텐츠로 overlay.yaml이라는 오버레이 파일을 만듭니다.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
    
    • apigee-runtime은 노드 선택기의 기본값입니다. 1단계: 클러스터 만들기에서 만든 apigee-runtime 노드 풀입니다. 노드 선택기를 사용하지 않거나 다른 노드 선택기를 사용하는 경우 nodeSelector 속성을 변경하거나 생략합니다.
    • STATIC_IP는 부하 분산기의 IP 주소입니다. 설정하지 않은 경우 loadBalancerIP 속성을 생략하고 typeports 속성은 유지합니다.
  6. 안내를 따라 ASM을 설치합니다.
    1. Anthos 기본 요건
    2. Anthos Service Mesh를 설치하는 데 필요한 권한
    3. 설치 계획
  7. 필수 도구 설치의 안내를 따라 git, kubectl, jq와 같은 필수 도구와 asmcli를 설치합니다.
  8. 클러스터 관리자 권한 부여 단계를 수행하고 중지합니다. '프로젝트 및 클러스터 유효성 검사' 단계를 수행하지 마세요.
  9. 선택적 기능을 사용하여 ASM을 설치합니다. --option legacy-default-ingressgateway로 기존 인그레스 게이트웨이를 지정합니다. 예를 들면 다음과 같습니다.
    ./asmcli install \
      --verbose \
      --project_id $PROJECT_ID \
      --cluster_name $CLUSTER_NAME \
      --cluster_location $CLUSTER_LOCATION \
      --output_dir dir_path \
      --custom_overlay overlay.yaml \
      --enable_all \
      --option legacy-default-ingressgateway
    • dir_pathasmcli에서 모든 하위 디렉터리를 포함하여 ASM 설치를 설정할 출력 디렉터리입니다.
    • overlay.yaml은 이전 단계에서 만든 오버레이 파일입니다.

    선택적 기능으로 설치의 안내를 따를 때 이 설정을 사용합니다.

문제 해결하기

gcloud container hub memberships register를 참조하는 데 오류가 발생한 경우 GKE 허브에 등록된 최대 클러스터 수를 초과했을 수 있습니다. 예를 들면 다음과 같습니다.

asmcli_1.12: [WARNING]:  Command 'run_command gcloud
container hub memberships register my-hybrid-example
...' failed.

다음 단계를 수행하여 이 오류를 해결한 후 asmcli install을 다시 실행합니다.

  1. 프로젝트의 GKE 허브 멤버십을 나열합니다.
    gcloud container hub memberships list --project=$PROJECT_ID
  2. GKE 허브 멤버십을 삭제합니다.
    gcloud container hub memberships delete "membership" --project=$PROJECT_ID

GKE 허브 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

기타 Kubernetes 플랫폼

AKS

ASM 설정 및 다운로드

시작하기 전에 다음 단계를 자세히 읽어보세요. ASM 문서에 나열된 몇 가지 단계를 수행한 후 여기로 돌아와서 설치를 완료합니다.

이 가이드에서는 Anthos 연결 클러스터에 Anthos Service Mesh(ASM) 버전 1.12.9-asm.3을 정상적으로 설치하는 방법을 설명합니다. 이 가이드를 사용하여 다음 환경에 Anthos Service Mesh를 설치합니다.

  • Kubernetes의 Amazon Elastic Kubernetes Service(Amazon EKS)
  • Kubernetes의 Microsoft Azure Kubernetes Service(Microsoft AKS)
  • Red Hat OpenShift

Anthos Service Mesh 설치 준비

    Linux

  1. Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. 서명 파일을 다운로드하고 openssl을 사용하여 서명을 확인합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  3. 원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    이 명령어는 다음을 포함하는 현재 작업 디렉터리에 istio-1.12.9-asm.3이라는 설치 디렉터리를 만듭니다.

    • 샘플 애플리케이션은 samples 디렉터리에 있습니다.
    • Anthos Service Mesh를 설치하는 데 사용하는 istioctl 명령줄 도구는 bin 디렉터리에 있습니다.
    • Anthos Service Mesh 구성 프로필은 manifests/profiles 디렉터리에 있습니다.
  4. Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
    cd istio-1.12.9-asm.3
  5. 편의를 위해 /bin 디렉터리의 도구를 PATH에 추가합니다.
    export PATH=$PWD/bin:$PATH
  6. MacOS

  7. Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. 서명 파일을 다운로드하고 openssl을 사용하여 서명을 확인합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  9. 원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    이 명령어는 다음을 포함하는 현재 작업 디렉터리에 istio-1.12.9-asm.3이라는 설치 디렉터리를 만듭니다.

    • 샘플 애플리케이션은 samples 디렉터리에 있습니다.
    • Anthos Service Mesh를 설치하는 데 사용하는 istioctl 명령줄 도구는 bin 디렉터리에 있습니다.
    • Anthos Service Mesh 구성 프로필은 manifests/profiles 디렉터리에 있습니다.
  10. Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
    cd istio-1.12.9-asm.3
  11. 편의를 위해 /bin 디렉터리의 도구를 PATH에 추가합니다.
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. 서명 파일을 다운로드하고 openssl을 사용하여 서명을 확인합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
    
  15. 원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
    tar xzf istio-1.12.9-asm.3-win.zip

    이 명령어는 다음을 포함하는 현재 작업 디렉터리에 istio-1.12.9-asm.3이라는 설치 디렉터리를 만듭니다.

    • 샘플 애플리케이션은 samples 디렉터리에 있습니다.
    • Anthos Service Mesh를 설치하는 데 사용하는 istioctl 명령줄 도구는 bin 디렉터리에 있습니다.
    • Anthos Service Mesh 구성 프로필은 manifests\profiles 디렉터리에 있습니다.
  16. Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
    cd istio-1.12.9-asm.3
  17. 편의를 위해 \bin 디렉터리의 도구를 PATH에 추가합니다.
    set PATH=%CD%\bin:%PATH%
  18. 이제 ASM Istio가 설치되었으므로 istioctl의 버전을 확인합니다.
    istioctl version
  19. 제어 영역 구성요소에 대해 istio-system이라는 네임스페이스를 만듭니다.
    kubectl create namespace istio-system

Anthos Service Mesh 설치

  1. 다음 콘텐츠로 overlay.yaml이라는 파일을 만듭니다.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. asm-multicloud 프로필을 사용하여 istioctl로 Anthos Service Mesh를 설치합니다.
    istioctl install \
        --set profile=asm-multicloud