Halaman ini menjelaskan cara menggunakan Infrastruktur Layanan untuk melakukan peluncuran konfigurasi layanan secara bertahap.
Mengupdate konfigurasi layanan untuk layanan produksi berisiko dan berpotensi menyebabkan gangguan. Service Management API memungkinkan Anda meluncurkan perubahan konfigurasi secara bertahap, sehingga mengurangi dampak yang disebabkan oleh konfigurasi layanan yang buruk.
Anda dapat men-deploy beberapa versi konfigurasi layanan dan
menentukan cara versi ini akan digunakan saat runtime, semuanya melalui pemanggilan
metode services.rollouts.create
untuk memulai
Peluncuran.
Maksimal 5 konfigurasi layanan dapat diluncurkan sekaligus.
Sebelum memulai
Untuk menjalankan contoh dalam panduan ini, pastikan Anda terlebih dahulu mengikuti petunjuk untuk menyelesaikan penyiapan awal di Memulai Service Management API.
Melakukan peluncuran
Dengan asumsi Anda memiliki layanan terkelola
endpointsapis.appspot.com
yang dibuat di Service Management API, Anda dapat
melakukan langkah-langkah berikut untuk meluncurkan perubahan konfigurasi layanan dengan
cara bertahap dan terkontrol.
Misalnya, endpointsapis.appspot.com
saat ini menggunakan konfigurasi layanan old
, dan Anda ingin mengubahnya untuk menggunakan konfigurasi layanan new
. Daripada membuat konfigurasi layanan baru langsung digunakan oleh
semua traffic produksi, Anda dapat membuat peluncuran untuk menguji konfigurasi layanan
baru dengan 10% dari total traffic:
# Create rollout to test the new configuration with 10% traffic.
$ gcurl -d '{
"rolloutId": "canary-rollout",
"serviceName": "endpointsapis.appspot.com",
"trafficPercentStrategy": {
"percentages": {
"new": 10,
"old": 90
}
}
}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
"name": "operations/rollouts.endpointsapis.appspot.com:canary-rollout"
"metadata": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
"resourceNames": [
"services/endpointsapis.appspot.com/rollouts/canary-rollout"
],
"startTime": ...
},
"response": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
"rolloutId": "canary-rollout",
"createTime": ...
"trafficPercentStrategy": {
"percentages": {
"old": 90,
"new": 10,
}
},
"serviceName": "endpointsapis.appspot.com"
}
}
Setelah peluncuran dibuat, Anda dapat mendapatkan status peluncuran dengan menjalankan perintah berikut, dengan mengganti ID peluncuran Anda sendiri:
# Get rollout status of `operations/rollouts.endpointsapis.appspot.com:canary-rollout`.
$ gcurl https://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:canary-rollout
{
"name": "operations/rollouts.endpointsapis.appspot.com:canary-rollout",
"metadata": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
"resourceNames": [
"services/endpointsapis.appspot.com/rollouts/canary-rollout"
],
"steps": [
{
"description": "update Service Controller",
"status": "DONE"
}
],
"progressPercentage": 100,
"startTime": ...
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
"rolloutId": "canary-rollout",
"createTime": ...
"status": "SUCCESS",
"trafficPercentStrategy": {
"percentages": {
"old": 90,
"new": 10,
}
},
"serviceName": "endpointsapis.appspot.com"
}
}
Setelah memastikan peluncuran canary telah selesai dan konfigurasi layanan baru sudah baik, Anda dapat membuat peluncuran agar dapat menayangkan 100% traffic:
# Create rollout to let new configuration serve 100% traffic.
$ gcurl -d '{
"rolloutId": "full-rollout",
"serviceName": "endpointsapis.appspot.com",
"trafficPercentStrategy": {
"percentages": {
"new": 100,
}
}
}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
"name": "operations/rollouts.endpointsapis.appspot.com:full-rollout",
"metadata": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
"resourceNames": [
"services/endpointsapis.appspot.com/rollouts/full-rollout"
],
"startTime": ...
},
"response": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
"rolloutId": "full-rollout",
"createTime": ...
"trafficPercentStrategy": {
"percentages": {
"new": 100,
}
},
"serviceName": "endpointsapis.appspot.com"
}
}
Jika masalah teramati selama tahap pengujian, Anda dapat melakukan roll back ke konfigurasi lama dengan melakukan:
# Rollback to the old configuration.
$ gcurl -d '{
"rolloutId": "rollout-to-old",
"serviceName": "endpointsapis.appspot.com",
"trafficPercentStrategy": {
"percentages": {
"old": 100,
}
}
}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
"name": "operations/rollouts.endpointsapis.appspot.com:rollout-to-old",
"metadata": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
"resourceNames": [
"services/endpointsapis.appspot.com/rollouts/rollout-to-old"
],
"startTime": ...
},
"response": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
"rolloutId": "rollout-to-old",
"createTime": ...
"trafficPercentStrategy": {
"percentages": {
"old": 100,
}
},
"serviceName": "endpointsapis.appspot.com"
}
}
Melihat histori peluncuran
Service Management API menyimpan histori peluncuran. Untuk melihat histori peluncuran endpointsapis.appspot.com
, Anda dapat melakukan:
# List rollout history for `endpointsapis.appspot.com`.
$ gcurl https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/rollouts
{
"rollouts": [
{
"rolloutId": "canary-rollout",
"createTime": ...
"status": "IN_PROGRESS",
"trafficPercentStrategy": {
"percentages": {
"old": 90,
"new": 10
}
},
"serviceName": "endpointsapis.appspot.com"
},
{
"rolloutId": "old-rollout",
"createTime": ...
"status": "SUCCESS",
"trafficPercentStrategy": {
"percentages": {
"old": 100
}
},
"serviceName": "endpointsapis.appspot.com"
},
...
]
}