Menentukan dan menggunakan jenis target kustom

Panduan memulai ini menunjukkan cara menggunakan Cloud Deploy untuk membuat jenis target kustom, lalu men-deploy ke target kustom dari jenis tersebut.

Dalam panduan memulai ini, Anda akan melakukan hal-hal berikut:

  1. Menentukan jenis target kustom, tempat Anda akan mengonfigurasi perilaku target. Konfigurasi ini mereferensikan image container serta perintah shell yang akan dijalankan pada image tersebut, yang merupakan tindakan untuk operasi render dan deployment.

  2. Menentukan target yang mereferensikan jenis target kustom.

  3. Menentukan pipeline pengiriman Cloud Deploy.

    Pipeline ini hanya mencakup satu tahap dan hanya menggunakan satu target. Pada tahap tersebut, Anda akan mereferensikan target yang dikonfigurasi.

  4. Membuat konfigurasi Skaffold, yang diperlukan oleh rilis.

  5. Membuat rilis, yang secara otomatis membuat peluncuran, sehingga operasi render dan deployment kustom akan dilakukan.

    Sebagai bagian dari rilis dan peluncuran ini, operasi render dan deployment yang ditentukan dalam konfigurasi jenis target kustom Anda akan dijalankan.

  6. Melihat hasil operasi kustom. Hal ini mencakup file konfigurasi yang dirender dan diupload ke Cloud Storage, serta string yang ditulis ke file tersebut, serta file hasil yang mencakup status operasi.

Sebelum memulai

  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. 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. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Instal Google Cloud CLI.

  6. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  7. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  8. 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

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

  10. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Instal Google Cloud CLI.

  12. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  13. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  14. Jika Anda sudah menginstal Google Cloud CLI, pastikan Anda menjalankan versi terbaru:

    gcloud components update
    
  15. Pastikan akun layanan Compute Engine default memiliki izin yang memadai.

    Akun layanan mungkin sudah memiliki izin yang diperlukan. Langkah-langkah ini disertakan untuk project yang menonaktifkan pemberian peran otomatis untuk akun layanan default.

    1. Pertama, tambahkan peran clouddeploy.jobRunner:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      
    2. Tambahkan peran developer untuk runtime tertentu.
    3. Tambahkan peran iam.serviceAccountUser, yang mencakup izin actAs untuk men-deploy ke runtime:
      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser" \
          --project=PROJECT_ID
      

Membuat pipeline pengiriman, jenis target kustom, dan target

Anda dapat menentukan pipeline pengiriman, jenis target kustom, dan target dalam satu file atau dalam file terpisah. Dalam panduan memulai ini, Anda akan membuat satu file dengan ketiganya.

  1. Buka jendela terminal.

  2. Buat direktori baru dan buka direktori tersebut.

    mkdir custom-target-quickstart
    cd custom-target-quickstart
    
  3. Di direktori custom-target-quickstart, buat file baru, clouddeploy.yaml, dengan konten berikut:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: custom-targets-pipeline
    serialPipeline:
      stages:
      - targetId: sample-env
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: sample-env
    customTarget:
      customTargetType: basic-custom-target
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: CustomTargetType
    metadata:
      name: basic-custom-target
    tasks:
      render:
        type: 'container'
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gcloud storage cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
      deploy:
        type: 'container'
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    Definisi jenis target kustom mencakup tasks stanza, yang menentukan tugas render dan tugas deployment. Setiap tugas ini mereferensikan image container yang akan dijalankan, dan perintah yang akan dijalankan pada container tersebut.

  4. Daftarkan pipeline dan target Anda dengan layanan Cloud Deploy:

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    Anda kini memiliki pipeline pengiriman, dengan satu target. Ini adalah target Anda yang menggunakan jenis target kustom, dan pipeline ini tidak men-deploy aplikasi ke runtime.

  5. Konfirmasi pipeline dan target Anda:

    Di Google Cloud konsol, buka halaman Delivery pipelines Cloud Deploy untuk melihat daftar pipeline pengiriman yang tersedia.

    Buka halaman Delivery pipelines

    Pipeline pengiriman yang baru saja Anda buat akan ditampilkan, dengan satu target yang tercantum di kolom Targets.

    halaman pipeline pengiriman di konsol Google Cloud , yang menampilkan pipeline Anda

