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 berikut:

  1. Buat konfigurasi Skaffold.

    File konfigurasi Skaffold adalah tempat Anda mengonfigurasi perilaku target. Konfigurasi ini mereferensikan image container dan perintah shell untuk dijalankan pada image tersebut, yang merupakan tindakan untuk operasi render dan deployment.

  2. Tentukan jenis target kustom, dan target yang mereferensikan jenis tersebut.

  3. Tentukan pipeline pengiriman Cloud Deploy Anda.

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

  4. Buat rilis, yang secara otomatis membuat peluncuran, sehingga operasi rendering dan deployment kustom dilakukan.

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

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

Sebelum memulai

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

    Enable the APIs

  5. Install the 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.

    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.

    Enable the APIs

  11. Install the 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
      

    Menyiapkan konfigurasi Skaffold

    Cloud Deploy menggunakan Skaffold untuk memberikan detail tentang apa yang akan di-deploy dan cara men-deploy-nya ke target Anda.

    Dalam panduan memulai ini, Anda akan membuat file skaffold.yaml, yang menentukan tindakan kustom yang merepresentasikan operasi rendering dan deployment untuk jenis target kustom.

    Perhatikan bahwa tindakan kustom yang disediakan dalam panduan memulai ini sebenarnya tidak men-deploy aplikasi apa pun ke runtime. Tindakan render dan deployment mengupload file hasil ke Cloud Storage untuk memenuhi kontrak target kustom antara Cloud Deploy dan render serta deployment yang ditentukan pengguna.

    1. Buka jendela terminal.

    2. Buat direktori baru dan buka direktori tersebut.

      mkdir custom-target-quickstart
      cd custom-target-quickstart
      
    3. Buat file bernama skaffold.yaml dengan konten berikut:

      apiVersion: skaffold/v4beta7
      kind: Config
      customActions:
      - name: custom-render
        containers:
        - name: render
          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
      - name: custom-deploy
        containers:
        - name: deploy
          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
      

      File ini mencakup stanza customActions:, yang menentukan tindakan render kustom dan tindakan deployment kustom. Setiap tindakan kustom ini merujuk ke image container yang akan dijalankan, dan perintah yang akan dijalankan di container tersebut.

      Lihat referensi skaffold.yaml untuk mengetahui informasi selengkapnya tentang file konfigurasi ini.

    Buat 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 ketiga jenis tersebut.

    1. 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
      customActions:
        renderAction: custom-render
        deployAction: custom-deploy
      
    2. Daftarkan pipeline dan target Anda dengan layanan Cloud Deploy:

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

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

    3. Konfirmasi pipeline dan target Anda:

      Di konsol Google Cloud , buka halaman Cloud Deploy Delivery pipelines 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 Target.

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

    Membuat rilis

    Rilis adalah resource Cloud Deploy pusat yang merepresentasikan 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 merepresentasikan 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 rollout. Semua fase peluncuran tersebut dijalankan, termasuk rendering dan deployment.

    Melihat hasil di Google Cloud console

    Setelah beberapa menit, deployment Anda akan selesai. Dalam kasus 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 konsol Google Cloud , buka halaman Delivery pipelines Cloud Deploy untuk melihat pipeline pengiriman (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 juga tercantum di tab Rilis di bagian Detail pipeline pengiriman.

    3. Klik nama rilis.

      Halaman Detail rilis akan ditampilkan.

    4. Klik tab Artefak.

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

      File manifes yang dirender akan ditampilkan. Dalam hal ini, file adalah output dari tindakan render kustom yang Anda tentukan dalam file konfigurasi skaffold.yaml, 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 Bucket ditampilkan, yang menunjukkan dua bucket yang dibuat untuk rilis ini. Satu bucket berisi file konfigurasi pipeline pengiriman dan skaffold.yaml yang dirender. Yang lainnya mencakup file output yang dikonfigurasi untuk dibuat oleh tindakan kustom kita.

    7. Klik bucket yang namanya dimulai 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 adalah 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 memiliki hyperlink di kolom Authenticated URL.

      File ini berisi string yang Anda konfigurasi sebagai output dari tindakan custom-deploy, di skaffold.yaml Anda:

      Output dari tindakan kustom deploy

    Pembersihan

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

    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 Cloud Deploy.

      Buka halaman browser Cloud Storage

    Selesai, Anda telah menyelesaikan panduan memulai ini.

    Langkah berikutnya