Arsitektur layanan Cloud Deploy

Dokumen ini menjelaskan hubungan antara Cloud Deploy dan sistem eksternal yang berinteraksi dengannya untuk men-deploy aplikasi Anda. Sistem ini adalah layanan dan alat pihak ketiga lainnya. Google Cloud

Tampilan tingkat tinggi

Diagram berikut menunjukkan hubungan antara Cloud Deploy dan sistem terpisah yang diandalkannya.

Hubungan antar-komponen Cloud Deploy

Seperti yang ditunjukkan dalam diagram ini, Cloud Deploy berinteraksi dengan sistem berikut:

  • Sistem CI Anda

    Cloud Deploy mendukung sebagian besar alat CI, selama satu output dari proses CI Anda dapat berupa panggilan ke API atau CLI Cloud Deploy untuk membuat rilis.

  • Cloud Build

    Cloud Deploy memanggil Cloud Build untuk merender manifes dan men-deploy ke runtime target.

  • Skaffold

    Cloud Deploy menggunakan Skaffold melalui Cloud Build untuk merender dan men-deploy manifes Anda, sehingga men-deploy aplikasi Anda.

  • Cloud Storage

    Cloud Deploy menyimpan sumber rendering dan manifes yang dirender di bucket Cloud Storage.

  • Google Cloud Observability dan Cloud Audit Logs.

    Google Cloud Observability mengumpulkan dan menyediakan data logging untuk Cloud Deploy.

    Lihat juga Logging audit.

  • Pub/Sub

    Cloud Deploy memublikasikan pesan ke beberapa topik Pub/Sub. Anda dapat menggunakan layanan ini untuk berintegrasi dengan alur kerja eksternal, pengujian, dan sistem terkait lainnya.

    Lihat Berlangganan notifikasi Cloud Deploy untuk mengetahui informasi selengkapnya.

  • Waktu proses target

    Cloud Deploy menggunakan skaffold apply, melalui Cloud Build, untuk men-deploy aplikasi ke target runtime (GKE atau GKE Enterprise).

Resource Cloud Deploy

Diagram berikut menunjukkan resource yang digunakan Cloud Deploy untuk men-deploy aplikasi Anda, dan hubungan antar-resource tersebut:

Hubungan antar-resource Cloud Deploy

Seperti yang ditunjukkan dalam diagram ini, hubungan antar-resource adalah sebagai berikut:

  • Pipeline pengiriman dapat menghasilkan nol atau lebih rilis dan dapat mereferensikan satu atau beberapa target, termasuk multi-target dan target turunan terkait.

  • Pipeline pengiriman juga dapat mereferensikan satu atau beberapa otomatisasi, yang mengotomatiskan tindakan pada resource Cloud Deploy.

  • Setiap rilis mencakup instance pipeline—"snapshot" pipeline pengiriman dan target seperti yang dikonfigurasi saat rilis dibuat.

  • Setiap rilis dapat menghasilkan nol atau lebih peluncuran, dan dapat mereferensikan nol atau lebih artefak.

    Setiap peluncuran mencakup setidaknya satu fase, yang merepresentasikan kumpulan operasi (tugas) dalam peluncuran yang dikelompokkan secara logis, misalnya, penyebaran atau penyebaran dan verifikasi.

    Setiap fase mencakup satu atau beberapa tugas, yang merepresentasikan apa yang harus dilakukan pada peluncuran—baik men-deploy maupun memverifikasi. Setiap tugas dapat mencakup satu atau beberapa eksekusi tugas, yang merupakan instance tugas, misalnya, upaya untuk men-deploy. Jalankan tugas adalah resource turunan peluncuran.

    Multi-target, yang digunakan untuk deployment paralel, membuat peluncuran pengontrol, yang membuat peluncuran turunan, yang sesuai dengan target turunan.

  • Setiap peluncuran dikaitkan dengan satu target.

    Untuk deployment paralel , setiap target turunan dikaitkan dengan satu peluncuran turunan.

  • Setiap target dikaitkan dengan satu cluster GKE atau Anthos, atau tujuan runtime lain untuk aplikasi.

  • Target dapat dikaitkan dengan satu atau beberapa pipeline pengiriman.

  • Artefak adalah output apa pun dari proses CI Anda (misalnya, image container) yang di-deploy ke runtime target sebagai bagian dari peluncuran.

Selain itu, peluncuran memiliki satu atau beberapa fase, dan fase memiliki satu atau beberapa tugas dan satu atau beberapa eksekusi tugas.

Resource peluncuran

Seperti yang ditunjukkan dalam diagram ini, peluncuran mencakup hal berikut:

  • Fase

    Fase berisi satu atau beberapa tugas (misalnya, deploy, atau deploy dan verifikasi). Setiap peluncuran memiliki satu atau beberapa fase. Fase adalah sub-pesan dalam peluncuran.

  • Pekerjaan

    Operasi spesifik yang akan dilakukan pada peluncuran, misalnya, deploy atau verifikasi. Tugas adalah sub-pesan dalam peluncuran.

  • JobRuns

    Instance tugas, misalnya upaya verifikasi. Setiap tugas dapat memiliki nol atau lebih JobRun. JobRun adalah resource turunan dari peluncuran.

Otomatisasi berisi aturan otomatisasi, yang dapat dirujuk oleh nol atau lebih resource AutomationRun. AutomationRun adalah instance aturan otomatisasi yang dijalankan, misalnya promosi otomatis dari satu target ke target lainnya. Resource Automation dan AutomationRun adalah resource turunan setara di bawah pipeline pengiriman.

Referensi otomatisasi

Cara mereka bekerja sama untuk merilis aplikasi Anda

