Menginstal Kf di Google Cloud (Pratinjau)

Dokumen ini menjelaskan cara menyiapkan cluster GKE, lalu menginstal Kf dan dependensinya menggunakan fitur baru dalam pratinjau.

  • Kf akan menggunakan stack gabungan v2 baru untuk memberikan manfaat buildpack cloud native bagi aplikasi lama.
  • Menghapus Config Connector sebagai dependensi.
  • Menghapus peran IAM kustom serviceAccountUpdater.

Sebelum memulai

Persyaratan cluster GKE

Persyaratan Kf

Tinjau dan pahami izin akses komponen di Kf di halaman Dependensi dan arsitektur Kf.

Matriks Dependensi mencantumkan versi tertentu.

Mengaktifkan dukungan untuk Compute Engine

  1. Sign in to your Google Cloud account. 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. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    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.

    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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  6. Aktifkan Compute Engine API.

    Mengaktifkan API

Mengaktifkan dukungan untuk Artifact Registry

  1. Aktifkan Artifact Registry API.

    Mengaktifkan Artifact Registry API

Mengaktifkan dan mengonfigurasi GKE

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan the 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.

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

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

Menyiapkan akun layanan

Buat akun layanan yang akan dikaitkan dengan Akun Layanan Kubernetes melalui Workload Identity. Google Cloud Hal ini mencegah kebutuhan untuk membuat dan menyisipkan 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. Berikan peran metrik pemantauan ke akun layanan 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"
  3. Berikan peran logging ke akun layanan 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} \
  --disk-size "122" \
  --network=${NETWORK} \
  --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver \
  --enable-dataplane-v2 \
  --enable-stackdriver-kubernetes \
  --enable-ip-alias \
  --enable-autorepair \
  --enable-autoupgrade \
  --scopes 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 \
  --project=${CLUSTER_PROJECT_ID} \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \
  "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"

gcloud iam service-accounts add-iam-policy-binding \
  --project=${CLUSTER_PROJECT_ID} \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
  "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"

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

    gcloud artifacts repositories create ${CLUSTER_NAME} \
      --project=${CLUSTER_PROJECT_ID} \
      --repository-format=docker \
      --location=${COMPUTE_REGION}
  2. Berikan izin akun layanan di repositori Artifact Registry.

    gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \
      --project=${CLUSTER_PROJECT_ID} \
      --location=${COMPUTE_REGION} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role='roles/artifactregistry.writer'

Menginstal dependensi software di cluster

  1. Instal Cloud Service Mesh.

    1. Ikuti panduan penginstalan Cloud Service Mesh.

    2. Setelah menginstal Cloud Service Mesh, Anda harus membuat gateway ingress menggunakan panduan penginstalan gateway.

  2. Instal Tekton:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.29.0/release.yaml"

Menginstal Kf

  1. 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.7.3/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.7.3/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 menggunakan bash, petunjuknya mungkin perlu diubah untuk shell lain.

    mkdir -p ~/bin
    gcloud storage cp gs://kf-releases/v2.7.3/kf-linux ~/bin/kf
    chmod a+x ~/bin/kf
    echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
    source ~/.bashrc

    Windows

    Perintah ini 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.7.3/kf-windows.exe kf.exe
  2. Instal operator:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/operator.yaml"
  3. Instal Kf AppDevExperience Build (ADX Build).

    export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
    cat << EOF | kubectl apply --filename -
    apiVersion: builds.appdevexperience.dev/v1alpha1
    kind: BuildSystem
    metadata:
        name: buildsystem
    spec:
      secrets:
        workloadidentity:
          googleprojectid: ${CLUSTER_PROJECT_ID}
          googleserviceaccount: ${CLUSTER_NAME}-sa
      containerRegistry: ${CONTAINER_REGISTRY}
      enabled: true
    EOF
  4. Konfigurasikan ADX Build untuk Workload Identity.

    gcloud iam service-accounts add-iam-policy-binding \
      --project=${CLUSTER_PROJECT_ID} \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[adx-builds-system/controller]" \
      "${GSA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
  5. Konfigurasikan operator untuk Kf:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/kfsystem.yaml"
  6. Siapkan secret dan default:

    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}'}}}}}]"
    

Memvalidasi penginstalan

kf doctor --retries=20

Pembersihan

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

  1. Hapus Akun Layanan Google:

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

    gcloud artifacts repositories delete ${CLUSTER_NAME} \
      --location=${COMPUTE_REGION}
  4. Uninstal Kf:

    kubectl patch kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': false, }}]"
  5. Hapus cluster GKE:

    gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}