Menambahkan template sebagai jenis komposit

Halaman ini menjelaskan cara membuat jenis komposit dengan Deployment Manager. Setelah membuat jenis gabungan, Anda dapat memanggil jenis tersebut dalam konfigurasi Anda dan membuat deployment.

Jenis komposit adalah satu atau beberapa template yang dikonfigurasi agar berfungsi bersama yang telah ditambahkan secara permanen ke Deployment Manager. Setelah ditambahkan, Anda dapat menggunakan jenis komposit seperti Anda akan menggunakan jenis milik Google. Untuk mempelajari Jenis lebih lanjut, baca Ringkasan Jenis.

Misalnya, Anda dapat membuat kumpulan template yang men-deploy grup instance terkelola dengan load balancing jaringan. Anda akan menambahkan template tersebut sebagai jenis komposit ke Deployment Manager, lalu dapat menggunakan template tersebut dalam konfigurasi mendatang seperti yang akan Anda lakukan dengan jenis lainnya.

Anda mungkin juga tertarik dengan Berbagi Jenis di Seluruh Project.

Sebelum memulai

  • Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal alat command line`gcloud`.
  • Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.
  • Gunakan API v2beta untuk contoh API dalam panduan ini.

Komponen jenis komposit

Untuk membuat jenis komposit, Anda harus memiliki template Jinja atau Python level teratas dan, secara opsional, kumpulan file pendukung yang akhirnya di-resolve menjadi jenis dasar. Jenis gabungan dapat terdiri dari resource yang merupakan jenis gabungan lainnya. Deployment Manager akan memperluas jenis ini secara berulang selama deployment.

Jenis komposit terdiri dari:

  • Template level teratas: Template Jinja atau Python level teratas yang dijalankan selama ekspansi saat jenis dipanggil.
  • Skema: File Skema JSON yang menjelaskan informasi tentang template level teratas dan sub-impor yang ditentukan.
  • File yang diimpor: File tambahan apa pun yang diperlukan untuk eksekusi, seperti file helper, sub-templates, dan skema yang relevan untuk sub-template, jika berlaku. Namun, langkah ini bersifat opsional. Jenis komposit juga dapat berisi satu template tingkat atas saja.

Membuat jenis gabungan

Anda dapat membuat jenis komposit dengan mendaftarkan template level teratas konfigurasi serta impor dan skema terkaitnya. Buat jenis gabungan menggunakan gcloud atau API.

Anda mungkin juga tertarik dengan contoh yang menjelaskan cara membuat dan memanggil jenis komposit.

gcloud

Anda harus berada di direktori tempat Anda menyimpan template level teratas dan subtemplate yang merupakan bagian dari jenis komposit ini agar dapat menjalankan perintah ini.

Dengan gcloud CLI, buat permintaan types create, lalu tentukan template level teratas dan nama jenis yang diinginkan untuk memanggil jenis komposit ini. Jalankan perintah ini di direktori lokal tempat Anda memiliki file template.

$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]

dengan:

  • [TYPE_NAME] adalah nama yang ingin Anda panggil jenis ini
  • [TOP_LEVEL_TEMPLATE] adalah jalur relatif ke template tingkat atas yang mendeskripsikan jenis ini.

API

Di API, buat permintaan POST yang berisi kolom composite dan name. Di kolom composite, tentukan:

  • Skema tingkat atas
  • Konten template yang diimpor
  • Konten template level teratas

Isi permintaan API memiliki struktur berikut:

POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes

{
 "composite": {
  "files": {
   "schema": "[CONTENTS_OF_SCHEMA]",
   "imports": [
    {
     "name": "[TEMPLATE_FILE]",
     "content": "[CONTENTS_OF_TEMPLATE_FILE]"
    },
    {
     "name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
     "content": "[CONTENTS_OF_TEMPLATES]"
    }
   ],
   "template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
   "templateFileType": "[FILE_TYPE]"
  }
 },
 "name": "[TYPE_NAME]"
}

Untuk mengetahui contoh cara membuat permintaan ini, lihat Membuat jenis gabungan grup instance terkelola dengan penskalaan otomatis. Untuk informasi selengkapnya, lihat dokumentasi untuk metode insert.

Men-deploy jenis komposit

Jenis adalah resource per project dan dapat diakses sesuai dengan izin yang dijelaskan dalam dokumentasi Kontrol Akses. Definisinya yaitu:

  • Editor dan pelihat project, serta editor jenis dapat membuat dan menggunakan jenis yang tersedia untuk project tersebut.
  • Type viewer bisa mendapatkan daftar jenis dan jenis penggunaan yang tersedia untuk project tersebut.

Anda juga dapat menambahkan project lain sebagai penampil jenis agar mereka dapat mengakses jenis Anda. Baca Jenis Berbagi di Seluruh Project.

Setelah mendaftarkan jenis gabungan, Anda dapat men-deploy jenis tersebut dengan cara yang sama seperti memanggil jenis yang dikelola Google:

