Mengelola Konfigurasi Layanan

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:

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:

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",
  ...
}