Google Cloud 외부에 Kf 설치

이 문서에서는 Kf 및 해당 종속 항목을 VMware용 GKE 또는 베어메탈용 GKE 온프레미스 클러스터에 설치하는 방법을 설명합니다.

Google Cloud의 GKE 클러스터에 Kf를 설치하는 프로세스에 이미 익숙하다면 온프레미스 절차에서 다음과 같은 주요 차이점을 발견할 수 있습니다.

  • 온프레미스 설치에서는 구성 커넥터를 설치할 필요는 없습니다.
  • 온프레미스 절차에서는 워크로드 아이덴티티 대신 Docker 사용자 인증 정보를 사용합니다.

시작하기 전에

VMware용 GKE 요구사항

Kf 요구사항

  • Cloud Service Mesh

  • Kf에서 사용할 Tekton. 사용자용 서비스가 아닙니다.

  • 전용 Google 서비스 계정입니다.

환경 변수 설정

Linux 및 Mac

export PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export COMPUTE_ZONE=us-central1-a
export COMPUTE_REGION=us-central1
export CLUSTER_LOCATION=${COMPUTE_ZONE} # Replace ZONE with REGION to switch
export NODE_COUNT=4
export MACHINE_TYPE=e2-standard-4
export NETWORK=default
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export DOCKER_SERVER=YOUR_DOCKER_SERVER_URL
export SA_NAME=${CLUSTER_NAME}-sa
export SA_EMAIL=${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com

Windows PowerShell

Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_NAME -Value kf-cluster
Set-Variable -Name COMPUTE_ZONE -Value us-central1-a
Set-Variable -Name COMPUTE_REGION -Value us-central1
Set-Variable -Name CLUSTER_LOCATION -Value $COMPUTE_ZONE # Replace ZONE with REGION to switch
Set-Variable -Name NODE_COUNT -Value 4
Set-Variable -Name MACHINE_TYPE -Value e2-standard-4
Set-Variable -Name NETWORK -Value default
Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_NAME -Value kf-cluster
Set-Variable -Name DOCKER_SERVER -Value YOUR_DOCKER_SERVER_URL
Set-Variable -Name SA_NAME -Value ${CLUSTER_NAME}-sa
Set-Variable -Name SA_EMAIL -Value ${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com

서비스 계정 설정

빌드가 Container Registry에서 읽기/쓰기를 수행하는 데 사용되는 Google Cloud 서비스 계정(GSA) 및 서비스 계정 키를 만듭니다. 다른 Container Registry를 사용하는 경우 레지스트리에 액세스하기 위해 사용자 인증 정보를 가져오는 방법이 다를 수 있으므로 이 단계가 달라집니다.

  1. Kf에서 사용되는 서비스 계정을 만듭니다.

    gcloud beta iam service-accounts create ${SA_NAME} \
        --project=${CLUSTER_PROJECT_ID} \
        --description="gcr.io admin for ${CLUSTER_NAME}" \
        --display-name="${CLUSTER_NAME}"
  2. Container Registry에서 읽기/쓰기에 필요한 storage.admin 역할을 서비스 계정에 할당합니다.

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
  3. 서비스 계정 키를 만듭니다.

    temp_dir=$(mktemp -d)
    key_path=${temp_dir}/key.json
    gcloud iam service-accounts keys create --iam-account ${SA_EMAIL} ${key_path}
    key_json=$(cat ${key_path})
    rm -rf ${temp_dir}

클러스터에 소프트웨어 종속 항목 설치

  1. Cloud Service Mesh를 설치합니다.

    1. Cloud Service Mesh 설치 가이드에 따라 Cloud Service Mesh를 설치합니다.

    2. VMware용 GKE의 경우, VMware용 GKE의 외부 IP 주소 구성에 설명된 대로 loadBalancerIP를 클러스터에 할당된 IP로 설정합니다.

  2. Tekton 설치:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.47.1/release.yaml"

Kf 설치

  1. Kf CLI를 설치합니다.

    Linux

    이 명령어는 시스템의 모든 사용자에 대해 Kf CLI를 설치합니다. Cloud Shell 탭의 안내에 따라 직접 설치합니다.

    gsutil cp gs://kf-releases/v2.11.21/kf-linux /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf
    

    Mac

    이 명령어는 시스템의 모든 사용자에 대해 kf를 설치합니다.

    gsutil cp gs://kf-releases/v2.11.21/kf-darwin /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf
    

    Cloud Shell

    이 명령어는 bash를 사용하는 경우 Cloud Shell 인스턴스에 kf를 설치합니다. 다른 셸의 경우 지침을 수정해야 할 수 있습니다.

    mkdir -p ~/bin
    gsutil cp gs://kf-releases/v2.11.21/kf-linux ~/bin/kf
    chmod a+x ~/bin/kf
    echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
    source ~/.bashrc
    

    Windows

    이 명령어는 kf를 현재 디렉터리에 다운로드합니다. 현재 디렉터리 이외의 다른 곳에서 호출하려는 경우 경로에 추가합니다.

    gsutil cp gs://kf-releases/v2.11.21/kf-windows.exe kf.exe
    
  2. 연산자 설치:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/operator.yaml"
  3. Kf에 대한 연산자 구성:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/kfsystem.yaml"

Docker 사용자 인증 정보용 Kubernetes 보안 비밀 만들기

위의 서비스 계정 설정에서 만든 Docker 사용자 인증 정보의 Kf 네임스페이스에 Kubernetes 보안 비밀을 만듭니다. 그런 다음 소스 업로드를 위해 Kubernetes 보안 비밀을 subresource-apiserver 배포에 패치합니다.

  1. Kf 연산자를 사용 설정하고 Container Registry를 컨테이너 레지스트리로 사용하도록 업데이트합니다.

    export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
    
    kubectl patch \
    kfsystem kfsystem \
    --type='json' \
    -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'featureFlags': {'enable_appdevexperience_builds': true}, 'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
    
    export CONTAINER_REGISTRY=gcr.io/${CLUSTER_PROJECT_ID}
    kubectl patch kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry':'${CONTAINER_REGISTRY}'}}}]"
    
  2. Kf 연산자로 kf 네임스페이스가 생성되었는지 확인합니다. 완료되는 데 몇 분 정도 걸릴 수 있습니다.

    kubectl get namespace kf
  3. Docker 레지스트리에서 사용할 Kubernetes 보안 비밀을 만듭니다.

    export secret_name=kf-gcr-key-${RANDOM}
    kubectl -n kf create secret docker-registry ${secret_name} \
       --docker-username=_json_key --docker-server ${DOCKER_SERVER} \
       --docker-password="${key_json}"
    
  4. Kf 연산자를 업데이트하여 Docker 사용자 인증 정보가 포함된 보안 비밀을 지정합니다.

    kubectl patch kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
    

설치 유효성 검사

kf doctor --retries=20