이 문서에서는 Kf 및 해당 종속 항목을 VMware용 GKE 또는 베어메탈용 GKE 온프레미스 클러스터에 설치하는 방법을 설명합니다.
Google Cloud의 GKE 클러스터에 Kf를 설치하는 프로세스에 이미 익숙하다면 온프레미스 절차에서 다음과 같은 주요 차이점을 발견할 수 있습니다.
- 온프레미스 설치에서는 구성 커넥터를 설치할 필요는 없습니다.
- 온프레미스 절차에서는 워크로드 아이덴티티 대신 Docker 사용자 인증 정보를 사용합니다.
시작하기 전에
VMware용 GKE 요구사항
Cloud Service Mesh 요구사항을 충족하는 VMware용 GKE의 사용자 클러스터입니다.
로깅 및 모니터링 구성
GKE Enterprise Fleet에 등록됨:
클러스터 등록 방법 알아보기
Kf 요구사항
Kf에서 사용할 Tekton. 사용자용 서비스가 아닙니다.
전용 Google 서비스 계정입니다.
새 VMware용 GKE 클러스터 및 관련 서비스 준비
환경 변수 설정
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를 사용하는 경우 레지스트리에 액세스하기 위해 사용자 인증 정보를 가져오는 방법이 다를 수 있으므로 이 단계가 달라집니다.
Kf에서 사용되는 서비스 계정을 만듭니다.
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
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"
서비스 계정 키를 만듭니다.
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}
클러스터에 소프트웨어 종속 항목 설치
Cloud Service Mesh를 설치합니다.
Cloud Service Mesh 설치 가이드에 따라 Cloud Service Mesh를 설치합니다.
VMware용 GKE의 경우, VMware용 GKE의 외부 IP 주소 구성에 설명된 대로
loadBalancerIP
를 클러스터에 할당된 IP로 설정합니다.
Tekton 설치:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.47.1/release.yaml"
Kf 설치
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
연산자 설치:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/operator.yaml"
Kf에 대한 연산자 구성:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/kfsystem.yaml"
Docker 사용자 인증 정보용 Kubernetes 보안 비밀 만들기
위의 서비스 계정 설정에서 만든 Docker 사용자 인증 정보의 Kf 네임스페이스에 Kubernetes 보안 비밀을 만듭니다. 그런 다음 소스 업로드를 위해 Kubernetes 보안 비밀을 subresource-apiserver
배포에 패치합니다.
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}'}}}]"
Kf 연산자로
kf
네임스페이스가 생성되었는지 확인합니다. 완료되는 데 몇 분 정도 걸릴 수 있습니다.kubectl get namespace kf
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}"
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