Dokumen ini menjelaskan cara menginstal Kf dan dependensinya pada cluster lokal yang dibuat sebagai bagian dari Google Distributed Cloud, baik di VMware maupun di bare metal.
Jika Anda sudah memahami proses penginstalan Kf di cluster GKE di Google Cloud, perbedaan utama untuk prosedur di tempat adalah:
- Anda tidak perlu menginstal Config Connector untuk penginstalan di infrastruktur lokal.
- Prosedur on-premise menggunakan kredensial Docker, bukan Workload Identity.
Sebelum memulai
Persyaratan Google Distributed Cloud
Cluster pengguna yang memenuhi persyaratan Cloud Service Mesh.
Dikonfigurasi untuk logging dan pemantauan.
Terdaftar ke fleet:
Persyaratan Kf
Tekton untuk digunakan oleh Kf. Ini bukan layanan yang ditujukan untuk pengguna.
Akun Layanan Google khusus.
Siapkan cluster on-premise baru dan layanan terkait
Menyiapkan variabel lingkungan
Linux dan 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}.
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}.
Menyiapkan akun layanan
Buat akun layanan (GSA) dan kunci akun layanan yang digunakan agar build dapat membaca/menulis dari Container Registry. Google Cloud Langkah ini berbeda jika Anda menggunakan registry container yang berbeda karena registry tersebut mungkin memiliki cara yang berbeda untuk mendapatkan kredensial guna mengakses registry.
Buat akun layanan yang digunakan oleh Kf:
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Tetapkan peran
storage.admin
yang diperlukan untuk membaca/menulis dari Container Registry ke akun layanan:gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}." \ --role="roles/storage.admin"
Buat kunci akun layanan:
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}
Menginstal dependensi software di cluster
Instal Cloud Service Mesh.
Ikuti panduan penginstalan Cloud Service Mesh untuk menginstal Cloud Service Mesh.
Jika menggunakan Google Distributed Cloud, tetapkan
loadBalancerIP
ke IP yang dialokasikan ke cluster seperti yang dijelaskan dalam Mengonfigurasi alamat IP eksternal untuk Google Distributed Cloud.
Instal Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.1/release.yaml"
Menginstal Kf
Instal Kf CLI:
Linux
Perintah ini menginstal Kf CLI untuk semua pengguna di sistem. Ikuti petunjuk di tab Cloud Shell untuk menginstalnya hanya untuk Anda sendiri.
gcloud storage cp gs://kf-releases/v2.9.0/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Perintah ini menginstal
kf
untuk semua pengguna di sistem.gcloud storage cp gs://kf-releases/v2.9.0/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Perintah ini menginstal
kf
di instance Cloud Shell Anda jika Anda menggunakanbash
, petunjuknya mungkin perlu diubah untuk shell lain.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.9.0/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
Perintah ini akan mendownload
kf
ke direktori saat ini. Tambahkan ke jalur jika Anda ingin memanggilnya dari mana saja selain direktori saat ini.gcloud storage cp gs://kf-releases/v2.9.0/kf-windows.exe kf.exe
Instal operator:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/operator.yaml"
Konfigurasi operator untuk Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/kfsystem.yaml"
Buat secret Kubernetes untuk kredensial Docker
Buat secret Kubernetes di namespace Kf untuk kredensial Docker yang Anda buat di atas dalam Penyiapan akun layanan. Kemudian, patch
rahasia Kubernetes ke deployment subresource-apiserver
untuk upload sumber.
Aktifkan dan perbarui operator Kf untuk menggunakan Container Registry sebagai registry container.
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}'}}}]"
Verifikasi bahwa namespace
kf
telah dibuat oleh operator Kf. Proses ini mungkin memerlukan waktu beberapa menit.kubectl get namespace kf
Buat secret Kubernetes untuk digunakan dengan Docker Registry.
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}"
Perbarui operator Kf untuk menentukan secret yang berisi kredensial Docker.
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
Memvalidasi penginstalan
kf doctor --retries=20