Menambahkan template sebagai jenis komposit

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

Jenis gabungan adalah satu atau beberapa template yang dikonfigurasi untuk bekerja sama yang telah ditambahkan secara permanen ke Deployment Manager. Setelah ditambahkan, Anda dapat menggunakan jenis komposit seperti 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 balancer jaringan. Anda menambahkan template tersebut sebagai jenis komposit ke Deployment Manager, lalu dapat menggunakan template tersebut dalam konfigurasi mendatang seperti yang Anda lakukan pada jenis lainnya.

Anda mungkin juga tertarik dengan artikel 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 tingkat teratas dan secara opsional, kumpulan file pendukung yang pada akhirnya me-resolve ke jenis dasar. Jenis komposit dapat terdiri dari resource yang merupakan jenis komposit lainnya. Deployment Manager akan memperluas jenis ini secara rekursif selama deployment.

Jenis gabungan terdiri dari:

  • Template tingkat teratas: Template Jinja atau Python tingkat teratas yang dijalankan selama perluasan saat jenis dipanggil.
  • Skema: File JSON Schema yang menjelaskan informasi tentang template tingkat atas dan sub-impor yang ditentukan.
  • File yang diimpor: File tambahan apa pun yang diperlukan untuk dieksekusi, seperti file helper, sub-template, dan skema yang relevan untuk sub-template, jika ada. Namun, tindakan ini bersifat opsional. Jenis komposit Anda juga dapat berisi satu template tingkat teratas.

Membuat jenis komposit

Anda dapat membuat jenis komposit dengan mendaftarkan template tingkat atas konfigurasi serta impor dan skemanya yang terkait. Buat jenis komposit 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 tingkat teratas dan subtemplate yang merupakan bagian dari jenis komposit ini, agar dapat menjalankan perintah ini.

Dengan menggunakan gcloud CLI, buat permintaan types create, dan tentukan template tingkat 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 gunakan untuk jenis ini
  • [TOP_LEVEL_TEMPLATE] adalah jalur relatif ke template level teratas yang menjelaskan jenis ini.

API

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

  • Skema tingkat atas
  • Konten template yang Anda impor
  • Konten template tingkat teratas Anda

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 contoh cara membuat permintaan ini, lihat Membuat jenis gabungan grup instance terkelola yang diskalakan 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.
  • Pelihat jenis dapat mendapatkan daftar jenis dan menggunakan jenis yang tersedia untuk project tersebut.

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

Setelah mendaftarkan jenis komposit, 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 langsung dengan alat command line

Deployment Manager menawarkan kemampuan untuk men-deploy jenis gabungan secara langsung dengan Google Cloud CLI. Sebagai ganti membuat file konfigurasi tingkat teratas, gcloud CLI akan otomatis membuat konfigurasi tingkat 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 menentukannya sebagai string, tempatkan 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 yang diperlukan yang ditentukan oleh jenis komposit. Anda tidak dapat hanya memberikan sebagian properti. Jika properti tertentu memiliki nilai default, Anda dapat menghilangkan properti dari command line.

Untuk menentukan beberapa properti, berikan pasangan nilai kunci yang dipisahkan koma. Urutan Anda menentukan pasangan tidak penting. 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 Konsol Google Cloud atau gcloud CLI. Untuk mengetahui informasi tentang cara 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 dengan load balancing 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 file apa pun di subdirektori dan file diagram apa pun.
  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 berhasil dibuat:

    gcloud beta deployment-manager types list --provider composite
    
  4. Jelaskan 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 menampilkan 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 Anda.

Langkah selanjutnya