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:
|
❑
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: 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.
|
❑
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:
|