3단계: ASM 설치

ASM 설치

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

지원되는 ASM 버전

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

ASM 설정 및 구성 단계 수행

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

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

  • GKE: Google Cloud에서 실행되는 Google Kubernetes Engine 클러스터입니다.
  • Google Cloud 외부: 다음 위치에서 실행되는 Anthos 클러스터:
    • VMware용 Anthos 클러스터(GKE On-Prem)
    • 베어메탈용 Anthos
    • AWS용 Anthos 클러스터
    • 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
    • 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
  • AWS용 Anthos 클러스터
  • Amazon EKS

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 허브 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

기타 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 \
        --set revision="asm-1129-3" \
        --filename overlay.yaml

    --set revision 인수는 istio.io/rev=asm-1129-3 형식의 버전 라벨을 istiod에 추가합니다. 버전 라벨은 자동 사이드카 인젝터 웹훅에서 삽입된 사이드카를 특정 istiod 버전과 연결하는 데 사용됩니다. 네임스페이스에 사이드카 자동 삽입을 사용 설정하려면 istiod의 라벨과 일치하는 버전으로 라벨을 지정해야 합니다.

  3. kubectl get pods를 사용하여 istiod 포드가 실행되는지 확인합니다.
    kubectl get pods -n istio-system

    다음과 비슷한 결과가 출력됩니다.

    NAME                                      READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2  1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9  1/1     Running   0          2m57s
    istiod-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  4. 설치가 완료되었는지 확인합니다.
    kubectl get svc -n istio-system

    다음과 비슷한 결과가 출력됩니다.

    NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway  LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1129-3     ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

EKS

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 \
        --set revision="asm-1129-3" \
        --filename overlay.yaml

    --set revision 인수는 istio.io/rev=asm-1129-3 형식의 버전 라벨을 istiod에 추가합니다. 버전 라벨은 자동 사이드카 인젝터 웹훅에서 삽입된 사이드카를 특정 istiod 버전과 연결하는 데 사용됩니다. 네임스페이스에 사이드카 자동 삽입을 사용 설정하려면 istiod의 라벨과 일치하는 버전으로 라벨을 지정해야 합니다.

  3. kubectl get pods를 사용하여 istiod 포드가 실행되는지 확인합니다.
    kubectl get pods -n istio-system

    다음과 비슷한 결과가 출력됩니다.

    NAME                                      READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2  1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9  1/1     Running   0          2m57s
    istiod-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  4. 설치가 완료되었는지 확인합니다.
    kubectl get svc -n istio-system

    다음과 비슷한 결과가 출력됩니다.

    NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway  LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1129-3     ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

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. 다음 oc 명령어를 사용하여 istio-system에 anyuid SCC(보안 컨텍스트 제약조건)을 부여합니다.
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  3. 서명 파일을 다운로드하고 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
  4. 원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
    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 디렉터리에 있습니다.
  5. Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
    cd istio-1.12.9-asm.3
  6. 편의를 위해 /bin 디렉터리의 도구를 PATH에 추가합니다.
    export PATH=$PWD/bin:$PATH
  7. MacOS

  8. 다음 oc 명령어를 사용하여 istio-system에 anyuid SCC(보안 컨텍스트 제약조건)을 부여합니다.
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  10. 서명 파일을 다운로드하고 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
  11. 원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
    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 디렉터리에 있습니다.
  12. Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
    cd istio-1.12.9-asm.3
  13. 편의를 위해 /bin 디렉터리의 도구를 PATH에 추가합니다.
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. 다음 OpenShift CLI(oc) 명령어를 사용하여 istio-system에 anyuid SCC(보안 컨텍스트 제약조건)을 부여합니다.
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Anthos Service Mesh 설치 파일을 현재 작업 디렉터리에 다운로드합니다.
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  17. 서명 파일을 다운로드하고 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
  18. 원하는 파일 시스템 위치에 파일 콘텐츠 압축을 풉니다. 예를 들어 콘텐츠를 현재 작업 디렉터리에 추출하려면 다음을 사용하세요.
    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 디렉터리에 있습니다.
  19. Anthos Service Mesh 설치 루트 디렉터리에 있는지 확인합니다.
    cd istio-1.12.9-asm.3
  20. 편의를 위해 \bin 디렉터리의 도구를 PATH에 추가합니다.
    set PATH=%CD%\bin:%PATH%
  21. 이제 ASM Istio가 설치되었으므로 istioctl의 버전을 확인합니다.
    istioctl version
  22. 컨트롤 플레인 구성요소에 대해 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 \
        --set revision="asm-1129-3" \
        --filename overlay.yaml

    --set revision 인수는 istio.io/rev=asm-1129-3 형식의 버전 라벨을 istiod에 추가합니다. 버전 라벨은 자동 사이드카 인젝터 웹훅에서 삽입된 사이드카를 특정 istiod 버전과 연결하는 데 사용됩니다. 네임스페이스에 사이드카 자동 삽입을 사용 설정하려면 istiod의 라벨과 일치하는 버전으로 라벨을 지정해야 합니다.

  3. kubectl get pods를 사용하여 istiod 포드가 실행되는지 확인합니다.
    kubectl get pods -n istio-system

    다음과 비슷한 결과가 출력됩니다.

    NAME                                      READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2  1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9  1/1     Running   0          2m57s
    istiod-asm-1129-3-dbfb7c7b6-2ls88      1/1     Running   0          3m21s
    istiod-asm-1129-3-dbfb7c7b6-fnj8c      1/1     Running   1          3m21s
  4. 설치가 완료되었는지 확인합니다.
    kubectl get svc -n istio-system

    다음과 비슷한 결과가 출력됩니다.

    NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway  LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1129-3     ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

ASM 설치 맞춤설정

지금 수행한 ASM 설치는 최소 설치이며, 기본 사용 사례를 위해 Apigee Hybrid를 테스트하고 사용하는 데에는 충분합니다. 부하 분산기 포트 번호 추가, 삭제 또는 수정과 같은 고급 사용 사례 해결에 대한 자세한 내용은 선택 기능 사용 설정을 참조하세요.

요약

cert-manager와 ASM이 설치되었으며 이제 Apigee Hybrid 명령줄 도구를 로컬 머신에 설치할 수 있습니다.

1 2 3 (다음) 4단계: apigeectl 설치 5 6 7 8 9