Bagian ini menjelaskan cara Cloud Deploy berinteraksi dengan komponen yang tercantum dalam dokumen ini untuk mengotomatiskan pengiriman aplikasi Anda sebagai rilisan.

  1. Sistem CI Anda memanggil pipeline pengiriman Cloud Deploy.

    Proses CI Anda memanggil Cloud Deploy menggunakan CLI atau API untuk membuat rilis baru, meneruskan artefak build atau referensi ke image.

    Untuk mengetahui informasi selengkapnya tentang mengintegrasikan sistem CI, lihat Mengintegrasikan Cloud Deploy dengan sistem lain.

  2. Saat rilis baru dibuat, Cloud Deploy akan melakukan hal berikut:

    1. Menyimpan instance pipeline pengiriman sebagai bagian dari rilis.

      Instance pipeline ini tetap tidak berubah untuk rilis ini, meskipun konfigurasi pipeline pengiriman diubah. Lihat Instance pipeline per rilis untuk mengetahui informasi selengkapnya.

      Selain itu, versi Skaffold disimpan sebagai bagian dari rilis. Dalam sebagian besar kasus, ini akan menjadi versi Skaffold default, tetapi karena Anda dapat menentukan versi lain, informasi tersebut disimpan.

    2. Memanggil Cloud Build, yang mendapatkan sumber rendering Skaffold dari Cloud Storage.

      Cloud Deploy menyimpan sumber rendering di bucket Cloud Storage default atau alternatif.

    3. Memanggil skaffold diagnose (menggunakan versi Skaffold yang disimpan saat pembuatan rilis) untuk membuat satu manifes yang efektif.

    4. Memanggil operasi render.

      Jika Anda menggunakan target bawaan, Cloud Deploy memanggil skaffold render untuk merender manifes menggunakan image atau artefak build yang diberikan. Cloud Deploy mengganti nama image di spec.templates.spec.containers.image dengan jalur image lengkap (termasuk ringkasan atau tag) yang diberikan pada perintah gcloud deploy releases create atau dalam file artefak build yang dirujuk oleh perintah tersebut.

      Jika Anda menggunakan target kustom, Cloud Deploy memanggil operasi render yang ditentukan untuk jenis target kustomnya.

      Cloud Deploy menyimpan manifes yang dirender di bucket Cloud Storage default atau alternatif.

      Cloud Deploy melakukan tindakan ini menggunakan lingkungan eksekusi default atau alternatif.

  3. Saat peluncuran dibuat (secara otomatis setelah pembuatan rilis atau sesuai permintaan nanti), Cloud Deploy akan melakukan hal berikut:

    1. Memanggil hook pra-deploy, jika ada yang ditentukan.

      Jika Anda menggunakan strategi deployment canary, hook pra-deployment dipanggil di awal fase pertama.

    2. Memanggil operasi deploy.

      Jika Anda menggunakan target bawaan, Cloud Deploy akan otomatis membuat dan men-deploy peluncuran ke target pertama, dengan memanggil skaffold apply. Jika Anda menggunakan target bawaan, peluncuran pertama akan dibuat secara otomatis saat pembuatan rilis.

      Jika Anda menggunakan target kustom, Cloud Deploy akan otomatis membuat peluncuran ke target pertama, dengan memanggil operasi deploy yang ditentukan untuk jenis target kustomnya.

      Untuk target bawaan dan target kustom, peluncuran ke target pertama, bersifat otomatis hanya jika rilis dibuat menggunakan command line.

      Proses men-deploy ke target pertama sama seperti untuk promosi, seperti yang dijelaskan pada langkah berikutnya.

    3. Memanggil skaffold verify, jika verify adalah true untuk target di pipeline pengiriman config dan jika verifikasi ditentukan dalam konfigurasi Skaffold.

    4. Memanggil hook post-deploy, jika ada yang ditentukan, setelah verify, jika verify ditentukan. Jika tidak, hook pasca-deployment dipanggil setelah deploy.

      Jika Anda menggunakan strategi deployment canary, hook pasca-deployment akan dilakukan sebagai tugas terakhir dalam fase peluncuran akhir.

  4. Saat tiba waktunya untuk mempromosikan rilis ke target berikutnya, Cloud Build mengambil manifes khusus target dari Cloud Storage. Kemudian, Cloud Build memanggil skaffold apply untuk menerapkan manifes yang dirender ke target runtime yang ditentukan.

    Jika target memerlukan persetujuan, Anda dapat menyetujui atau menolak melalui CLI atau menggunakan Konsol.

    Selain itu, Cloud Deploy menghasilkan pesan Pub/Sub, yang dapat Anda gunakan untuk memulai alur kerja persetujuan secara otomatis.

    Cloud Deploy menggunakan versi Skaffold dan instance pipeline yang terkait dengan rilis ini, dan melakukan langkah ini di lingkungan eksekusi default atau kustom.

    Proses ini tidak hanya berlaku untuk promosi, tetapi juga untuk rollback dan penyebaran ulang.

  5. Selama operasi Cloud Deploy, layanan memublikasikan notifikasi ke beberapa topik Pub/Sub (misalnya, saat peluncuran memerlukan persetujuan).

    Integrasi ini dan integrasi lainnya dijelaskan lebih lanjut dalam Mengintegrasikan Cloud Deploy dengan sistem eksternal.

  6. Anda dapat menentukan otomatisasi untuk otomatis melakukan berbagai operasi dalam pipeline penayangan. Tindakan ini dapat dijalankan pada waktu yang ditentukan. automationRun mewakili eksekusi aturan otomatis.

  7. Selama operasi Cloud Deploy, layanan menulis log platform dan log audit ke Google Cloud Observability dan Cloud Audit Logs.

Melalui semua langkah ini, kontrol alur dan akses ke resource dibatasi menggunakan Identity and Access Management.

Langkah berikutnya