Praktik terbaik untuk menggunakan Deployment Manager

Halaman ini menjelaskan praktik terbaik untuk membuat deployment menggunakan Google Cloud Deployment Manager. 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, cobalah Panduan Memulai.

Mengelola sumber daya

❑  
Setelah Anda 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 tersebut, gunakan langkah-langkah berikut:

  1. Dalam konfigurasi deployment Anda, hapus definisi resource tersebut.
  2. Perbarui deployment, dan di perintah `gcloud`, tambahkan --delete-policy ABANDON. Resource ini tidak lagi terkait 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, agar Anda dapat mengelolanya dengan mudah. Misalnya, dalam deployment di bawah ini, 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 Anda

❑  
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 tersebut akan disamarkan dari file Expanded Config dan Layout yang dihasilkan, tetapi masih terlihat di file impor asli. Karena alasan ini, kami sangat menyarankan Anda untuk menempatkan semua kredensial yang ingin Anda jaga kerahasiaannya dalam konfigurasi YAML level teratas. Anda dapat mereferensikannya dari sana menggunakan properti template.
❑  
Setiap kredensial yang disertakan dalam key-value pair dalam file YAML atau daftar item tidak akan disamarkan, seperti dalam contoh berikut. Karena alasan ini, kami sangat menyarankan agar Anda tidak memberikan kredensial ke Deployment Manager sebagai key-value pair dalam file YAML atau daftar item.
    # 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 contoh template 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 membuat template. Anda dapat menggunakan Python atau Jinja2 untuk membuat template. Jinja lebih mudah digunakan, tetapi Python lebih fleksibel untuk deployment kompleks, tempat Anda mungkin memiliki banyak resource yang terbagi di beberapa lingkungan.
❑  
Buat struktur file konfigurasi Anda (file YAML) sehingga hanya menggunakan satu jenis, dan gunakan template level teratas sebagai jenis tersebut untuk memanggil semua template lainnya. Dengan menerapkan praktik ini, Anda dapat mengubah kumpulan template menjadi jenis gabungan dengan lebih mudah.
❑  
Gunakan file skema. Skema menentukan kumpulan 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 memiliki cara mudah untuk memahami properti apa saja yang dapat disetel atau diperlukan untuk template masing-masing. Hal ini membantu pengguna menggunakan konfigurasi tanpa harus menyelidiki detail template. Setidaknya, tentukan file skema untuk template level atas.
❑  
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 dalam template, dan mendapatkan kembali nilai output seperti alamat IP dan selfLink ke instance VM. Properti dan output memungkinkan template menjadi fleksibel sehingga dapat digunakan kembali tanpa modifikasi pada template dasarnya.
❑  
Gunakan masing-masing file template yang Anda impor ke file konfigurasi utama. Hal ini memberi Anda cara yang lebih mudah dikelola dalam menangani konfigurasi.
❑  
Bagi konfigurasi 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 references. Referensi harus digunakan untuk nilai yang tidak ditentukan hingga resource dibuat, seperti selfLink resource, alamat IP, atau ID yang dihasilkan sistem. Tanpa referensi, Deployment Manager akan membuat semua resource secara paralel, sehingga tidak ada jaminan bahwa resource dependen dibuat dengan urutan yang benar. Menggunakan referensi akan menegakkan urutan pembuatan resource.
❑  
Pratinjau deployment Anda untuk menilai bagaimana pengaruh update terhadap deployment Anda. Deployment Manager tidak membuat instance resource aktual saat Anda melihat pratinjau konfigurasi, tetapi memperluas konfigurasi penuh dan membuat resource "shell". Hal ini memberi Anda kesempatan untuk melihat perubahan pada deployment sebelum melakukan commit.
❑  
Memeriksa metode API untuk resource tertentu guna memahami implikasi penerapan update. Tetapkan kebijakan update saat mengupdate deployment untuk membantu Anda mengontrol cara Deployment Manager menerapkan setiap update.
❑  
Menggunakan label untuk resource Anda. Jika resource yang Anda tentukan mendukung label, gunakan resource untuk memberi label pada resource. Label dapat membantu mengategorikan resource yang termasuk dalam deployment yang berbeda dan juga merupakan cara untuk membedakan resource tersebut dalam tahap mana, 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 jumlah waktu yang diperlukan untuk membuat, memperbarui, atau menghapus deployment, Anda dapat mengurangi jumlah resource dalam setiap deployment.

