Sebelum memulai
Ringkasan
Cluster GKE Anda harus memenuhi persyaratan berikut:
Opsional, tetapi direkomendasikan, cluster harus didedikasikan untuk Kf. Sebaiknya instal Kf dan dependensinya saja untuk memastikan matriks kompatibilitas dipertahankan.
Minimal empat node. Jika Anda perlu menambahkan node, lihat Mengubah ukuran cluster.
Jenis mesin minimum yang memiliki setidaknya empat vCPU, seperti
e2-standard-4. Jika jenis mesin untuk cluster Anda tidak memiliki setidaknya empat vCPU, ubah jenis mesin seperti yang dijelaskan dalam Memigrasikan workload ke jenis mesin yang berbeda.Opsional, tetapi direkomendasikan, daftarkan cluster ke saluran rilis. Ikuti petunjuk di Mendaftarkan cluster yang ada ke saluran rilis jika Anda memiliki versi GKE statis.
Workload Identity diaktifkan.
Artifact Registry diaktifkan.
Tekton diinstal. Lihat Matriks dependensi untuk mengetahui versinya.
Akun Layanan Google dengan kebijakan IAM berikut (petunjuk pembuatan ditautkan di bawah):
roles/iam.serviceAccountAdminserviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller](untuk anggotaserviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller])
Bagian Pembersihan memiliki petunjuk tentang cara menghapus cluster.
Mengaktifkan dukungan untuk Compute Engine
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Aktifkan Compute Engine API.
Mengaktifkan dan mengonfigurasi GKE
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Mengaktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
Membuat dan menyiapkan cluster GKE baru
Menyiapkan variabel lingkungan
Linux
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}
export NODE_COUNT=4
export MACHINE_TYPE=e2-standard-4
export NETWORK=default
export KF_VERSION=v2.1.0
export TEKTON_VERSION=v0.19.0
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 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 KF_VERSION -Value v2.1.0 Set-Variable -Name TEKTON_VERSION -Value v0.19.0
Penyiapan akun layanan
Buat akun layanan GCP (GSA) yang akan dikaitkan dengan Akun Layanan Kubernetes melalui Workload Identity. Hal ini mencegah kebutuhan untuk membuat dan menyisipkan kunci akun layanan.
Buat akun layanan yang akan digunakan Kf.
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"Izinkan akun layanan untuk mengubah kebijakannya sendiri. Pengontrol Kf akan menggunakan ini untuk menambahkan namespace (nama) baru ke kebijakan, sehingga memungkinkan penggunaan kembali untuk Workload Identity.
gcloud iam service-accounts add-iam-policy-binding ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com \ --project=${CLUSTER_PROJECT_ID} \ --role="roles/iam.serviceAccountAdmin" \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"Berikan peran metrik pemantauan untuk akses tulis ke Cloud Monitoring.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Berikan peran logging untuk akses tulis ke Cloud Logging.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
Membuat cluster GKE
gcloud container clusters create ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION} \
--num-nodes=${NODE_COUNT} \
--machine-type=${MACHINE_TYPE} \
--network=${NETWORK} \
--addons=HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--enable-network-policy \
--enable-autorepair \
--enable-autoupgrade \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--release-channel=regular \
--workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \
--service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"Menetapkan aturan firewall
Kf memerlukan beberapa port firewall untuk dibuka. Node master harus dapat berkomunikasi dengan pod di port 80, 443, 8080, 8443, dan 6443.
Mengaktifkan Workload Identity
Setelah memiliki akun layanan dan cluster GKE, kaitkan namespace identitas cluster dengan cluster.
gcloud iam service-accounts add-iam-policy-binding \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
--project=${CLUSTER_PROJECT_ID} \
--role="roles/iam.workloadIdentityUser" \
--member="serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]"Menargetkan cluster GKE
Konfigurasikan akses command line kubectl dengan menjalankan perintah berikut.
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION}Membuat repositori Artifact Registry
Buat Artifact Registry untuk menyimpan image container.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --repository-format=docker \ --location=${COMPUTE_REGION}Berikan izin akun layanan di repositori Artifact Registry.
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Konfigurasikan autentikasi lokal Anda.
gcloud auth configure-docker ${COMPUTE_REGION}-docker.pkg.dev
Menginstal dependensi software di cluster
Instal Tekton:
kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"
Menginstal Kf
Lihat Membuat dan menyiapkan cluster GKE untuk Kf guna membuat cluster yang siap menjalankan Kf.
Pilih dan catat rilis Kf yang diinginkan. Lihat halaman Download Kf untuk mengetahui versi yang tersedia
Instal CLI:
Linux
Tindakan ini akan menginstal
kfuntuk semua pengguna di sistem. Ikuti petunjuk di tab Cloud Shell untuk menginstalnya hanya untuk Anda sendiri.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
Tindakan ini akan menginstal
kfuntuk semua pengguna di sistem.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
Tindakan ini akan menginstal
kfdi instance Cloud Shell Anda jika Anda menggunakanbash, petunjuknya mungkin perlu diubah untuk shell lainnya.mkdir -p ~/bingcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
Tindakan ini akan mendownload
kfke direktori saat ini. Tambahkan ke jalur jika Anda ingin memanggilnya dari mana saja selain direktori saat ini.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exeInstal komponen server:
Linux dan Mac
Tindakan ini akan mendownload kf.yaml ke direktori saat ini.
gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yamlkubectl apply -f /tmp/kf.yamlWindows
Tindakan ini akan mendownload kf.yaml ke direktori saat ini.
gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yamlkubectl apply -f kf.yamlMenyiapkan secret:
export WI_ANNOTATION=iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com kubectl annotate serviceaccount controller ${WI_ANNOTATION} \ --namespace kf \ --overwrite echo "{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"config-secrets\", \"namespace\":\"kf\"},\"data\":{\"wi.googleServiceAccount\":\"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com\"}}" | kubectl apply -f -Menyiapkan default Kf, nilai ini dapat diubah nanti. Contoh di bawah menggunakan template domain dengan penyedia DNS karakter pengganti untuk memberikan nama domainnya sendiri ke setiap Ruang:
export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} export DOMAIN='$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io' kubectl patch configmaps config-defaults \ -n=kf \ -p="{\"data\":{\"spaceContainerRegistry\":\"${CONTAINER_REGISTRY}\",\"spaceClusterDomains\":\"- domain: ${DOMAIN}\"}}"Memvalidasi penginstalan:
kf doctor --retries 10
Mengirim aplikasi
Prasyarat
Berikut ini diperlukan untuk menyelesaikan bagian ini:
- Kf diinstal di cluster GKE yang kompatibel. Lihat Menginstal Kf untuk mengetahui petunjuknya.
.kubeconfigyang menargetkan cluster Kf. Jika Anda membuat cluster sesuai petunjuk dalam dokumen ini, hal ini akan dilakukan. Anda dapat membuat konfigurasi secara eksplisit dengangcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}kfCLI diinstal dan berada di jalur Anda. Lihat Menginstal Kf untuk mengetahui petunjuknya.gitCLI diinstal dan berada di jalur Anda.
Menyiapkan ruang
Membuat ruang baru:
kf create-space test-space
Menargetkan ruang:
kf target -s test-space
Mengirim aplikasi pengujian Cloud Foundry
Meng-clone repo test-app:
git clone https://github.com/cloudfoundry-samples/test-app go-test-app cd go-test-app
Mengirim aplikasi:
kf push test-app
Menemukan URL aplikasi:
Menggunakan pemformatan output untuk mengambil rute saja:
kf app test-app --output 'jsonpath={.status.urls[0]}'Atau ini untuk pendekatan CF yang lebih tradisional:
kf apps
Buka URL di browser Anda.
Pembersihan
Langkah-langkah ini akan menghapus semua komponen yang dibuat di bagian Membuat dan menyiapkan cluster GKE baru.
Menghapus cluster GKE:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}Menghapus Akun Layanan Google:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comMenghapus binding kebijakan IAM:
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountAdmin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Menghapus repositori image container:
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}