En esta página, se describe cómo administrar las configuraciones de servicios con Service Infrastructure.
Una configuración de servicio es una especificación que describe diferentes aspectos de un servicio administrado.
Los métodos de la API de Service Management generalmente implicados en la administración de las configuraciones de servicios son los siguientes:
- Usar
services.configs.create
oservices.configs.submit
para enviar configuraciones de servicio - Usar
services.configs.list
yservices.configs.get
para recuperar configuraciones de servicio - Usar
services.generateConfigReport
para obtener un informe de cambios entre dos configuraciones de servicio
Antes de comenzar
Para ejecutar los ejemplos en esta guía, asegúrate de seguir primero las instrucciones para completar la configuración inicial en Comienza a usar la API de Service Management.
Envía archivos fuente de configuración de servicio
Para actualizar tu configuración de servicio, debes enviar una lista de archivos de origen de configuración de servicio a la API de Administración de servicios y el servidor los compilará en una configuración de servicio validada.
Los archivos fuente pueden tener los siguientes formatos:
- OpenAPI v2
- Descriptor de Protocol Buffers
google.api.Service
en formato JSON o YAML
La API de Service Management no toma archivos .proto
, debes generar descriptores protobuf a partir de tus archivos .proto
antes de enviarlos.
Puedes usar el siguiente comando para generar los archivos descriptores:
$ protoc hello.proto --include_source_info --include_imports --descriptor_set_out=service.descriptors *.proto
La forma recomendada de enviar los archivos fuente de la configuración del servicio es usar gcloud CLI.
$ gcloud auth login
$ gcloud endpoints services deploy [a list of service configuration source files]
También puedes llamar directamente a la API de Service Management para enviar archivos de origen. Por ejemplo, si tienes esta definición de OpenAPI (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"
}
}
}
}
}
Puedes realizar la siguiente llamada a la API para enviar la especificación de 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.",
...
}
Genera informes de configuraciones de servicios
Antes de enviar una nueva versión de configuración del servicio, es posible que desee llamar al método services.generateConfigReport
para obtener un informe de los cambios con respecto a una versión de configuración del servicio existente. Puede especificar la versión que se usará para la comparación mediante el campo old_config
en la solicitud, o simplemente puede omitir este campo para generar un informe en el que se realice una comparación con la última versión de configuración del servicio.
Si suponemos que el archivo de configuración nuevo de OpenAPI se llama hello.json
, puedes ejecutar el siguiente comando:
$ 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
Si deseas generar un informe para una versión de configuración específica, puedes ejecutar:
# 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
Obtén versiones de configuraciones de servicios anteriores
La API de Administración de servicios conserva un historial de versiones de las configuraciones de servicio enviadas. Puede enumerarlas o recuperar una versión específica mediante los métodos services.configs.list
o services.configs.get
, como lo ilustran los siguientes comandos:
# 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",
...
}