Membuat file konfigurasi Skaffold

Rilis dalam panduan memulai ini memerlukan file konfigurasi Skaffold, tetapi file ini tidak memerlukan konfigurasi yang bermakna.

  1. Buat file bernama skaffold.yaml dengan konten berikut:

    apiVersion: skaffold/v4beta7
    kind: Config
    

Membuat rilis

Rilis adalah resource Cloud Deploy pusat yang mewakili perubahan yang di-deploy. Pipeline pengiriman menentukan siklus proses rilis tersebut. Lihat Arsitektur layanan Cloud Deploy untuk mengetahui detail tentang siklus proses tersebut.

Jalankan perintah berikut dari direktori custom-target-quickstart untuk membuat resource release yang mewakili tindakan kustom yang akan di-deploy:

gcloud deploy releases create test-release-001 \
  --project=PROJECT_ID \
  --region=us-central1 \
  --delivery-pipeline=custom-targets-pipeline

Seperti semua rilis (kecuali jika menyertakan --disable-initial-rollout), Cloud Deploy juga otomatis membuat resource peluncuran. Semua fase peluncuran tersebut akan dieksekusi, termasuk render dan deployment.

Melihat hasil di Google Cloud konsol

Setelah beberapa menit, deployment Anda akan selesai. Dalam hal ini, karena dua tindakan kustom adalah perintah untuk mengulang string ke dalam file dan mengupload file ke Cloud Storage, tidak ada yang di-deploy ke runtime target mana pun.

Namun, Anda dapat melihat file dan string dalam file tersebut:

  1. Di Google Cloud konsol, buka halaman Delivery pipelines Cloud Deploy untuk melihat pipeline pengiriman Anda (custom-targets-pipeline).

    Buka halaman Delivery pipelines

  2. Klik nama pipeline pengiriman Anda (custom-targets-pipeline).

    Visualisasi pipeline menampilkan status deployment aplikasi. Karena hanya ada satu tahap dalam pipeline, visualisasi hanya menampilkan satu node.

    Visualisasi pipeline pengiriman yang menunjukkan keberhasilan

    Rilis Anda tercantum di tab Releases di bagian Delivery pipeline details.

  3. Klik nama rilis.

    Halaman Release details akan ditampilkan.

  4. Klik tab Artifacts.

  5. Di bagian Target artifacts, klik link VIEW ARTIFACTS.

    File manifes yang dirender akan ditampilkan. Dalam hal ini, file tersebut adalah output dari tindakan render kustom yang Anda tentukan dalam konfigurasi jenis target kustom, yang berisi string "Sample manifest rendered content".

    Output tindakan render kustom

  6. Temukan bucket Cloud Storage yang dibuat oleh rilis ini.

    Buka halaman browser Cloud Storage

    Halaman Buckets akan ditampilkan, yang menunjukkan dua bucket yang dibuat untuk rilis ini. Satu bucket berisi file konfigurasi pipeline pengiriman dan skaffold.yaml yang dirender. Bucket lainnya mencakup file output yang dikonfigurasi untuk dibuat oleh tindakan kustom kita.

  7. Klik bucket yang namanya diawali dengan us-central1.deploy-artifacts...

    Daftar bucket Cloud Storage

  8. Klik folder yang namanya diawali dengan custom-targets-pipeline-, lalu klik folder test-release-001.

  9. Klik folder yang namanya adalah nama peluncuran Anda, yang seharusnya test-release-001-to-sample-env-0001.

  10. Klik folder yang ditampilkan, yang merupakan UUID, lalu klik folder custom-output.

  11. Klik results.json, lalu klik URL yang ditautkan di kolom Authenticated URL.

    File ini berisi string yang Anda konfigurasi sebagai output dari tindakan custom-deploy, dalam definisi jenis target kustom Anda:

    Output dari tindakan kustom deploy

Pembersihan

Agar akunAnda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut. Google Cloud

  1. Hapus pipeline pengiriman, target, rilis, dan peluncuran:

    gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
    
  2. Hapus kedua bucket Cloud Storage yang dibuat oleh Cloud Deploy.

    Buka halaman browser Cloud Storage

Selesai. Anda telah menyelesaikan panduan memulai ini.

Langkah berikutnya