Panduan Memulai Kf

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

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 matriks kompatibilitas tetap 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 di saluran rilis. Ikuti petunjuk di Mendaftarkan cluster yang ada di saluran rilis jika Anda memiliki versi GKE statis.

    • Workload Identity diaktifkan.

    • Artifact Registry diaktifkan.

    • Cloud Service Mesh (ASM).

    • Tekton telah diinstal. Lihat Matriks dependensi untuk versi tersebut.

    • 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Aktifkan Compute Engine API.

    Mengaktifkan API

  7. Mengaktifkan dan mengonfigurasi GKE

    Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

    • Aktifkan Google Kubernetes Engine API.
    • Aktifkan 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 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.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 menyuntikkan 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. Izinkan akun layanan untuk mengubah kebijakannya sendiri. Pengontrol Kf akan menggunakan ini untuk menambahkan ruang nama (name) baru ke kebijakan, sehingga memungkinkan penggunaan ulang untuk Workload Identity.

      gcloud iam service-accounts add-iam-policy-binding ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}. \
        --project=${CLUSTER_PROJECT_ID} \
        --role="roles/iam.serviceAccountAdmin" \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}."
    3. 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}." \
        --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}." \
        --role="roles/logging.logWriter"

    Buat 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}."

    Menetapkan aturan firewall

    Kf memerlukan beberapa port firewall agar terbuka. Node master harus dapat berkomunikasi dengan pod di port 80, 443, 8080, 8443, dan 6443.

    Aktifkan 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}." \
      --project=${CLUSTER_PROJECT_ID} \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]"

    Cluster GKE target

    Konfigurasi 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 menyimpan image container.

      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}." \
        --role='roles/artifactregistry.writer'
    3. Konfigurasi autentikasi lokal Anda.

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

    Menginstal dependensi software di cluster

    1. Instal Service Mesh.

    2. Instal Tekton:

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

    Menginstal Kf

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

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

    3. Instal CLI:

      Linux

      Tindakan ini akan menginstal kf untuk 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/kf
      chmod a+x /tmp/kf
      sudo mv /tmp/kf /usr/local/bin/kf

      Mac

      Tindakan ini akan menginstal kf untuk semua pengguna di sistem.

      gcloud storage 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 Anda jika Anda menggunakan bash, petunjuknya mungkin perlu diubah untuk shell lainnya.

      mkdir -p ~/bin
      gcloud storage 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.

      gcloud storage 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.

      gcloud storage 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.

      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yaml
      kubectl apply -f kf.yaml
    5. Menyiapkan secret:

      export WI_ANNOTATION=iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.
      
      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}.\"}}" | kubectl apply -f -
    6. Siapkan default Kf, nilai ini dapat diubah nanti. Contoh di bawah menggunakan template domain dengan penyedia DNS karakter pengganti untuk memberikan nama domainnya sendiri kepada 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}\"}}"
    7. Validasi penginstalan:

      kf doctor --retries 10

    Mengirimkan aplikasi

    Prasyarat

    Berikut adalah hal-hal yang 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, langkah ini sudah dilakukan. Anda dapat membuat konfigurasi secara eksplisit dengan gcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
    3. kf CLI terinstal dan ada di jalur Anda. Lihat Menginstal Kf untuk mengetahui petunjuknya.
    4. git CLI terinstal dan ada di jalur Anda.

    Siapkan ruang

    1. Buat ruang baru:

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

      kf target -s test-space

    Mendorong aplikasi pengujian Cloud Foundry

    1. Clone repositori test-app:

      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 pemformatan output untuk mengambil hanya rute:

        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 Buat dan siapkan cluster GKE baru.

    1. Hapus 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}.
    3. Hapus binding kebijakan IAM:

      gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}." \
        --role="roles/storage.admin"
      
      gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}." \
        --role="roles/iam.serviceAccountAdmin"
      
      gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}." \
        --role="roles/monitoring.metricWriter"
    4. Hapus repositori image container:

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