Setelah membuat deployment, Anda dapat mengupdatenya saat aplikasi atau layanan 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 apa pun dari perubahan ini. Misalnya, Anda dapat membuat perubahan pada properti resource yang ada dan menambahkan resource baru dalam permintaan yang sama. Anda dapat mengupdate 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 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.
- 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 tersebut sudah ada.
Secara default, jika resource yang ingin Anda tambahkan sudah ada dalam project, resource tersebut akan diperoleh oleh deployment, tanpa membuat resource baru. Jika tidak ingin memperoleh resource yang ada, Anda harus mengubah kebijakan yang akan digunakan untuk update.
Untuk informasi tentang kebijakan yang dapat Anda gunakan 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 memastikan terlebih dahulu bahwa penghapusannya 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
mewajibkanvm-depends-on
harus dibuat sebelumvm-a
. Namun,vm-depends-on
menggunakan referensi ke zona untukvm-a
, yang mengharuskanvm-a
harus 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
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 tersebut, me-resolve 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 update lain untuk mengganti resource.
Hapus rantai resource dependen, dan perbarui deployment. Kemudian, dalam update berikutnya, buat ulang resource yang ingin Anda gunakan.
Pastikan ada API dasar yang mendukung update Anda.
Deployment Manager menggunakan API dari 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 dalam deployment, lihat metode yang tersedia di referensi Datasets API. Metode ini mencakup metode
update
, yang menunjukkan bahwa Anda dapat mengupdate 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
update
API atau metode kustom untuk memperbarui properti resource.
Batasan
Untuk setiap deployment, Anda dapat menerapkan satu update pada satu waktu. Jika update sudah berjalan, 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 melihat error atau masalah yang tidak terduga saat mencoba mengubah resource dalam update.
Melakukan perubahan pada konfigurasi
Jika Anda menyimpan konfigurasi yang ada, buat perubahan pada konfigurasi dan gunakan dalam permintaan pembaruan Anda.
Jika Anda tidak memiliki konfigurasi yang tersimpan, buat konfigurasi baru. Untuk mengetahui langkah-langkah membuat file konfigurasi, baca Konfigurasi.
Pengelola Deployment membandingkan konfigurasi yang Anda berikan dalam permintaan update dengan manifes sebelumnya dan menggunakan perbedaan tersebut untuk mengupdate deployment.
Misalnya, tabel berikut menunjukkan dua konfigurasi: satu menjelaskan deployment yang ada dan satu lagi menjelaskan status deployment yang diperbarui yang diinginkan. Anda memberikan konfigurasi yang diperbarui dan Deployment Manager mengevaluasi perbedaan dan melakukan update yang sesuai.
Contoh ini memperbarui resource instance yang ada untuk menyertakan beberapa metadata kustom dan juga menambahkan resource virtual machine 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 ini menentukan cara resource diperbarui 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 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 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 Anda untuk properti resource yang Anda coba buat. Jika ada resource yang sudah ada dengan properti yang sama, Deployment Manager akan mengakuisisi resource tersebut sebagai bagian dari deployment Anda.Properti yang diperiksa Deployment Manager bergantung pada jenis resource yang Anda buat, dan dapat 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 memperoleh resource, lihat 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 mengakuisisi resource yang sudah ada, menggunakan kriteria yang sama denganCREATE_OR_ACQUIRE
.Gunakan kebijakan
ACQUIRE
jika Anda memiliki sejumlah resource yang sudah ada dalam project, dan ingin mengelolanya bersama, sebagai satu deployment.Dalam template atau konfigurasi, Anda harus memberikan properti yang diperlukan untuk resource ini seolah-olah Anda membuatnya. Jika salah satu resource dalam konfigurasi Anda tidak ada dalam project, deployment akan gagal.
Kebijakan untuk menghapus resource
Berikan 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 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 awal Anda.
Kebijakan untuk memperbarui resource yang ada
Jika metode UPDATE
ada untuk mengupdate 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 apa pun, dengan Google Cloud CLI atau API. Layanan Deployment Manager akan melihat pratinjau konfigurasi dengan memperluas konfigurasi lengkap dan membuat resource "shell".
Deployment Manager tidak membuat instance resource sebenarnya saat Anda melihat pratinjau konfigurasi, sehingga Anda dapat melihat deployment sebelum melakukan commit.
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 dalam isi permintaan.
Misalnya, permintaan API berikut melihat pratinjau pembaruan 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 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 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 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 pembaruan. Untuk
mencegah error selama update, berikan sidik jari terbaru dengan
permintaan Anda.
Untuk mendapatkan sidik jari terbaru deployment, gunakan
metode get()
untuk mendapatkan deployment, dan 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 pembaruan
Untuk melakukan update:
gcloud
Dengan Google Cloud CLI, gunakan subperintah deployments update
, yang menyediakan 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 terakhir yang 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 pembaruan. Untuk
mencegah error selama update, berikan sidik jari terbaru dengan
permintaan Anda.
Untuk mendapatkan sidik jari terbaru deployment, 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 dan kebijakan update baru. Jika sebelumnya Anda melihat pratinjau konfigurasi, hapus konfigurasi dan perbarui kebijakan, dan Deployment Manager akan menggunakan konfigurasi terakhir yang dilihat pratinjaunya untuk melakukan update.
Berikan nama deployment di URL dan dalam 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
mengembalikan 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 dihasilkan secara acak
yang berubah dengan setiap permintaan update. Untuk mencegah perubahan
yang bertentangan, Anda harus memberikan sidik jari terbaru dengan permintaan Anda, untuk
melakukan penguncian optimis sehingga hanya satu pembaruan yang dapat dilakukan dalam satu waktu.
Untuk mendapatkan sidik jari terbaru deployment, 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.