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