Praktik terbaik untuk menggunakan Deployment Manager

Halaman ini menjelaskan praktik terbaik untuk membuat deployment menggunakan Deployment Manager Google Cloud. Halaman ini dirancang untuk pengguna yang sudah memahami Deployment Manager; halaman ini tidak akan mengajarkan cara menggunakan Deployment Manager.

Jika Anda baru menggunakan Deployment Manager, coba Panduan Memulai.

Mengelola resource

❑  
Setelah membuat resource sebagai bagian dari deployment, gunakan Deployment Manager jika Anda perlu mengubah resource. Jika Anda mengubah resource tanpa menggunakan Deployment Manager, seperti dengan konsol Google Cloud atau gcloud, Anda mungkin melihat error jika mencoba mengubah resource dalam deployment asli.

Jika Anda ingin menghapus resource dari deployment tanpa menghapus resource, gunakan langkah-langkah berikut:

  1. Dalam konfigurasi deployment, hapus definisi resource tersebut.
  2. Update deployment, dan dalam perintah `gcloud`, tambahkan --delete-policy ABANDON. Resource tidak lagi dikaitkan dengan deployment, dan Anda kemudian dapat mengubah resource menggunakan konsol Google Cloud atau gcloud.
❑  
Jika Anda memiliki instance Compute Engine dalam deployment dan ingin memasang persistent disk ke instance, tentukan disk secara terpisah dari instance, sehingga Anda dapat mengelolanya dengan mudah. Misalnya, dalam deployment di bawah, disk example-disk ditentukan secara terpisah dari instance example-instance. Untuk memasang disk, konfigurasi memiliki referensi ke disk:
    resources:
    # instance
    - name: example-instance
      type: compute.v1.instance
      properties:
        disks:
          - type: PERSISTENT
            source:$(ref.example-disk.selfLink)
   # disk
   - name: example-disk
     type: compute.v1.disk
     properties:
       zone: us-central1-a
       sizeGb: 10
       type: ...
    
❑  

Jika Anda ingin membuat dan mengelola cluster Google Kubernetes Engine (GKE) pribadi dengan Deployment Manager, tetapkan opsi privateClusterConfig dan ipAllocationPolicy berikut dalam deployment Anda.

     privateClusterConfig:
        enablePrivateNodes: true
        enablePrivateEndpoint: true
        #  Configure the IP range for the hosted master network
        masterIpv4CidrBlock: IP_RANGE
      ipAllocationPolicy:
        useIpAliases: true
        createSubnetwork: true
    

Untuk mengetahui persyaratan dan pertimbangan tambahan saat Anda membuat cluster pribadi dengan GKE, baca Menyiapkan cluster pribadi.

Menyertakan kredensial dalam deployment

❑  
Deployment Manager menyamarkan beberapa kolom yang terkait dengan kredensial dari properti dalam konfigurasi YAML Anda. Penyamaran ini terjadi berdasarkan kunci properti. Contoh berikut menunjukkan salah satu penyamaran tersebut:
    # Config provided to Deployment Manager
    resources:
    - name: example-resource
      type: gcp-types/service-v1:sample-type-with-password
      properties:
        zone: us-central1-a
        username: test-user
        password: hunter2

   # Config as surfaced by Deployment Manager
   resources:
    - name: example-resource
      type: gcp-types/service-v1:sample-type-with-password
      properties:
        zone: us-central1-a
        username: test-user
        password: (redacted)
    
❑  
Jika Anda menyertakan kredensial dalam template Jinja atau Python untuk deployment, kredensial akan disamarkan dari file Konfigurasi dan Tata Letak yang Diperluas yang dihasilkan, tetapi masih terlihat dalam file impor asli. Oleh karena itu, sebaiknya tempatkan semua kredensial yang ingin Anda rahasiakan di konfigurasi YAML level teratas. Anda dapat mereferensikannya dari sana menggunakan properti template.
❑  
Setiap kredensial yang disertakan dalam pasangan nilai kunci dalam file YAML atau daftar item tidak akan disamarkan, seperti dalam contoh berikut. Sebaiknya Anda tidak memberikan kredensial ke Deployment Manager sebagai pasangan nilai kunci dalam file YAML atau daftar item karena alasan ini.
    # Not a valid instance configuration, used solely for demonstration
    resources:
    - name: example-resource
      type: gcp-types/compute-v1:instances
      properties:
        zone: us-central1-a
        disks:
        - autoDelete: true
          boot: true
    # Will not be redacted
          password: hunter2
    

Membuat template