❑  
Jika sekelompok resource tidak bergantung pada resource di luar grup tersebut, Anda dapat memindahkan grup resource tersebut ke deployment terpisah. Misalnya, jika deployment Anda berisi beberapa template, Anda dapat mengemas setiap template sebagai deployment terpisah.
❑  
Hapus resource yang tidak diperlukan dari konfigurasi Anda. Jika nanti Anda membutuhkan lebih banyak resource, Anda dapat menambahkan lebih banyak resource untuk deployment Anda 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 lain. Akun layanan Google API dirancang khusus untuk menjalankan proses internal Google atas nama Anda.

Jika ingin memberi pengguna lain akses ke project Deployment Manager, Anda perlu memberi pengguna peran IAM yang memiliki izin yang sesuai untuk menggunakan Deployment Manager. Ada sejumlah peran IAM yang telah ditetapkan yang dapat Anda gunakan untuk menentukan seberapa besar 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 agar pengguna dapat mengakses resource yang dibuat oleh Deployment Manager, berikan peran yang diperlukan untuk menggunakan resource, tetapi jangan berikan izin untuk men-deploy resource secara langsung.
❑  
Memberikan peran pemilik ke akun utama akan memungkinkan akun utama tersebut 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 yang sensitif. Memiliki sekumpulan pengguna minimal yang mengelolanya akan menyederhanakan setiap pengauditan yang mungkin harus Anda lakukan.
❑  
Deployment Manager menggunakan akun layanan Google API untuk membuat dan mengelola resource Anda. Jika Anda menggunakan Deployment Manager untuk mengelola resource penting, seperti peran IAM khusus, Anda harus menetapkan peran IAM tambahan ke akun layanan Google API default. Misalnya, jika Anda ingin menggunakan Deployment Manager untuk membuat dan mengelola peran IAM khusus, Anda harus menambahkan peran Administrator Peran 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 ada dalam project. Dengan begitu, Anda dapat mengadopsi pendekatan infrastruktur sebagai kode untuk penyediaan project. Pendekatan ini memberikan banyak manfaat, seperti kemampuan untuk:

  • Mengizinkan penegakan persyaratan perusahaan saat memberikan project kepada tim yang memerlukan akses ke resource Google Cloud.
  • Menyediakan serangkaian lingkungan project yang telah ditentukan sebelumnya 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.
  • Menggabungkan 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 atau resource VM yang mungkin menimbulkan biaya tambahan, tetapi pertimbangkan untuk membiarkan aset yang dapat digunakan kembali yang mungkin memerlukan waktu beberapa saat untuk dibuat ulang, karena penghapusan resource ini dapat berdampak buruk pada waktu yang diperlukan untuk menyelesaikan pipeline build Anda. Penyiapan jaringan, subnet, atau aturan firewall tidak memerlukan biaya.
  • Perlu diketahui bahwa jika Anda menghapus project, project tersebut akan tetap menjadi bagian dari kuota project Anda selama beberapa hari hingga project tersebut dihapus sepenuhnya. Hal ini juga berarti Anda tidak dapat menggunakan kembali nama project tersebut.
  • Dengan Deployment Manager, Anda dapat dengan mudah menghapus resource dari sebuah project sehingga tidak mencapai kuota resource.
❑  
Gunakan Deployment Manager untuk membuat bagian stateful project dan konfigurasi jaringan serta men-deploy-nya 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 UM (Uji Mutu).
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 diuji dengan mudah, dan mereproduksi secara konsisten salinan lingkungan produksi saat ini atau lingkungan saat ini dengan perubahan yang diterapkan pada pengujian secara meyakinkan.
❑  
Gunakan kontrol versi. Dengan menggunakan sistem kontrol versi sebagai bagian dari proses pengembangan deployment, Anda dapat:
  • Kembali ke konfigurasi sebelumnya yang diketahui bagus.
  • Berikan jejak audit untuk perubahan.
  • Gunakan konfigurasi sebagai bagian dari sistem deployment berkelanjutan.