types: [PROJECT_ID]/composite:[TYPE_NAME]

Contoh:

resources:
- name: my example-resource
  type: example-project/composite:autoscaled-igm
  properties:
  ...

Men-deploy jenis komposit secara langsung dengan alat command line

Deployment Manager menawarkan kemampuan untuk men-deploy jenis komposit secara langsung dengan Google Cloud CLI. Alih-alih membuat file konfigurasi level teratas, gcloud CLI akan otomatis menghasilkan konfigurasi level teratas untuk Anda.

Misalnya, perintah berikut men-deploy jenis komposit yang disebut autoscaled-igm:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm

Anda juga dapat menetapkan properti jenis komposit menggunakan flag --properties:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm \
    --properties zone:us-central1-a

Perlu diperhatikan bahwa:

  • Semua nilai diuraikan sebagai nilai YAML. Misalnya, version: 3 diteruskan sebagai bilangan bulat. Jika Anda ingin menetapkannya sebagai string, letakkan tanda kutip tunggal yang di-escape di sekitar nilai, version: \'3\'.

  • Nilai Boolean tidak peka huruf besar/kecil, sehingga TRUE, true, dan True diperlakukan sama.

  • Anda harus meneruskan semua properti wajib yang ditentukan oleh jenis komposit. Anda tidak dapat memberikan sub-kumpulan properti saja. Jika properti tertentu memiliki nilai default, Anda dapat menghapus properti dari command line.

Untuk menentukan beberapa properti, berikan key:value pair yang dipisahkan koma. Bagaimanapun urutan Anda menentukan pasangan tersebut. Contoh:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm \
    --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8

Setelah menjalankan perintah ini, Deployment Manager akan membuat deployment menggunakan jenis komposit yang Anda berikan. Anda dapat mengonfirmasi bahwa deployment telah dibuat menggunakan Google Cloud Console atau gcloud CLI. Untuk informasi tentang melihat deployment, baca Melihat manifes.

Contoh: Membuat jenis komposit

Deployment Manager menawarkan banyak contoh konfigurasi dari repositori GitHub Deployment Manager yang dapat Anda gunakan sebagai jenis komposit. Untuk contoh ini, Anda akan menambahkan jenis komposit yang men-deploy layanan ketersediaan tinggi yang di-load balanced ke beberapa zona dalam satu region. Untuk informasi selengkapnya, lihat contoh lengkap.

Dalam contoh ini, file konfigurasi tingkat atas adalah file ha-service.py. Semua sub-template diimpor dalam file skema.

  1. Download file Python dan skema dari direktori GitHub. Hapus semua file di subdirektori dan file diagram.
  2. Di direktori lokal tempat Anda mendownload semua file, jalankan perintah berikut untuk membuat jenis komposit baru yang disebut ha-service-example:

    gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
    
  3. Dapatkan daftar jenis untuk mengonfirmasi bahwa jenis tersebut berhasil dibuat:

    gcloud beta deployment-manager types list --provider composite
    
  4. Deskripsikan jenis baru Anda:

    gcloud beta deployment-manager types describe ha-service-example --provider composite
    
  5. Buat konfigurasi baru yang men-deploy jenis Anda. Ganti [PROJECT_ID] dengan project ID Anda:

    resources:
    - name: ha-service-example
      type: [PROJECT_ID]/composite:ha-service-example
      properties:
        dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic
        zones:
        - us-central1-b
        - us-central1-a
    

    Simpan konfigurasi sebagai example-config.yaml. Perhatikan bahwa Anda tidak perlu mengimpor template apa pun dalam konfigurasi.

  6. Deploy jenis komposit baru Anda:

    gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
    

    API akan ditampilkan dengan daftar resource yang dibuat dari jenis:

    Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done.
    Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully.
    NAME                                            TYPE                             STATE      ERRORS  INTENT
    ha-service-deployment-lb-fr                      compute.v1.forwardingRule        COMPLETED  []
    ha-service-deployment-lb-hc                      compute.v1.httpHealthCheck       COMPLETED  []
    ha-service-deployment-lb-tp                      compute.v1.targetPool            COMPLETED  []
    ha-service-deployment-service-us-central1-a-as   compute.v1.autoscaler            COMPLETED  []
    ha-service-deployment-service-us-central1-a-igm  compute.v1.instanceGroupManager  COMPLETED  []
    ha-service-deployment-service-us-central1-a-it   compute.v1.instanceTemplate      COMPLETED  []
    ha-service-deployment-service-us-central1-b-as   compute.v1.autoscaler            COMPLETED  []
    ha-service-deployment-service-us-central1-b-igm  compute.v1.instanceGroupManager  COMPLETED  []
    ha-service-deployment-service-us-central1-b-it   compute.v1.instanceTemplate      COMPLETED  []

Selamat, Anda telah membuat jenis komposit pertama!

Langkah selanjutnya