❑  
Untuk mempercepat penentuan template, pertimbangkan untuk memulai dengan template contoh siap produksi dari Project Cloud Foundation Toolkit.
❑  
Jika Anda memiliki persyaratan infrastruktur yang kompleks, seperti kebutuhan untuk membuat beberapa lingkungan, baca tutorial dan contoh untuk menggunakan Deployment Manager dalam skala besar.
❑  
Gunakan Python untuk mem-build template. Anda dapat menggunakan Python atau Jinja2 untuk membuat template. Jinja lebih mudah untuk dimulai, tetapi Python lebih fleksibel untuk deployment kompleks tempat Anda mungkin memiliki banyak resource yang dibagi di beberapa lingkungan.
❑  
Strukturkan file konfigurasi (file YAML) agar hanya menggunakan satu jenis, dan gunakan template tingkat atas sebagai jenis tersebut untuk memanggil semua template lainnya. Dengan menerapkan praktik ini, Anda dapat mengubah sekumpulan template menjadi jenis komposit dengan lebih mudah.
❑  
Gunakan file skema. Skema menentukan serangkaian aturan yang harus diikuti file konfigurasi untuk menggunakan template tertentu. Dengan menentukan skema dan mendorong orang lain untuk meninjau persyaratan yang ditentukan dalam skema, pengguna Anda memiliki cara mudah untuk memahami properti yang dapat ditetapkan atau diperlukan untuk template masing-masing. Hal ini membantu pengguna menggunakan konfigurasi tanpa harus menyelidiki detail template. Setidaknya, tentukan file skema untuk template tingkat teratas.
❑  
Gunakan properti template dan output. Dengan menggunakan properti dan output, Anda dapat meneruskan variabel seperti zona, ukuran mesin, jumlah mesin, atau status aplikasi (pengujian, produksi, staging) ke template dan mendapatkan kembali nilai output seperti alamat IP dan selfLink ke instance VM. Properti dan output memungkinkan template Anda menjadi fleksibel sehingga dapat digunakan kembali tanpa mengubah template yang mendasarinya.
❑  
Gunakan setiap file template yang Anda impor ke dalam file konfigurasi utama. Hal ini memberi Anda cara yang lebih mudah dikelola untuk menangani konfigurasi.
❑  
Bagi konfigurasi Anda menjadi unit logis. Misalnya, buat konfigurasi terpisah untuk layanan stateful seperti database dan bucket serta konfigurasi untuk layanan yang lebih sementara seperti instance frontend.
❑  
Gunakan referensi. Referensi harus digunakan untuk nilai yang tidak ditentukan hingga resource dibuat, seperti selfLink resource, alamat IP, atau ID yang dibuat sistem. Tanpa referensi, Deployment Manager membuat semua resource secara paralel, sehingga tidak ada jaminan bahwa resource dependen dibuat dalam urutan yang benar. Penggunaan referensi akan menerapkan urutan pembuatan resource.
❑  
Lihat pratinjau deployment untuk menilai pengaruh update terhadap deployment Anda. Deployment Manager tidak membuat instance resource sebenarnya saat Anda melihat pratinjau konfigurasi, tetapi memperluas konfigurasi lengkap dan membuat resource "shell". Hal ini memberi Anda kesempatan untuk melihat perubahan pada deployment sebelum menerapkannya.
❑  
Periksa metode API untuk resource tertentu guna memahami implikasi melakukan update. Tetapkan kebijakan update saat mengupdate deployment untuk membantu Anda mengontrol cara Deployment Manager menerapkan setiap update.
❑  
Gunakan label untuk resource Anda. Jika resource yang Anda tentukan mendukung label, gunakan label tersebut untuk memberi label pada resource Anda. Label dapat membantu mengategorikan resource yang milik deployment yang berbeda dan juga merupakan cara untuk membedakan tahap resource, seperti apakah resource mendukung lingkungan produksi atau pengujian.

Mengelola ukuran deployment

Deployment Manager dapat beroperasi pada sejumlah besar resource, bergantung pada batas kuota. Jika ingin mengurangi waktu yang diperlukan untuk membuat, memperbarui, atau menghapus deployment, Anda dapat mengurangi jumlah resource dalam setiap deployment.

❑  
Jika sekelompok resource tidak bergantung pada resource apa pun di luar grup tersebut, Anda dapat memindahkan grup resource tersebut ke deployment terpisah. Misalnya, jika deployment Anda berisi beberapa template, Anda berpotensi mengemas setiap template sebagai deployment terpisah.
❑  
Hapus resource yang tidak diperlukan dari konfigurasi Anda. Jika memerlukan lebih banyak resource nanti, Anda dapat menambahkan lebih banyak resource ke deployment pada saat itu.
❑  
Secara opsional, batasi deployment Anda hingga 1.000 resource atau kurang.

Izin

Secara default, Deployment Manager menggunakan kredensial akun layanan Google API untuk melakukan autentikasi ke API lainnya. Akun layanan Google API dirancang khusus untuk menjalankan proses internal Google atas nama Anda.

Jika ingin memberikan akses kepada pengguna lain ke project Deployment Manager, Anda harus memberikan peran IAM kepada pengguna tersebut yang memiliki izin yang sesuai untuk menggunakan Deployment Manager. Ada sejumlah peran IAM bawaan yang dapat Anda gunakan untuk menentukan jumlah akses yang dimiliki pengguna untuk memanggil Deployment Manager.

