Menambahkan template sebagai jenis komposit

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

Jenis komposit adalah satu atau beberapa template yang dikonfigurasi untuk bekerja sama dan 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 sekumpulan template yang men-deploy grup instance terkelola yang di-load balance oleh jaringan. Anda menambahkan template tersebut sebagai jenis komposit ke Deployment Manager, lalu dapat menggunakan template tersebut dalam konfigurasi mendatang seperti menggunakan 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 v2beta API untuk contoh API dalam panduan ini.

Komponen jenis komposit

Untuk membuat jenis komposit, Anda harus memiliki template Jinja atau Python tingkat atas dan secara opsional, sekumpulan file pendukung yang pada akhirnya akan di-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 komposit terdiri dari:

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

Membuat jenis komposit

Anda dapat membuat jenis komposit dengan mendaftarkan template tingkat atas konfigurasi dan impor serta skema 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 atas dan sub-template yang merupakan bagian dari jenis komposit ini, untuk menjalankan perintah ini.

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

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

dengan:

  • [TYPE_NAME] adalah nama yang ingin Anda gunakan untuk memanggil jenis ini
  • [TOP_LEVEL_TEMPLATE] adalah jalur relatif ke template tingkat atas 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 diimpor
  • Konten template tingkat atas

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 komposit grup instance terkelola yang di-autoscaling. Untuk mengetahui 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 penampil project, serta editor jenis dapat membuat dan menggunakan jenis yang tersedia untuk project tersebut.
  • Penampil jenis dapat mendapatkan daftar jenis dan menggunakan jenis yang tersedia untuk project tersebut.

Anda juga dapat menambahkan project lain sebagai penampil jenis sehingga mereka 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 secara langsung dengan alat command line

Deployment Manager menawarkan kemampuan untuk men-deploy jenis komposit secara langsung dengan Google Cloud CLI. Daripada membuat file konfigurasi tingkat atas, gcloud CLI akan otomatis membuat konfigurasi tingkat atas 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 tanda --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, sertakan 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 subset properti. Jika properti tertentu memiliki nilai default, Anda dapat menghapus properti dari command line.

Untuk menentukan beberapa properti, berikan key-value pair yang dipisahkan koma. Urutan penentuan pasangan tidak menjadi masalah. 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 konsol atau gcloud CLI. Untuk mengetahui informasi tentang cara melihat a 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 balance ke beberapa zona dalam satu region. Untuk mengetahui 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. Unduh 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. 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 ID project 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 tersebut:

    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 berikutnya