Setelah membuat deployment, Anda dapat mengupdatenya seiring perubahan aplikasi atau layanan Anda. Anda dapat menggunakan Deployment Manager untuk mengupdate deployment dengan:
- Menambahkan atau menghapus resource dari deployment.
- Memperbarui properti resource yang ada dalam deployment.
Satu pembaruan dapat berisi kombinasi apa pun dari perubahan ini. Misalnya, Anda dapat membuat perubahan pada properti resource yang ada dan menambahkan resource baru dalam permintaan yang sama. Anda mengupdate deployment dengan mengikuti langkah-langkah berikut:
- Buat perubahan atau buat file konfigurasi dengan perubahan yang Anda inginkan.
- Secara opsional, pilih kebijakan yang akan digunakan untuk update Anda atau gunakan kebijakan default.
- Buat permintaan update ke Deployment Manager.
Sebelum memulai
- Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal alat command line`gcloud`.
- Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.
- Memahami cara membuat deployment.
Menyiapkan update
Sebelum mengupdate deployment, gunakan panduan ini untuk menyiapkan update:
Jika Anda mengupdate deployment untuk menambahkan resource baru ke project, periksa apakah resource sudah ada.
Secara default, jika resource yang ingin Anda tambahkan sudah ada di project, resource tersebut akan diperoleh oleh deployment, tanpa membuat resource baru. Jika tidak ingin memperoleh resource yang ada, Anda harus mengubah kebijakan agar dapat digunakan untuk update.
Untuk mengetahui informasi tentang kebijakan yang dapat digunakan saat mengupdate deployment, lihat Kebijakan untuk menambahkan resource.
Jika Anda mengupdate deployment untuk mengganti resource, periksa dependensinya
Jika ingin mengganti resource dari deployment, Anda harus terlebih dahulu memastikan bahwa penghapusan resource tidak menyebabkan siklus deployment. Siklus deployment terjadi ketika resource bergantung pada dirinya sendiri, baik secara langsung maupun tidak langsung. Misalnya, pertimbangkan deployment berikut:
resources: - name: vm-a properties: zone: us-central1-f ... metadata: dependsOn: - vm-depends-on # The second VM - name: vm-depends-on properties: zone: $(ref.vm-a.zone) ...
Dalam deployment ini, untuk
vm-a
, pernyataandependsOn
mengharuskanvm-depends-on
harus dibuat sebelumvm-a
. Namun,vm-depends-on
menggunakan referensi ke zona untukvm-a
, yang mengharuskanvm-a
dibuat sebelumvm-depends-on
. Dalam skenario seperti ini, dependensi berada dalam loop, dan deployment akan gagal.Jika Anda memiliki resource yang keduanya bergantung pada resource lain dan bergantung pada resource lain, mengganti resource tersebut dapat menyebabkan siklus deployment.
Misalnya, suatu deployment memiliki persistent disk yang disebut
disk-a
, VM bernamavm-a
, dan grup instance bernamaig-a
. Konfigurasi untukvm-a
menyertakan referensi kedisk-a
, dan konfigurasi untukig-a
menyertakan referensi kevm-a
. Dalam konfigurasi yang diperbarui, Anda ingin menghapusvm-a
dan menggantinya denganvm-b
. Dalam skenario demikian, menyelesaikan dependensi untuk vm-a dan vm-b dapat menyebabkan siklus deployment, dan deployment Anda gagal.Untuk menghindari siklus deployment saat Anda ingin mengganti resource dalam rantai dependensi, lakukan salah satu hal berikut:
Hapus dependensi untuk resource yang ingin diganti, baik dengan menghapus klausa dependOn, maupun dengan menghapus atau mengubah referensi ke resource lain. Setelah mengupdate deployment dengan perubahan ini, buat update lain untuk mengganti resource.
Menghapus rantai resource dependen, lalu mengupdate deployment. Kemudian, pada update berikutnya, buat ulang resource yang ingin Anda gunakan.
Pastikan ada API dasar yang mendukung update Anda.
Deployment Manager menggunakan API setiap layanan untuk membuat dan memodifikasi deployment Anda. Untuk memastikan permintaan Anda dapat diselesaikan oleh Deployment Manager, tinjau dokumentasi API dari layanan Cloud Platform untuk mengetahui resource yang ingin diperbarui.
Misalnya, jika Anda ingin memperbarui set data BigQuery dalam deployment, lihat metode yang tersedia di referensi Datasets API. Metode tersebut menyertakan metode
update
, yang menunjukkan bahwa Anda dapat memperbarui set data menggunakan Deployment Manager.Beberapa API memiliki metode kustom untuk memperbarui resource-nya. Misalnya, Compute Engine menawarkan metode kustom untuk mengupdate metadata instance yang disebut
setMetadata
. Dalam kasus tersebut, Deployment Manager akan mencoba menggunakan metode kustom.Pastikan resource yang Anda perbarui dapat diubah.
Beberapa resource tidak dapat diubah setelah dibuat, dan tidak dapat diupdate. Untuk menentukan apakah resource tidak dapat diubah, lihat referensi API untuk resource tersebut. Biasanya, resource yang tidak dapat diubah tidak memiliki metode API
update
atau metode kustom untuk memperbarui properti resource.
Batasan
Untuk setiap deployment, Anda dapat menerapkan update satu per satu. Jika update sedang berlangsung, Anda harus menghentikan update saat ini sebelum memulai update baru.
Jika Anda mengubah resource dalam deployment tanpa menggunakan Deployment Manager, seperti di konsol Google Cloud atau
gcloud
, Anda mungkin akan melihat error atau masalah tak terduga saat mencoba mengubah resource dalam update.
Buat perubahan pada konfigurasi Anda
Jika Anda menyimpan konfigurasi yang ada, buat perubahan pada konfigurasi dan gunakan dalam permintaan pembaruan.
Jika Anda belum menyimpan konfigurasi yang ada, buat konfigurasi baru. Untuk mengetahui langkah-langkah pembuatan file konfigurasi, baca Konfigurasi.
Deployment Manager membandingkan konfigurasi yang Anda sediakan dalam permintaan update dengan manifes sebelumnya dan menggunakan perbedaannya untuk mengupdate deployment.
Misalnya, tabel berikut menampilkan dua konfigurasi: satu mendeskripsikan deployment yang ada dan satunya lagi menggambarkan status deployment terbaru yang diinginkan. Anda memberikan konfigurasi yang telah diupdate, dan Deployment Manager akan mengevaluasi perbedaannya serta melakukan update yang sesuai.
Contoh ini mengupdate resource instance yang ada untuk menyertakan beberapa metadata kustom dan juga menambahkan resource virtual machine baru ke deployment. Bagian yang dicetak tebal adalah perbedaan di antara template.
Template saat ini | Template yang diperbarui |
---|---|
resources: - name: vm-created-by-cloud-config type: compute.v1.instance properties: zone: us-central1-a machineType: machine-type-url disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: diskName: disk-created-by-cloud-config sourceImage: image-url networkInterfaces: - network: network-url |
resources: - name: vm-created-by-cloud-config type: compute.v1.instance properties: zone: us-central1-a machineType: machine-type-url disks: - deviceName: boot type: PERSISTENT boot: true initializeParams: diskName: disk-created-by-cloud-config sourceImage: image-url networkInterfaces: - network: network-url metadata: items: - key: 'foo' value: 'bar' - key: 'dev' value: 'vm' - name: a-new-vm type: compute.v1.instance properties: zone: us-central1-a machineType: machine-type-url - deviceName: boot type: PERSISTENT boot: true autoDelete: false initializeParams: diskName: a-new-vm-disk sourceImage: image-url networkInterfaces: - network: network-url |
(Opsional) Tentukan kebijakan yang akan digunakan untuk update
Selanjutnya, tentukan kebijakan yang ingin Anda gunakan untuk update. Kebijakan ini menentukan cara resource Anda diupdate saat Anda mengupdate deployment.
Deployment Manager menggunakan kebijakan default berikut:
- Kebijakan default untuk menambahkan resource adalah
CREATE_OR_ACQUIRE
. - Kebijakan default untuk menghapus resource adalah
DELETE
. - Kebijakan default untuk memperbarui resource adalah
UPDATE
.
Untuk mengetahui informasi tentang setiap kebijakan, tinjau bagian di bawah ini.
Kebijakan penambahan resource
Saat menambahkan resource, Anda dapat memilih untuk membuat resource baru dan menambahkannya ke deployment, atau Anda dapat memperoleh resource yang sudah ada:
CREATE_OR_ACQUIRE
- [Default] Deployment Manager memperoleh resource yang ada dalam project, atau membuat resource jika tidak ada. Untuk mendapatkan resource, Deployment Manager akan memeriksa konfigurasi resource untuk mengetahui properti yang ingin Anda buat. Jika ada resource dengan properti yang sama, Deployment Manager akan memperoleh resource tersebut sebagai bagian dari deployment Anda.Properti yang diperiksa oleh Deployment Manager bergantung pada jenis resource yang Anda buat, dan mungkin mencakup:
name
resourcetype
resourcezone
atauregion
resource, jika berlaku
Properti adalah bagian dari URL untuk permintaan API
GET
untuk resource. Guna melihat properti yang digunakan Deployment Manager untuk memperoleh resource, baca dokumentasi API untuk metodeGET
resource. Misalnya, untuk instance Compute Engine, URL permintaan untuk metodeinstances.get
menyertakanresourceId
(name
dalam konfigurasi Anda),zone
, danproject
.CREATE
- Deployment Manager membuat resource yang tidak ada. Jika salah satu resource dalam konfigurasi Anda sudah ada dalam project, deployment akan gagal.ACQUIRE
- Deployment Manager memperoleh resource yang sudah ada, menggunakan kriteria yang sama sepertiCREATE_OR_ACQUIRE
.Gunakan kebijakan
ACQUIRE
jika Anda sudah memiliki sejumlah resource di project, dan ingin mengelolanya bersama-sama, sebagai satu deployment.Di template atau konfigurasi, Anda harus menyediakan properti yang diperlukan untuk resource ini seolah-olah Anda sedang membuatnya. Jika salah satu resource dalam konfigurasi Anda tidak ada dalam project, deployment akan gagal.
Kebijakan penghapusan resource
Sediakan salah satu kebijakan berikut untuk menghapus resource:
DELETE
- [Default] Tindakan ini akan menghapus semua referensi ke resource dari deployment dan menghapus resource yang mendasarinya. Tindakan ini bersifat permanen dan tidak dapat diurungkan, tetapi Anda dapat membuat ulang resource baru dengan properti yang sama.ABANDON
- Tindakan ini akan menghapus referensi ke resource dari deployment, tetapi tidak menghapus resource yang mendasarinya. Misalnya, meninggalkan instance berarti dihapus dari deployment, tetapi instance tersebut masih ada untuk Anda gunakan.Kebijakan
ABANDON
hanya berlaku saat Anda menghapus seluruh resource, bukan saat menghapus properti resource, atau memperbarui resource dengan properti baru. Jika ingin mempertahankan properti resource, Anda harus menyertakan resource dengan semua properti aslinya dalam konfigurasi yang diperbarui. Jika menggunakan file konfigurasi baru untuk update Anda, sebaiknya salin definisi resource dari konfigurasi asli Anda.
Kebijakan untuk memperbarui resource yang ada
Jika metode UPDATE
tersedia untuk mengupdate resource yang sudah ada, Deployment Manager akan menggunakannya.
Sebaliknya, apabila ada metode khusus, Deployment Manager akan menggunakan metode khusus tersebut.
Deployment Manager mendukung metode kustom yang menggunakan kata kerja set
. Misalnya,
setMetadata()
adalah metode kustom yang valid, tetapi addAccessConfigs()
tidak.
(Opsional) Melihat pratinjau konfigurasi yang diperbarui
Anda dapat melihat pratinjau update yang ingin dilakukan sebelum melakukan perubahan apa pun, dengan Google Cloud CLI atau API. Layanan Deployment Manager menampilkan pratinjau konfigurasi dengan memperluas konfigurasi penuh dan membuat resource "shell".
Deployment Manager tidak membuat instance resource sebenarnya saat Anda melihat pratinjau konfigurasi, sehingga memberi Anda kesempatan untuk melihat deployment sebelum melakukan commit ke sana.
gcloud
Dengan Google Cloud CLI, buat permintaan update
dengan parameter --preview
:
gcloud deployment-manager deployments update example-deployment \
--config configuration-file.yaml \
--preview
API
Di API, buat permintaan PUT()
dengan deployment yang ada dan berikan parameter kueri preview=true
. Isi permintaan harus berisi kolom intent
, target
, dan
name
. Berikan nama deployment di URL dan isi permintaan.
Misalnya, permintaan API berikut mempratinjau update sederhana:
PUT https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment?preview=true
{
"target": {
"config": {
"content": "resources:\n- name: vm-created-by-cloud-config\n type: compute.v1.instance\n properties:\n zone: us-central1-a\n machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n disks:\n - deviceName: boot\n type: PERSISTENT\n boot: true\n autoDelete: true\n initializeParams:\n diskName: disk-created-by-cloud-config\n sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-9-stretch-v20180716\n networkInterfaces:\n - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"
}
},
"name": "example-deployment"
}
Setelah melihat pratinjau deployment, Anda dapat sepenuhnya men-deploy konfigurasi dengan membuat permintaan PUT()
yang sama, tanpa menghapus konfigurasi dan parameter kueri preview
. Deployment Manager menggunakan pratinjau terakhir Anda untuk melakukan update. Contoh:
gcloud deployment-manager deployments update example-deployment
Untuk mengetahui langkah-langkah dalam membuat permintaan pembaruan, lihat Membuat permintaan pembaruan.
Jika Anda memutuskan untuk tidak melanjutkan update, batalkan pratinjau saat ini sebelum membuat permintaan pratinjau atau update lainnya.
Membatalkan pratinjau
Setelah melihat pratinjau update, Anda harus memutuskan apakah ingin melanjutkan update. Jika Anda tidak ingin melanjutkan, atau jika Anda ingin menggunakan file konfigurasi yang berbeda untuk mengupdate deployment, batalkan pratinjau saat ini.
gcloud
Dengan Google Cloud CLI, buat permintaan deployments cancel-preview
:
gcloud deployment-manager deployments cancel-preview my-first-deployment
API
Di API, buat permintaan PUT()
ke metode cancelPreview
dan berikan sidik jari deployment terbaru. Sidik jari
adalah nilai yang dihasilkan secara acak yang berubah dengan setiap permintaan update. Untuk
mencegah error selama update, berikan sidik jari terbaru bersama
permintaan Anda.
Untuk mendapatkan sidik jari deployment terbaru, gunakan metode
get()
untuk mendapatkan
deployment, dan cari nilai sidik jari. Nilai sidik jari
akan terlihat seperti ini:
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
Permintaan cancelPreview()
Anda terlihat seperti ini:
POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment/cancelPreview
{
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
}
Membuat permintaan pembaruan
Untuk melakukan update:
gcloud
Dengan Google Cloud CLI, gunakan subperintah deployments update
, yang memberikan konfigurasi baru dan secara opsional, kebijakan update Anda.
gcloud deployment-manager deployments update my-first-deployment \
--create-policy POLICY \
--delete-policy POLICY
Jika sebelumnya Anda melihat pratinjau konfigurasi, hapus konfigurasi, dan Deployment Manager akan menggunakan konfigurasi yang terakhir dilihat pratinjaunya untuk melakukan update.
gcloud deployment-manager deployments update my-first-deployment
API
Di API, buat permintaan update
dan berikan sidik jari deployment terbaru. Sidik jari
adalah nilai yang dihasilkan secara acak yang berubah dengan setiap permintaan update. Untuk
mencegah error selama update, berikan sidik jari terbaru bersama
permintaan Anda.
Untuk mendapatkan sidik jari deployment terbaru, gunakan metode
get()
untuk mendapatkan
deployment, dan cari nilai sidik jari. Nilai sidik jari
akan terlihat seperti ini:
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
Selanjutnya, berikan sidik jari dalam permintaan Anda, beserta konfigurasi baru dan kebijakan update. Jika sebelumnya Anda melihat pratinjau konfigurasi, hapus kebijakan konfigurasi dan update, dan Deployment Manager akan menggunakan konfigurasi yang terakhir dilihat pratinjaunya untuk menjalankan update.
Berikan nama deployment di URL dan isi permintaan.
PUT https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment?createPolicy=ACQUIRE&deletePolicy=ABANDON
{
"target": {
"config": {
"content": "resources:\n- name: vm-created-by-cloud-config\n type: compute.v1.instance\n properties:\n zone: us-central1-a\n machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n disks:\n - deviceName: boot\n type: PERSISTENT\n boot: true\n autoDelete: true\n initializeParams:\n diskName: disk-created-by-cloud-config\n sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-9-stretch-v20180716\n networkInterfaces:\n - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"
}
},
"name": "example-deployment",
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
}
Menghentikan update
Anda dapat menghentikan update yang sedang berlangsung menggunakan stop()
.
Tindakan ini akan membatalkan progres lebih lanjut dari update tertentu, tetapi tidak membatalkan perubahan apa pun yang telah dilakukan.
Jika Anda mencoba membatalkan pratinjau, lihat bagian Membatalkan pratinjau.
gcloud
Dengan Google Cloud CLI, buat permintaan deployments stop
:
gcloud deployment-manager deployments stop my-first-deployment
API
Di API, buat permintaan POST()
ke
metode stop
dan berikan
properti sidik jari terbaru. Sidik jari adalah nilai yang dihasilkan secara acak
dan berubah dengan setiap permintaan update. Untuk mencegah perubahan
yang bertentangan, Anda harus memberikan sidik jari terbaru bersama permintaan, untuk
melakukan penguncian optimis sehingga hanya satu update yang dapat dilakukan pada satu waktu.
Untuk mendapatkan sidik jari deployment terbaru, gunakan metode
get()
untuk mendapatkan
deployment, dan cari nilai sidik jari. Nilai sidik jari
akan terlihat seperti ini:
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
Permintaan Anda akan terlihat seperti ini:
POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment/stop
{
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
}
Langkah selanjutnya
- Tambahkan label ke deployment Anda.
- Lihat manifes deployment Anda.