Panduan Memulai Kf

Dalam panduan memulai ini, Anda akan menggunakan cara menyiapkan cluster GKE, menginstal Kf dan dependensinya, lalu men-deploy sampel aplikasi Cloud Foundry.

Sebelum memulai

Ringkasan

  • Cluster GKE Anda harus memenuhi persyaratan berikut:

    • Opsional, tetapi direkomendasikan, cluster harus dikhususkan untuk Kf. Sebaiknya Anda hanya menginstal Kf dan dependensinya untuk memastikan bahwa matriks kompatibilitas dipertahankan.

    • Minimal empat node. Jika 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 beban kerja ke jenis mesin yang berbeda.

    • Daftarkan cluster di saluran rilis sebagai opsional, tetapi direkomendasikan. Ikuti petunjuk dalam Mendaftarkan cluster yang ada di saluran rilis jika Anda memiliki versi GKE statis.

    • Workload Identity diaktifkan.

    • Artifact Registry diaktifkan.

    • Anthos Service Mesh (ASM).

    • Tekton terinstal. Lihat Matriks dependensi untuk versi.

    • Akun Layanan Google dengan kebijakan IAM berikut (petunjuk pembuatan ditautkan di bawah):

      • roles/iam.serviceAccountAdmin
      • serviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller] (untuk anggota serviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller])

Bagian Pembersihan berisi petunjuk tentang cara menghapus cluster.

Mengaktifkan dukungan untuk Compute Engine

  1. Login ke akun Google Cloud Anda. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Aktifkan Compute Engine API.

    Mengaktifkan API

Mengaktifkan dan mengonfigurasi GKE

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

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.2.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.2.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. Tindakan ini akan mencegah perlunya membuat dan memasukkan kunci akun layanan.

  1. 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}"
  2. Mengizinkan akun layanan mengubah kebijakannya sendiri. Pengontrol Kf akan menggunakannya untuk menambahkan ruang (name) 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"
  3. Memberikan 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"
  4. 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 {i>firewall<i} agar terbuka. Node master harus dapat berkomunikasi dengan pod pada porta 80, 443, 8080, 8443 dan 6443.

Aktifkan Workload Identity

Setelah Anda 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]"

Cluster GKE Target

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

  1. Buat Artifact Registry untuk image container yang akan disimpan.

    gcloud artifacts repositories create ${CLUSTER_NAME} \
      --repository-format=docker \
      --location=${COMPUTE_REGION}
  2. 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'
  3. Konfigurasikan autentikasi lokal Anda.

    gcloud auth configure-docker ${COMPUTE_REGION}-docker.pkg.dev

Menginstal dependensi software pada cluster

  1. Instal Service Mesh.

  2. Instal Tekton:

    kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"

Instal Kf

  1. Lihat Membuat dan menyiapkan cluster GKE untuk Kf guna membuat cluster yang telah disiapkan untuk menjalankan Kf.

  2. Pilih dan catat rilis Kf yang diinginkan. Lihat halaman Download Kf untuk versi yang tersedia

  3. Instal CLI:

    Linux

    Tindakan ini akan menginstal kf untuk semua pengguna pada sistem. Ikuti petunjuk di tab Cloud Shell untuk menginstalnya sendiri.

    gsutil cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Mac

    Tindakan ini akan menginstal kf untuk semua pengguna pada sistem.

    gsutil cp gs://kf-releases/${KF_VERSION}/kf-darwin /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Cloud Shell

    Tindakan ini akan menginstal kf di instance Cloud Shell jika Anda menggunakan bash, petunjuk mungkin perlu diubah untuk shell lainnya.

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

    Windows

    Tindakan ini akan mendownload kf ke direktori saat ini. Tambahkan ke jalur jika Anda ingin memanggilnya dari mana saja selain direktori saat ini.

    gsutil cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exe
  4. Instal komponen server:

    Linux dan Mac

    Tindakan ini akan mendownload kf.yaml ke direktori saat ini.

    gsutil cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yaml
    kubectl apply -f /tmp/kf.yaml

    Windows

    Tindakan ini akan mendownload kf.yaml ke direktori saat ini.

    gsutil cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yaml
    kubectl apply -f kf.yaml
  5. Rahasia penyiapan:

    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 -
  6. Siapkan default Kf, nilai ini dapat diubah nanti. Contoh di bawah ini menggunakan template domain dengan penyedia DNS karakter pengganti untuk memberikan nama domainnya sendiri ke setiap Space:

    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}\"}}"
  7. Validasi penginstalan:

    kf doctor --retries 10

Mengirim aplikasi

Prasyarat

Hal berikut diperlukan untuk menyelesaikan bagian ini:

  1. Kf diinstal di cluster GKE yang kompatibel. Lihat Menginstal Kf untuk mengetahui petunjuknya.
  2. .kubeconfig yang menargetkan cluster Kf. Jika Anda membuat cluster sesuai petunjuk dalam dokumen ini, cluster sudah selesai. Anda dapat secara jelas membuat konfigurasi dengan gcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
  3. CLI kf yang telah diinstal dan di jalur Anda. Lihat Menginstal Kf untuk mengetahui petunjuknya.
  4. CLI git yang telah diinstal dan di jalur Anda.

Siapkan ruang

  1. Membuat ruang baru:

    kf create-space test-space
  2. Menargetkan ruang:

    kf target -s test-space

Dorong aplikasi pengujian Cloud Foundry

  1. Buat clone untuk repo aplikasi pengujian:

    git clone https://github.com/cloudfoundry-samples/test-app go-test-app
    cd go-test-app
  2. Kirim aplikasi:

    kf push test-app
  3. Temukan URL aplikasi:

    1. Gunakan format output untuk mengambil rute saja:

      kf app test-app --output 'jsonpath={.status.urls[0]}'

    2. Atau, ini untuk pendekatan CF yang lebih tradisional:

      kf apps

  4. Buka URL di browser Anda.

Pembersihan

Langkah-langkah ini akan menghapus semua komponen yang dibuat di bagian Membuat dan menyiapkan cluster GKE baru.

  1. Menghapus cluster GKE:

    gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
  2. Hapus Akun Layanan Google:

    gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
  3. Menghapus 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"
  4. Menghapus repositori image container:

    gcloud artifacts repositories delete ${CLUSTER_NAME} \
      --location=${COMPUTE_REGION}