환경 설정 및 업그레이드 준비

명령줄 환경을 설정하고, 환경 변수를 만들고, 마이그레이션 스크립트를 다운로드하여 이전 Knative serving 설치를 업그레이드하고 워크로드를 마이그레이션할 수 있도록 준비합니다.

시작하기 전에

  • 업그레이드하기 전 먼저 검토를 수행하여 요구사항을 충족하는지 확인해야 합니다.

  • 기본적으로 Cloud Shell에는 최신 버전의 gcloudkubectl 명령어가 포함됩니다. 로컬 머신의 명령줄 환경을 사용하도록 선택한 경우 다음 최소 요구사항을 충족하는지 확인해야 합니다.

    • gcloud 버전 346.0.0 이상
    • kubectl 클라이언트 버전 1.21 이상

    명령줄 도구 설정에 대해 자세히 알아봅니다.

  • 이 페이지의 준비 단계는 업그레이드 및 마이그레이션 프로세스 전체에 필요합니다.

    중요: 이 프로세스 중에 사용되는 모든 명령어에는 아래에서 설정하는 환경 변수가 사용됩니다. 예를 들어 Cloud Shell을 닫거나 세션이 시간 초과되면 필요한 환경 변수가 재설정되었는지 확인해야 합니다.

환경 설정

  1. Cloud Shell을 사용하려면 Google Cloud 콘솔에서 Cloud Shell을 엽니다.

    Cloud Shell 활성화

    중요: Cloud Shell은 사용량 한도가 있고 시간 초과될 수 있습니다. 세션이 시간 초과되면 필요한 환경 변수가 재설정되었는지 확인해야 합니다.

  2. 다음과 같이 필요한 환경 변수를 만듭니다.

    1. Google Cloud 프로젝트 및 클러스터 세부정보에 대해 변수를 설정합니다.

      export PROJECT_ID=PROJECT_ID
      export CLUSTER_NAME=CLUSTER_NAME
      export CLUSTER_LOCATION=CLUSTER_LOCATION
      

      다음을 바꿉니다.

      • PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
      • CLUSTER_NAME을 클러스터 ID 또는 클러스터의 정규화된 식별자로 바꿉니다.
      • CLUSTER_LOCATION을 클러스터가 있는 리전 또는 영역으로 바꿉니다.
    2. 구성에 따라 클러스터에서 트래픽을 처리하는 인그레스 게이트웨이를 식별해야 합니다. 어떤 Istio 버전이 실제로 구성되었고 트래픽을 처리하는지 확인하는 것이 중요합니다.

      • 번들 버전의 Istio를 사용하는 경우 인그레스 서비스 이름이 gke-system 네임스페이스에서 istio-ingress인지 확인합니다.

        kubectl get svc istio-ingress -n gke-system
        

        결과: 구성의 세부정보가 반환됩니다.

      • 'Istio 부가기능'을 설치한 경우 서비스의 IP 주소를 가져오고 도메인에 구성된 항목을 식별하여 어떤 인그레스 게이트웨이가 구성되었고 현재 트래픽을 처리 중인지 확인해야 합니다.

        1. 각 인그레스 서비스에 대해 EXTERNAL-IP 주소를 가져옵니다.

          다음 명령어를 실행하여 '번들 Isto 버전'(istio-ingress) 및 'Istio 부가기능'(istio-ingressgateway) 인그레스 서비스 모두의 구성 세부정보를 가져옵니다.

          kubectl get svc istio-ingress -n gke-system
          kubectl get svc istio-ingressgateway -n istio-system
          

          출력 예시:

          각 서비스의 EXTERNAL-IP 값을 확인합니다.

           NAME                 TYPE         CLUSTER-IP  EXTERNAL-IP    PORT(S)                                     AGE
           istio-ingress        LoadBalancer 11.11.1.111 12.345.678.910 15020:31265/TCP,80:30059/TCP,443:32004/TCP  8d
          
           NAME                 TYPE         CLUSTER-IP  EXTERNAL-IP    PORT(S)                                                                     AGE
           istio-ingressgateway LoadBalancer 22.22.2.222 10.987.654.321 15021:32747/TCP,80:30695/TCP,443:32695/TCP,15012:32369/TCP,15443:30909/TCP  88d
          
        2. 커스텀 도메인의 DNS 레코드를 통해 트래픽을 처리하도록 구성된 외부 IP 주소를 확인합니다.

          1. Knative serving 도메인 매핑 페이지로 이동합니다.

            도메인 매핑으로 이동

          2. 서비스의 오른쪽에 있는 세로 3개 점 아이콘을 클릭한 다음 DNS 레코드를 클릭하여 모든 DNS 레코드를 표시합니다.

            DNS 레코드 선택

            위의 예시를 사용해서 DNS 레코드 구성이 istio-ingressgateway 서비스의 10.987.654.321 IP 주소로 설정된 경우 Istio 부가기능 인그레스 게이트웨이가 사용되고 트래픽을 처리합니다.

    3. 클러스터에 대해 트래픽을 처리하는 인그레스 서비스의 이름 및 네임스페이스에 대해 변수를 설정합니다.

      export INGRESS_NAME=INGRESS_NAME
      export INGRESS_NAMESPACE=INGRESS_NAMESPACE
      

      다음을 바꿉니다.

      • INGRESS_NAME을 이전 단계에서 식별한 인그레스 서비스의 이름으로 바꿉니다.

      • INGRESS_NAMESPACE를 이전 단계에서 식별한 인그레스 서비스의 네임스페이스로 바꿉니다.

  3. Google Cloud CLI를 구성합니다.

    gcloud config set project ${PROJECT_ID}
    gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION}
    
  4. 비공개 클러스터의 경우:

    • 마이그레이션 스크립트를 실행할 클라이언트에서 비공개 클러스터에 대해 액세스 권한이 이미 있으면 다음 단계로 건너뛸 수 있습니다.

    • 비공개 클러스터에 master-authorized-network가 사용 설정되었으면 클라이언트의 IP 주소를 master-authorized-networks 허용 목록에 추가하여 마이그레이션 스크립트를 실행할 클라이언트에서 액세스를 사용 설정할 수 있습니다.

      gcloud container clusters update ${CLUSTER_NAME} \
          --region=${CLUSTER_LOCATION} \
          --enable-master-authorized-networks \
          --master-authorized-networks $(curl ifconfig.me)/32
      
  5. Knative serving 마이그레이션 스크립트를 다운로드합니다.

    TMP_DIR=$(mktemp -d)
    gsutil cp gs://crfa-to-hub-upgrade/migration-addon.sh $TMP_DIR
    cd $TMP_DIR
    chmod +x ./migration-addon.sh
    
  6. 다음 명령어를 실행하여 '0으로 축소'를 사용 중지합니다. 그렇지 않으면 확장이 실패하고 마스터 노드가 업데이트될 때 오류가 발생합니다.

    kubectl patch cm config-autoscaler -n knative-serving -p '{"data":{"enable-scale-to-zero": "false"}}'
    

    이 업그레이드 및 마이그레이션 프로세스에서 마지막 단계는 '0으로 축소'를 다시 사용 설정하는 것입니다.

다음 단계

GKE 부가기능 제거