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, coba Panduan Memulai.
Mengelola resource
❑
Setelah membuat resource sebagai bagian dari
deployment, gunakan Deployment Manager jika Anda perlu mengubah resource.
Jika Anda memodifikasi resource tanpa menggunakan Deployment Manager, seperti
dengan konsol Google Cloud atau
gcloud , Anda mungkin melihat
error jika mencoba memodifikasi resource dalam deployment asli.
Jika Anda ingin menghapus resource dari deployment tanpa menghapus resource, gunakan langkah-langkah berikut:
|
❑
Jika Anda memiliki instance Compute Engine dalam deployment dan ingin
melampirkan 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
melampirkan 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 terkait kredensial dari
properti dalam konfigurasi YAML Anda. Penyensoran ini terjadi berdasarkan kunci
properti. Contoh berikut menunjukkan salah satu penyensoran 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 Konfigurasi yang Diperluas dan
Tata Letak yang dihasilkan, tetapi masih terlihat dalam file impor asli. Untuk
alasan ini, sebaiknya Anda menempatkan semua kredensial yang ingin Anda
jaga kerahasiaannya dalam konfigurasi YAML tingkat teratas. Anda dapat mereferensikannya dari sana menggunakan
properti template.
|
❑
Kredensial apa pun 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 |
Template bangunan
❑
Untuk mempercepat penentuan template, pertimbangkan untuk memulai dengan
template sampel 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 untuk
memulai, tetapi Python lebih fleksibel untuk deployment yang kompleks di mana Anda
mungkin memiliki banyak resource yang dibagi di beberapa lingkungan.
|
❑
Susun file konfigurasi
(file YAML) agar hanya menggunakan satu jenis, dan gunakan template tingkat teratas sebagai jenis tersebut
untuk memanggil semua template lainnya. Dengan menerapkan praktik ini, Anda dapat lebih mudah
mengubah sekumpulan template menjadi
jenis komposit.
|
❑
Gunakan file skema.
Skema menentukan serangkaian aturan yang harus diikuti oleh file konfigurasi untuk menggunakan template tertentu. Dengan menentukan skema dan mendorong orang lain untuk meninjau persyaratan yang ditentukan dalam skema, pengguna Anda dapat dengan mudah memahami properti 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 tingkat teratas.
|
❑
Gunakan properti template
dan output.
Dengan menggunakan properti dan output, Anda dapat memasukkan variabel seperti zona, ukuran mesin, jumlah mesin, atau status aplikasi (test, prod, staging) ke dalam 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 modifikasi pada template yang mendasarinya.
|
❑
Gunakan file template individual yang Anda impor ke dalam
file konfigurasi utama. Hal ini memberi Anda cara yang lebih mudah dikelola untuk
menggunakan 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 , alamat IP, atau ID yang dibuat sistem dari resource. Tanpa referensi, Deployment Manager membuat semua
resource secara paralel, sehingga tidak ada jaminan bahwa resource dependen
dibuat dengan urutan yang benar. Penggunaan referensi akan menerapkan urutan pembuatan
resource.
|
❑
Pratinjau
deployment Anda untuk menilai pengaruh pembaruan terhadap deployment Anda.
Deployment Manager tidak membuat instance resource sebenarnya saat Anda
melihat pratinjau konfigurasi, tetapi memperluas konfigurasi lengkap dan membuat resource "shell" sebagai gantinya. 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 untuk memberi label pada resource Anda. Label dapat membantu mengategorikan resource yang
termasuk dalam berbagai deployment 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 di luar grup tersebut,
Anda dapat memindahkan sekelompok resource tersebut ke deployment terpisah. Misalnya, jika deployment Anda berisi beberapa
template,
Anda dapat mengemas setiap template sebagai deployment terpisah.
|
❑
Hapus resource yang tidak perlu dari konfigurasi Anda. Jika Anda memerlukan lebih banyak resource nanti, Anda dapat menambahkan lebih banyak resource ke deployment Anda pada saat itu.
|
❑
Secara opsional, batasi deployment Anda hingga 1.000 atau lebih sedikit resource.
|
Izin
Secara default, Deployment Manager menggunakan kredensial akun layanan Google API untuk mengautentikasi ke API lain. Akun layanan Google API dirancang khusus untuk menjalankan proses internal Google atas nama Anda.
Saat ingin memberikan akses kepada pengguna lain ke project Deployment Manager, Anda perlu 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 seberapa banyak 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 kepada mereka 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 yang sensitif. Dengan jumlah pengguna yang minimal untuk mengelolanya, audit yang mungkin harus Anda lakukan akan menjadi lebih sederhana.
|
❑
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 kustom,
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 kustom, 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. Hal ini memungkinkan Anda menerapkan pendekatan infrastruktur sebagai kode untuk penyediaan project. Pendekatan ini memberikan banyak manfaat, seperti kemampuan untuk:
- Mengizinkan penerapan persyaratan perusahaan saat memberikan project kepada tim yang memerlukan akses ke sumber daya. 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.
- 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 project dan konfigurasi jaringan yang stateful, lalu men-deploy bagian tersebut 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 selesai menguji, Anda dapat menggunakan
Deployment Manager untuk menghapus resource dari project pengujian dan QA.
|
Deployment pengujian. Dengan kemampuan untuk menyertakan penyediaan resource sebagai bagian dari pipeline CI/CD, Deployment Manager memungkinkan Anda memperlakukan konfigurasi project sebagai kode yang dapat diuji dengan mudah, dan mereproduksi salinan lingkungan produksi saat ini atau lingkungan saat ini dengan perubahan yang diterapkan untuk diuji dengan yakin. |
❑
Gunakan kontrol versi. Dengan menggunakan sistem kontrol versi sebagai bagian dari proses pengembangan untuk deployment, Anda dapat:
|