3단계: ASM 설치

ASM 설치

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

지원되는 ASM 버전

하이브리드 버전 1.5에서 지원되는 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 허브 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

다른 플랫폼의 GKE

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

  • GKE On-Prem(Anthos)
  • 베어메탈용 Anthos
  • GKE on AWS

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

  1. ASM 문서(설치 파일 다운로드)의 안내에 따라 istioctl을 다운로드하고 압축을 풉니다.
  2. 사용하려는 인증 기관에 따라 다음 섹션 중 하나의 안내에 따라 ASM을 설치합니다.
    1. Mesh CA 사용: Mesh CA를 사용하여 Anthos Service Mesh 설치
    2. Istio CA에 고유 인증서 제공: Istio CA를 사용하여 Anthos Service Mesh 설치
  3. 유효성 검증 웹훅 구성의 안내에 따라 유효성 검증 웹훅을 구성합니다.
  4. 제어 영역 구성요소 확인의 안내에 따라 제어 영역 구성요소를 확인합니다.

    '사이드카 프록시 삽입'으로 진행하지 마십시오.

기타 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. asm-multicloud 프로필을 사용하여 istioctl로 Anthos Service Mesh를 설치합니다.
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

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

  2. 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
  3. 설치가 완료되었는지 확인합니다.
    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

유효성 검증 웹훅 구성

Anthos Service Mesh를 설치할 때 istiod에 버전 라벨을 설정합니다. 유효성 검증 웹훅에 동일한 버전을 설정해야 합니다.

  1. 다음 콘텐츠로 istiod-service.yaml이라는 파일을 만듭니다.
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1129-3
      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)%"}'
  2. kubectl을 사용하여 유효성 검증 웹훅 구성을 적용합니다.
    kubectl apply -f istiod-service.yaml
  3. 구성이 적용되었는지 확인합니다.
    kubectl get svc -n istio-system

    다음과 비슷한 응답이 표시됩니다.

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

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. asm-multicloud 프로필을 사용하여 istioctl로 Anthos Service Mesh를 설치합니다.
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

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

  2. 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
  3. 설치가 완료되었는지 확인합니다.
    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

유효성 검증 웹훅 구성

Anthos Service Mesh를 설치할 때 istiod에 버전 라벨을 설정합니다. 유효성 검증 웹훅에 동일한 버전을 설정해야 합니다.

  1. 다음 콘텐츠로 istiod-service.yaml이라는 파일을 만듭니다.
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1129-3
      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)%"}'
  2. kubectl을 사용하여 유효성 검증 웹훅 구성을 적용합니다.
    kubectl apply -f istiod-service.yaml
  3. 구성이 적용되었는지 확인합니다.
    kubectl get svc -n istio-system

    다음과 비슷한 응답이 표시됩니다.

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

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. asm-multicloud 프로필을 사용하여 istioctl로 Anthos Service Mesh를 설치합니다.
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

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

  2. 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
  3. 설치가 완료되었는지 확인합니다.
    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

유효성 검증 웹훅 구성

Anthos Service Mesh를 설치할 때 istiod에 버전 라벨을 설정합니다. 유효성 검증 웹훅에 동일한 버전을 설정해야 합니다.

  1. 다음 콘텐츠로 istiod-service.yaml이라는 파일을 만듭니다.
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1129-3
      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)%"}'
  2. kubectl을 사용하여 유효성 검증 웹훅 구성을 적용합니다.
    kubectl apply -f istiod-service.yaml
  3. 구성이 적용되었는지 확인합니다.
    kubectl get svc -n istio-system

    다음과 비슷한 응답이 표시됩니다.

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

ASM 설치 맞춤설정

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

요약

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

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