Halaman ini menjelaskan cara mengelola konfigurasi layanan menggunakan Infrastruktur Layanan.
Konfigurasi layanan adalah spesifikasi yang menjelaskan berbagai aspek layanan terkelola.
Metode Service Management API yang biasanya digunakan dalam mengelola konfigurasi layanan adalah:
- Menggunakan
services.configs.create
atauservices.configs.submit
untuk mengirimkan konfigurasi layanan. - Menggunakan
services.configs.list
danservices.configs.get
untuk mengambil konfigurasi layanan. - Menggunakan
services.generateConfigReport
untuk mendapatkan laporan perubahan antara dua konfigurasi layanan.
Sebelum memulai
Untuk menjalankan contoh dalam panduan ini, pastikan Anda terlebih dahulu mengikuti petunjuk untuk menyelesaikan penyiapan awal di artikel Mulai Menggunakan Service Management API.
Mengirimkan file sumber konfigurasi layanan
Untuk mengupdate konfigurasi layanan, Anda harus mengirimkan daftar file sumber konfigurasi layanan ke Service Management API, dan server akan mengompilasinya menjadi konfigurasi layanan yang divalidasi.
File sumber dapat memiliki format berikut:
- OpenAPI v2
- Deskriptor Buffering Protokol
google.api.Service
dalam format JSON atau YAML
Service Management API tidak mengambil file .proto
, Anda perlu
membuat deskripsi protobuf dari file .proto
sebelum mengirimkannya.
Anda dapat menggunakan perintah berikut untuk membuat file deskriptor:
$ protoc hello.proto --include_source_info --include_imports --descriptor_set_out=service.descriptors *.proto
Cara yang direkomendasikan untuk mengirimkan file sumber konfigurasi layanan adalah menggunakan gcloud CLI.
$ gcloud auth login
$ gcloud endpoints services deploy [a list of service configuration source files]
Anda juga dapat memanggil Service Management API secara langsung untuk mengirim file
sumber. Misalnya, jika Anda memiliki definisi OpenAPI ini (hello.json
):
{
"swagger": "2.0",
"info": {
"title": "Hello Endpoints API.",
"description": "Hello Endpoints API.",
"version": "v1"
},
"host": "endpointsapis.appspot.com",
"schemes": ["https"],
"paths": {
"/v1/hello": {
"get": {
"tags": ["endpointsapis"],
"operationId": "GetHello",
"description": "Returns \"Hello\" with given name in the response.",
"parameters": [
{
"name": "name",
"description": "Name to be greeted.",
"in": "query",
"type": "string"
}
],
"responses": {
"default": {
"description": "Successful operation",
"schema": {
"$ref": "#/definitions/GetHelloResponse"
}
}
}
}
}
},
"definitions": {
"GetHelloResponse": {
"description": "Response message for GetHello method.",
"type": "object",
"properties": {
"response": {
"description": "String of \"Hello \" + `name` provided in the request.",
"type": "string"
}
}
}
}
}
Anda dapat melakukan panggilan API berikut untuk mengirimkan spesifikasi OpenAPI:
$ gcurl -d "
{
'serviceName': 'endpointsapis.appspot.com',
'configSource':
{
'files': [
{
'fileContents': '$(base64 hello.json | sed ':a;N;$!ba;s/\n//g')',
'fileType': 'OPEN_API_JSON',
'filePath': 'hello.json',
}
]
}
}" https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/configs:submit
{
"name": "operations/serviceConfigs.endpointsapis.appspot.com:a7651c15-9017-4274-b065-d644cc337847",
"metadata": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
"resourceNames": [
"services/endpointsapis.appspot.com/configs/2016-07-29r10"
],
"startTime": "2016-07-29r10T23:59:21.081Z",
"persisted": true
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.api.servicemanagement.v1.SubmitConfigSourceResponse",
"serviceConfig": {
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API.",
...
}
Membuat laporan konfigurasi layanan
Sebelum mengirimkan versi konfigurasi layanan baru, sebaiknya Anda
memanggil metode services.generateConfigReport
untuk mendapatkan laporan perubahan yang terkait dengan versi konfigurasi
layanan yang ada. Anda dapat menentukan versi yang akan dibandingkan menggunakan
kolom old_config
dalam permintaan, atau cukup lewati kolom ini untuk
membuat laporan terhadap versi konfigurasi layanan terbaru.
Dengan asumsi file konfigurasi OpenAPI baru disebut hello.json
, Anda dapat
menjalankan perintah berikut:
$ gcurl -d "
{
'newConfig':
{
'@type': 'type.googleapis.com/google.api.servicemanagement.v1.ConfigSource',
'files': [
{
'fileContents': '$(base64 hello.json | sed ':a;N;$!ba;s/\n//g')',
'fileType': 'OPEN_API_JSON',
'filePath': 'hello.json',
}
],
}
}" https://servicemanagement.googleapis.com/v1/services:generateConfigReport
Jika ingin membuat laporan untuk versi konfigurasi tertentu, Anda dapat menjalankan:
# Generate config report for the local configration from `/tmp/hello.json`
# and the configration version `2016-07-29r10`.
$ gcurl -d "
{
'newConfig':
{
'@type': 'type.googleapis.com/google.api.servicemanagement.v1.ConfigSource',
'files': [
{
'fileContents': '$(base64 hello.json | sed ':a;N;$!ba;s/\n//g')',
'fileType': 'OPEN_API_JSON',
'filePath': 'hello.json',
}
],
},
'oldConfig':
{
'@type': 'type.googleapis.com/google.api.servicemanagement.v1.ConfigRef',
'name': 'services/endpointsapis.appspot.com/configs/2016-07-29r10'
}
}" https://servicemanagement.googleapis.com/v1/services:generateConfigReport
Mendapatkan versi konfigurasi layanan sebelumnya
Service Management API menyimpan histori versi konfigurasi layanan yang dikirim. Anda dapat mencantumkannya atau mengambil versi tertentu menggunakan
metode
services.configs.list
atau
services.configs.get
, seperti yang diilustrasikan oleh perintah berikut:
# List the service configuration history for a managed service.
$ gcurl https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/configs
{
"serviceConfigs": [
{
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API",
"id": "2016-07-16r1",
...
},
{
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API",
"id": "2016-07-16r0",
...
}
]
}
# Get a specific version of the service configuration for a managed service.
$ gcurl https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/configs/2016-07-16r0
{
"name": "endpointsapis.appspot.com",
"title": "Hello Endpoints API",
"id": "2016-07-16r0",
...
}