Setelah membuat deployment, Anda dapat memperbaruinya saat aplikasi atau layanan Anda berubah. Anda dapat menggunakan Deployment Manager untuk mengupdate deployment dengan:
- Menambahkan atau menghapus resource dari deployment.
- Memperbarui properti resource yang ada dalam deployment.
Satu update dapat berisi kombinasi perubahan ini. Misalnya, Anda dapat membuat perubahan pada properti resource yang ada dan menambahkan resource baru dalam permintaan yang sama. Anda memperbarui deployment dengan mengikuti langkah-langkah berikut:
- Buat perubahan pada atau buat file konfigurasi dengan perubahan yang Anda inginkan.
- Jika ingin, pilih kebijakan yang akan digunakan untuk update 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.
- Pahami cara membuat deployment.
Menyiapkan update
Sebelum mengupdate deployment, gunakan panduan ini untuk menyiapkan update:
Jika Anda memperbarui deployment untuk menambahkan resource baru ke project, periksa apakah resource sudah ada.
Secara default, jika resource yang ingin Anda tambahkan sudah ada di project Anda, resource tersebut akan diperoleh oleh deployment, tanpa membuat resource baru. Jika Anda tidak ingin mendapatkan resource yang ada, Anda harus mengubah kebijakan yang akan digunakan untuk update.
Untuk mengetahui informasi tentang kebijakan yang dapat Anda gunakan saat memperbarui deployment, lihat Kebijakan untuk menambahkan resource.
Jika Anda mengupdate deployment untuk mengganti resource, periksa dependensinya
Jika ingin mengganti resource dari deployment, Anda harus memastikan terlebih dahulu bahwa menghapusnya tidak menyebabkan siklus deployment. Siklus deployment terjadi saat 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
dibuat sebelumvm-a
. Namun,vm-depends-on
menggunakan referensi ke zona untukvm-a
, yang mengharuskanvm-a
dibuat sebelumvm-depends-on
. Dalam skenario seperti itu, dependensi berada dalam loop, dan deployment gagal.Jika Anda memiliki resource yang bergantung pada dan bergantung pada resource lain, mengganti resource tersebut dapat menyebabkan siklus deployment.
Misalnya, pertimbangkan deployment yang memiliki persistent disk bernama
disk-a
, VM bernamavm-a
, dan grup instance bernamaig-a
. Konfigurasi untukvm-a
mencakup referensi kedisk-a
, dan konfigurasi untukig-a
mencakup referensi kevm-a
. Dalam konfigurasi yang diperbarui, Anda ingin menghapusvm-a
dan menggantinya denganvm-b
. Dalam skenario tersebut, 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 Anda ganti, baik dengan menghapus klausa dependsOn, atau dengan menghapus atau mengubah referensi ke resource lain. Setelah Anda memperbarui deployment dengan perubahan ini, lakukan pembaruan lain untuk mengganti resource.
Hapus rantai resource dependen, dan perbarui deployment. Kemudian, pada update berikutnya, buat ulang resource yang ingin Anda gunakan.
Pastikan ada API dasar yang mendukung pembaruan Anda.
Deployment Manager menggunakan API setiap layanan untuk membuat dan mengubah deployment Anda. Untuk memeriksa apakah permintaan Anda dapat diselesaikan oleh Deployment Manager, tinjau dokumentasi API layanan Cloud Platform untuk resource yang ingin Anda perbarui.
Misalnya, jika Anda ingin memperbarui set data BigQuery di deployment, lihat metode yang tersedia di Referensi Datasets API. Metode ini mencakup 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 memperbarui 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 diperbarui. 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 satu update dalam satu waktu. Jika update sedang berjalan, Anda harus menghentikan update saat ini sebelum memulai update baru.
Jika Anda mengubah resource dalam deployment tanpa menggunakan Pengelola Penerapan, seperti di konsol Google Cloud atau
gcloud
, Anda mungkin melihat error atau masalah yang tidak terduga saat mencoba mengubah resource dalam update.
Melakukan perubahan pada konfigurasi Anda
Jika Anda menyimpan konfigurasi yang ada, lakukan perubahan pada konfigurasi dan gunakan konfigurasi tersebut dalam permintaan update Anda.
Jika Anda belum menyimpan konfigurasi yang ada, buat konfigurasi baru. Untuk mengetahui langkah-langkah membuat file konfigurasi, baca Konfigurasi.
Deployment Manager membandingkan konfigurasi yang Anda berikan dalam permintaan update dengan manifes sebelumnya dan menggunakan perbedaan tersebut untuk mengupdate deployment Anda.
Misalnya, tabel berikut menunjukkan dua konfigurasi: satu menjelaskan deployment yang ada dan satu menjelaskan status deployment yang diperbarui yang diinginkan. Anda memberikan konfigurasi yang diperbarui dan Deployment Manager mengevaluasi perbedaannya dan melakukan pembaruan yang sesuai.
Contoh ini memperbarui resource instance yang ada untuk menyertakan beberapa metadata kustom dan juga menambahkan resource mesin virtual baru ke deployment. Bagian yang dicetak tebal adalah perbedaan 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 menentukan cara resource Anda diperbarui saat Anda memperbarui 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.
Kebijakan untuk menambahkan resource
Saat menambahkan resource, Anda dapat memilih untuk membuat resource baru dan menambahkannya ke deployment atau mendapatkan resource yang sudah ada:
CREATE_OR_ACQUIRE
- [Default] Deployment Manager mendapatkan resource yang ada di project, atau membuat resource jika tidak ada. Untuk mendapatkan resource, Deployment Manager akan memeriksa konfigurasi Anda untuk mengetahui properti resource yang sedang Anda coba buat. Jika ada resource yang sudah ada dengan properti yang sama, Deployment Manager akan mendapatkan resource tersebut sebagai bagian dari deployment Anda.Properti yang diperiksa Deployment Manager bergantung pada jenis resource yang Anda buat, dan mungkin mencakup:
name
resourcetype
resourcezone
atauregion
resource, jika ada
Properti ini adalah bagian dari URL untuk permintaan API
GET
untuk resource. Untuk melihat properti yang digunakan Deployment Manager untuk mendapatkan resource, lihat dokumentasi API untuk metodeGET
resource. Misalnya, untuk instance Compute Engine, URL permintaan untuk metodeinstances.get
mencakupresourceId
(name
dalam konfigurasi Anda),zone
, danproject
.CREATE
- Deployment Manager membuat resource yang tidak ada. Jika salah satu resource dalam konfigurasi Anda sudah ada di project, deployment akan gagal.ACQUIRE
- Deployment Manager mendapatkan resource yang sudah ada, menggunakan kriteria yang sama sepertiCREATE_OR_ACQUIRE
.Gunakan kebijakan
ACQUIRE
jika Anda memiliki sejumlah resource yang sudah ada di project, dan ingin mengelolanya bersama-sama, sebagai satu deployment.Dalam template atau konfigurasi, Anda harus memberikan properti yang diperlukan untuk resource ini seolah-olah Anda sedang membuatnya. Jika ada resource dalam konfigurasi Anda yang tidak ada di project, deployment akan gagal.
Kebijakan untuk menghapus resource
Berikan salah satu kebijakan berikut untuk menghapus resource:
DELETE
- [Default] Opsi ini 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 semua referensi ke resource dari deployment, tetapi tidak menghapus resource yang mendasarinya. Misalnya, mengabaikan instance berarti instance tersebut dihapus dari deployment, tetapi instance tersebut masih ada untuk Anda gunakan.Kebijakan
ABANDON
hanya berlaku saat Anda menghapus seluruh resource, bukan saat Anda 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 Anda menggunakan file konfigurasi baru untuk update, sebaiknya salin definisi resource dari konfigurasi asli Anda.
Kebijakan untuk memperbarui resource yang ada
Jika ada metode UPDATE
untuk memperbarui resource yang ada, Deployment Manager akan menggunakannya.
Jika tidak, jika ada metode kustom, Deployment Manager akan menggunakan metode kustom.
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, dengan Google Cloud CLI atau API. Layanan Deployment Manager melihat pratinjau konfigurasi dengan meluaskan konfigurasi lengkap dan membuat resource "shell".
Deployment Manager tidak membuat instance resource apa pun saat Anda melihat pratinjau konfigurasi, sehingga Anda dapat melihat deployment sebelum melakukan penerapan.
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 melihat pratinjau 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 men-deploy konfigurasi sepenuhnya dengan membuat permintaan PUT()
yang sama, dengan menghilangkan 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 membuat permintaan update, lihat Membuat permintaan update.
Jika Anda memutuskan untuk tidak melanjutkan update, batalkan pratinjau saat ini sebelum membuat permintaan update atau pratinjau 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 lain untuk memperbarui 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 dibuat secara acak yang berubah dengan setiap permintaan pembaruan. Untuk mencegah error selama update, berikan sidik jari terbaru dengan permintaan Anda.
Untuk mendapatkan sidik jari terbaru dari deployment, gunakan metode
get()
untuk mendapatkan
deployment, lalu cari nilai sidik jari. Nilai sidik jari
akan terlihat seperti ini:
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
Permintaan cancelPreview()
Anda akan terlihat seperti ini:
POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment/cancelPreview
{
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
}
Membuat permintaan update
Untuk melakukan update:
gcloud
Dengan Google Cloud CLI, gunakan subperintah deployments update
, berikan 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 tersebut 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 dibuat secara acak yang berubah dengan setiap permintaan pembaruan. Untuk mencegah error selama update, berikan sidik jari terbaru dengan permintaan Anda.
Untuk mendapatkan sidik jari terbaru dari deployment, gunakan metode
get()
untuk mendapatkan
deployment, lalu cari nilai sidik jari. Nilai sidik jari
akan terlihat seperti ini:
"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
Selanjutnya, berikan sidik jari dalam permintaan Anda, beserta dengan konfigurasi baru dan kebijakan update Anda. Jika sebelumnya Anda telah melihat pratinjau konfigurasi, hapus konfigurasi dan kebijakan update, dan Deployment Manager akan menggunakan konfigurasi yang terakhir dilihat pratinjaunya untuk melakukan 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()
.
metode. Tindakan ini membatalkan progres lebih lanjut dari update tertentu, tetapi tidak
mengurungkan perubahan 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 dibuat secara acak
yang berubah dengan setiap permintaan pembaruan. Untuk mencegah perubahan yang bertentangan, Anda harus memberikan sidik jari terbaru bersama permintaan Anda, untuk melakukan penguncian optimis sehingga hanya satu pembaruan yang dapat dilakukan dalam satu waktu.
Untuk mendapatkan sidik jari terbaru dari deployment, gunakan metode
get()
untuk mendapatkan
deployment, lalu 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 berikutnya
- Tambahkan label ke deployment Anda.
- Lihat manifes deployment Anda.