Menentukan dan menggunakan jenis target khusus

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

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

  1. Buat konfigurasi Skaffold.

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

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

  3. Tentukan pipeline pengiriman Cloud Deploy Anda.

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

  4. Buat rilis, yang otomatis membuat peluncuran, sehingga menghasilkan operasi render dan deploy kustom.

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

  5. Lihat hasil operasi kustom. Hal ini mencakup file konfigurasi hasil render yang diupload ke Cloud Storage, dan string yang ditulis ke file tersebut, serta file hasil yang menyertakan 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. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Mengaktifkan API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Aktifkan API Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Mengaktifkan API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

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

    gcloud components update
    
  13. 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-tama, 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 spesifik Anda.
    3. Tambahkan peran iam.serviceAccountUser, yang menyertakan 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 dan manifes aplikasi Skaffold

Cloud Deploy menggunakan Skaffold untuk memberikan detail tentang apa yang harus 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 render dan deploy untuk jenis target kustom.

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

  1. Buka jendela terminal.

  2. Buat direktori baru dan navigasikan ke dalamnya.

    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:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gsutil cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gsutil 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:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    File ini mencakup stanza customActions:, yang menentukan tindakan render kustom dan tindakan deploy kustom. Masing-masing tindakan kustom ini merujuk ke image container yang akan dijalankan, dan perintah untuk dijalankan pada penampung tersebut.

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

Membuat pipeline pengiriman, jenis target khusus, dan target Anda

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 yang berisi ketiganya.

  1. Pada direktori panduan memulai kustom, 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 ke layanan Cloud Deploy:

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

    Anda sekarang memiliki pipeline pengiriman, dengan satu target. Ini adalah target Anda yang 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 Delivery pipelines Cloud Deploy untuk melihat daftar pipeline pengiriman yang tersedia.

    Buka halaman Pipeline pengiriman

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

    halaman pipeline pengiriman di Konsol Google Cloud, yang menunjukkan pipeline Anda

Membuat rilis

Rilis adalah resource Cloud Deploy pusat yang mewakili perubahan yang sedang 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 secara otomatis membuat resource peluncuran. Dan semua fase dari peluncuran tersebut akan dijalankan, termasuk render dan deploy.

Lihat hasil di Konsol Google Cloud

Setelah beberapa menit, deployment Anda selesai. Dalam hal ini, karena kedua tindakan khusus tersebut adalah perintah untuk menjalankan echo string ke dalam file dan mengupload file tersebut ke Cloud Storage, tidak ada yang akan di-deploy ke runtime target apa 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 Anda (custom-targets-pipeline).

    Buka halaman Pipeline pengiriman

  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

    Dan rilis Anda akan dicantumkan di tab Rilis di bagian Detail pipeline pengiriman.

  3. Klik nama rilis.

    Halaman Detail rilis akan ditampilkan.

  4. Klik tab Artefak.

  5. Di bagian Artefak target, klik link LIHAT ARTIFACTS.

    File manifes yang dirender akan ditampilkan. Dalam hal ini, file tersebut adalah output dari tindakan render kustom yang Anda tentukan dalam file konfigurasi skaffold.yaml, yang berisi string "Sample manifes manifest 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. Yang lainnya berisi file {i>output<i} yang dikonfigurasi untuk dibuat oleh tindakan khusus.

  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 berupa 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 hyperlink di kolom Authenticationd 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 dikenakan 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 selanjutnya