❑  
Gunakan peran IAM untuk membatasi izin yang diberikan kepada pengguna untuk menggunakan Deployment Manager.
❑  
Jika Anda ingin pengguna dapat mengakses resource yang dibuat oleh Deployment Manager, berikan peran yang diperlukan pengguna untuk menggunakan resource, tetapi jangan berikan izin untuk men-deploy resource secara langsung.
❑  
Memberikan peran pemilik kepada akun utama akan memungkinkannya mengubah kebijakan IAM. Oleh karena itu, berikan peran pemilik hanya jika akun utama memiliki tujuan yang sah untuk mengelola kebijakan IAM, karena kebijakan Anda berisi data kontrol akses sensitif. Memiliki serangkaian pengguna minimal yang mengelolanya akan menyederhanakan audit apa pun yang mungkin harus Anda lakukan.
❑  
Deployment Manager menggunakan akun layanan Google API untuk membuat dan mengelola resource Anda. Jika menggunakan Deployment Manager untuk mengelola resource penting, seperti peran IAM kustom, Anda harus menetapkan peran IAM tambahan ke akun layanan Google API default. Misalnya, jika ingin menggunakan Deployment Manager untuk membuat dan mengelola peran IAM kustom, Anda harus menambahkan peran Role Administrator ke akun layanan Google API.

Untuk ringkasan akun layanan Google API, lihat Akun layanan yang dikelola Google.

Untuk mengetahui langkah-langkah menetapkan peran ke akun layanan, lihat Memberikan peran ke akun layanan.

Otomatisasi

Pertimbangkan untuk mengotomatiskan pembuatan project serta mengotomatiskan pembuatan resource yang terdapat dalam project. Hal ini memungkinkan Anda mengadopsi pendekatan infrastruktur sebagai kode untuk penyediaan project. Pendekatan ini memberikan banyak manfaat, seperti kemampuan untuk:

  • Izinkan penegakan persyaratan perusahaan saat menyediakan project kepada tim yang memerlukan akses ke resource Google Cloud .
  • Menyediakan serangkaian lingkungan project standar yang dapat disediakan dengan cepat dan mudah.
  • Gunakan kontrol versi untuk mengelola konfigurasi project dasar Anda.
  • Yakinlah bahwa Anda men-deploy konfigurasi project yang dapat direproduksi dan konsisten.
  • Menyertakan pembuatan project sebagai bagian dari proses penyediaan otomatis.
❑  
Otomatiskan pembuatan project menggunakan template yang tersedia di GitHub sebagai titik awal.

Continuous Integration (CI) / Continuous Deployment (CD)

Gunakan Deployment Manager sebagai bagian dari pipeline CI/CD Anda.

❑  
Jangan gunakan pipeline CI/CD untuk membuat dan menghapus seluruh project pengujian dan QA.
  • Anda dapat memilih untuk menghancurkan instance VM atau resource yang mungkin menimbulkan biaya tambahan, tetapi pertimbangkan untuk membiarkan aset yang dapat digunakan kembali yang mungkin memerlukan waktu beberapa saat untuk dibuat ulang, karena menghapus resource ini dapat berdampak buruk pada waktu yang diperlukan untuk menyelesaikan pipeline build Anda. Tidak ada biaya untuk menyiapkan jaringan, subnet, atau aturan firewall.
  • Perlu diperhatikan bahwa jika Anda menghapus project, project tersebut akan tetap menjadi bagian dari kuota project Anda selama beberapa hari hingga project tersebut sepenuhnya dihapus. Hal ini juga berarti Anda tidak dapat menggunakan kembali nama project.
  • Dengan menggunakan Deployment Manager, Anda dapat menghapus resource dari project dengan mudah sehingga tidak mencapai kuota resource.
❑  
Gunakan Deployment Manager untuk membuat bagian stateful dari project dan konfigurasi jaringan, lalu deploy-kan di luar proses CI/CD sebagai bagian dari penyiapan awal. Setelah pengujian selesai, Anda dapat menghapus deployment yang hanya berisi resource stateless yang di-deploy sebagai bagian dari pipeline.
❑  
Sebagai bagian dari proses CI/CD, gunakan konfigurasi terpisah untuk men-deploy resource ke project pengujian dan QA Anda. Setelah menyelesaikan pengujian, Anda dapat menggunakan Deployment Manager untuk menghapus resource dari project pengujian dan QA.
Menguji deployment. Dengan kemampuan untuk menggabungkan penyediaan resource sebagai bagian dari pipeline CI/CD, Deployment Manager memungkinkan Anda memperlakukan konfigurasi project sebagai kode yang dapat Anda uji dengan mudah, dan mereproduksi salinan yang konsisten dari lingkungan produksi saat ini atau lingkungan saat ini dengan perubahan yang diterapkan untuk menguji dengan yakin.
❑  
Gunakan kontrol versi. Dengan menggunakan sistem kontrol versi sebagai bagian dari proses pengembangan deployment, Anda dapat:
  • Kembali ke konfigurasi yang sebelumnya dianggap aman.
  • Berikan jejak audit untuk perubahan.
  • Gunakan konfigurasi sebagai bagian dari sistem deployment berkelanjutan.