探索及使用 GCP 服務

總覽

您可以使用 Kubernetes Service Catalog 列出可透過 Google Cloud Platform (GCP) 服務代理程式提供的服務、佈建服務執行個體,以及將佈建的服務執行個體繫結至在 Google Kubernetes Engine 叢集中執行的應用程式。

如要使用這項功能,您必須先安裝 Service Catalog 並註冊服務代理程式。

如要進一步瞭解 Service Catalog,請參閱 Kubernetes Service Catalog 說明文件

探索 Google Cloud Platform 服務與方案

服務代理程式提供數種 GCP 服務,包括 Pub/Sub、Cloud SQL (MySQL)、Cloud Storage、Cloud Spanner 及其他服務。每種服務可提供一或多個「服務方案」,而每個服務方案皆代表不同的服務設定或服務級別。

列出服務

svcat

如要列出目前可用的 GCP 服務,請執行下列指令:

svcat get classes

這個指令會輸出與以下內容相似的清單:

            NAME                       DESCRIPTION                             UUID
+---------------------------+--------------------------------+--------------------------------------+
  cloud-spanner               The first horizontally           4197a602-3eb9-4d40-8e21-0311a7a8eecb
                              scalable, strongly consistent,
                              relational database service
  cloud-iam-service-account   Specialized service which        5dcd0ba6-8df6-4a2a-b5fd-981d0aa76803
                              provisions Google Cloud
                              Platform IAM service accounts.
  cloud-pubsub                Ingest event streams from        6f4e8d17-4fde-45bd-9dcf-28bcb7eeea5c
                              anywhere, at any scale, for
                              simple, reliable, real-time
                              stream analytics
  ...                         ...                              ...

kubectl

如要列出目前可用的 GCP 服務,請執行 kubectl get clusterserviceclasses 指令:

kubectl -o 'custom-columns=SERVICE-NAME:.metadata.name,SERVICE-EXTERNAL-NAME:.spec.externalName' get clusterserviceclasses

這個指令會輸出與以下內容相似的清單:

SERVICE-NAME                           SERVICE-EXTERNAL-NAME
4197a602-3eb9-4d40-8e21-0311a7a8eecb   cloud-spanner
5dcd0ba6-8df6-4a2a-b5fd-981d0aa76803   cloud-iam-service-account
6f4e8d17-4fde-45bd-9dcf-28bcb7eeea5c   cloud-pubsub
...                                    ...

主控台 UI

如要查看目前可用的 Google Cloud 服務清單,可採取下列其中一種做法:

列出服務方案

svcat

您也可以列出可用的服務方案:

svcat get plans

這個指令會以下列格式輸出清單:

  NAME             CLASS                      DESCRIPTION                             UUID
+------+---------------------------+--------------------------------+--------------------------------------+
  beta   cloud-spanner               Cloud Spanner plan for Beta      21198c77-9452-4bf2-8935-babacc8294cb
                                     release of the Google Cloud Platform Service Broker
  beta   cloud-iam-service-account   A GCP IAM      d6f98382-a101-401f-80df-33afe9c4b5c7
                                     service account
  beta   cloud-pubsub                Pub/Sub plan for Beta release    444fe472-aabc-4c8a-a707-1975e2e908c8
                                     of the Google Cloud Platform Service Broker
  ...    ...                         ...                              ...

kubectl

您也可以列出可用的服務方案:

kubectl -o 'custom-columns=PLAN-NAME:.metadata.name,PLAN-EXTERNAL-NAME:.spec.externalName,CLASS:.spec.clusterServiceClassRef.name' get clusterserviceplans

這個指令會以下列格式顯示清單:

PLAN-NAME                              PLAN-EXTERNAL-NAME   CLASS
21198c77-9452-4bf2-8935-babacc8294cb   beta                 4197a602-3eb9-4d40-8e21-0311a7a8eecb
444fe472-aabc-4c8a-a707-1975e2e908c8   beta                 6f4e8d17-4fde-45bd-9dcf-28bcb7eeea5c
7bb7e217-2088-4455-8298-f711b09b1806   beta                 8e0bbfa6-2cac-40b6-8adf-e5ee8dcbe4e8
...                                    ...                  ...

主控台 UI

您可以前往 Google Cloud Console 的服務執行個體頁面,然後按一下清單中的服務名稱,即可查看特定服務適用的服務方案清單。顯示的頁面會提供服務總覽及可用方案和說明的清單。

查看服務方案

svcat

如要針對特定服務查看方案的詳細資料,包含佈建和繫結參數等資訊在內,您可以使用下列指令:

svcat describe plan [CLASS_NAME]/[PLAN_NAME]

例如,輸入 svcat describe plan cloud-pubsub/beta

  Name:          beta
  Description:   Pub/Sub plan for the Beta release of the Google Cloud Platform Service Broker
UUID: 444fe472-aabc-4c8a-a707-1975e2e908c8 Status: Active Free: false Class: cloud-pubsub Instances: No instances defined Instance Create Parameter Schema: ...

kubectl

如要查看特定服務的方案,包含佈建和繫結參數等詳細資料在內,請搭配可用服務方案清單中的 PLAN-NAME (GUID) 來使用下列指令:

kubectl get clusterserviceplans [PLAN_NAME] -o yaml

例如,kubectl get clusterserviceplans 444fe472-aabc-4c8a-a707-1975e2e908c8 -o yaml 會以 YAML 格式輸出方案的詳細資料:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServicePlan
metadata:
  creationTimestamp: 2018-04-11T18:09:30Z
  name: 444fe472-aabc-4c8a-a707-1975e2e908c8
  resourceVersion: "280"
  selfLink: /apis/servicecatalog.k8s.io/v1beta1/clusterserviceplans/444fe472-aabc-4c8a-a707-1975e2e908c8
  uid: 7b2f013c-3db3-11e8-b262-0a580a140108
spec:
  bindable: true
  clusterServiceBrokerName: gcp-beta
  clusterServiceClassRef:
    name: 6f4e8d17-4fde-45bd-9dcf-28bcb7eeea5c
  description: |
    Pub/Sub plan for the Beta release of the Google Cloud Platform Service Broker
  externalID: 444fe472-aabc-4c8a-a707-1975e2e908c8
  externalMetadata:
    bullets:
    - Provisioning an instance will create a new pubsub topic
    - Binding will grant the provided service account with access on the pubsub topic
    displayName: Cloud Pub/Sub
  externalName: beta
  free: false
  instanceCreateParameterSchema:
  ...

主控台 UI

您可以前往 Google Cloud Console 的服務執行個體頁面,然後按一下清單中的服務名稱,即可查看特定服務適用的服務方案清單。顯示的頁面會提供服務總覽及可用方案的清單。

查看服務方案的 JSON 結構定義

編寫用於佈建及繫結的 YAML 設定時,您可能會想要查看服務方案的 JSON 結構定義。

svcat

如要查看服務方案的 JSON 結構定義,您可以使用下列指令:

svcat describe plan [CLASS_NAME]/[PLAN_NAME]

例如,輸入 svcat describe plan cloud-pubsub/beta


  Name:          beta
  Description:   Pub/Sub plan for the Beta release of the Google Cloud Platform Service Broker
UUID: 444fe472-aabc-4c8a-a707-1975e2e908c8 Status: Active Free: false Class: cloud-pubsub

Instances: No instances defined

Instance Create Parameter Schema: $schema: http://json-schema.org/draft-04/schema# definitions: {} description: Input parameters to create an instance - a Pubsub topic. form:

  • key: topicId validationMessage: 'Must be 3-255 characters, start with an alphanumeric character, and contain only the following characters: letters, numbers, dashes, periods, underscores, tildes, percents or plus signs. Cannot start with goog.' properties: topicId: description: A user-specified Pubsub topic ID. maxLength: 255 minLength: 3 pattern: ^[A-Za-z][-_.~+%A-Za-z0-9]+$ title: Topic name type: string required:
  • topicId type: object ...

Instance Create Parameter Schema 為佈建作業所用的 JSON 結構定義。在本範例中,您必須指定 topicId,這是必要欄位。

同樣地,您在 Binding Create Parameter Schema 也可以查看繫結的 JSON 結構定義。

kubectl

如要查看服務方案的 JSON 結構定義,請搭配 PLAN-NAME (GUID) 來使用下列指令:

kubectl get clusterserviceplans [PLAN_NAME] -o yaml

例如,輸入 kubectl get clusterserviceplans 444fe472-aabc-4c8a-a707-1975e2e908c8 -o yaml

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServicePlan
metadata:
  creationTimestamp: 2018-04-11T18:09:30Z
  name: 444fe472-aabc-4c8a-a707-1975e2e908c8
  resourceVersion: "280"
  selfLink: /apis/servicecatalog.k8s.io/v1beta1/clusterserviceplans/444fe472-aabc-4c8a-a707-1975e2e908c8
  uid: 7b2f013c-3db3-11e8-b262-0a580a140108
spec:
  ...
  instanceCreateParameterSchema:
    $schema: http://json-schema.org/draft-04/schema#
    definitions: {}
    description: Input parameters to create an instance - a Pubsub topic.
    form:
    - key: topicId
      validationMessage: 'Must be 3-255 characters, start with an alphanumeric character,
        and contain only the following characters: letters, numbers, dashes, periods,
        underscores, tildes, percents or plus signs. Cannot start with goog.'
    properties:
      topicId:
        description: A user-specified Pubsub topic ID.
        maxLength: 255
        minLength: 3
        pattern: ^[A-Za-z][-_.~+%A-Za-z0-9]+$
        title: Topic name
        type: string
    required:
    - topicId
    type: object
...

instanceCreateParameterSchema 為佈建作業所用的 JSON 結構定義。在本範例中,您必須指定 topicId,這是必要欄位。

同樣地,您在 serviceBindingCreateParameterSchema 也可以查看繫結的 JSON 結構定義。

主控台 UI

我們目前不會在您的 Google Cloud Console 中顯示 JSON 結構定義,請使用 kubectlsvcat

使用 Google Cloud Platform 服務

如要在 GKE 叢集中使用 GCP 服務,您必須先佈建服務的執行個體,然後繫結服務與執行個體。建立繫結會將存取服務執行個體的適當權限授予應用程式使用的服務帳戶。繫結作業也會以 Kubernetes 密鑰的形式,將存取執行個體的必要資訊提供給應用程式使用。

佈建執行個體

Service Catalog 透過 Open Service Broker API 與服務代理程式進行通訊,並藉此佈建新的 Google Cloud 服務資源。

svcat

使用下列 svcat 指令來佈建新的服務執行個體:

svcat provision [NAME] --class [CLASS_NAME] --plan [PLAN_NAME] (--namespace [NAMESPACE] --param [KEY1]=[VALUE1] --param [KEY2]=[VALUE2] ...)

您可以透過下列指令來檢查執行個體的狀態:

svcat get instance [NAME] (--namespace [NAMESPACE])

kubectl

建立名為 service_instance_spec.yamlServiceInstance YAML 檔案,這個檔案會用來佈建新的服務執行個體。

以下是 ServiceInstance YAML 規格的範例:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: [SERVICE_INSTANCE_NAME]  # example: gcp-pubsub-instance
  namespace: [NAMESPACE]         # example: pubsub-app-namespace
spec:
  # References one of the previously returned services
  clusterServiceClassExternalName: [GCP_SERVICE_NAME]  # example: cloud-pubsub
  clusterServicePlanExternalName: [SERVICE_PLAN_NAME]  # example: beta
  parameters:
    [KEY1]: [VALUE1]
    ...

執行 kubectl 指令,使用 YAML 檔案建立服務執行個體:

kubectl create -f service_instance_spec.yaml

執行下列指令以確認佈建作業是否成功:

kubectl get -f service_instance_spec.yaml -o 'custom-columns=INSTANCE-NAME:.metadata.name,SERVICE:.spec.clusterServiceClassExternalName,PLAN:.spec.clusterServicePlanExternalName,STATUS:.status.conditions[0].reason'

主控台 UI

  • 服務類別頁面顯示的可用服務清單中,針對您要建立執行個體的服務,按一下該服務旁的 [Configure instance] (設定執行個體) 按鈕。
  • 填寫「建立服務執行個體」表單。您必須指定:

    • 服務執行個體的名稱。
    • 您想在當中使用這項服務的叢集。
    • 服務方案,為服務的提供級別。
    • 服務執行個體可在其中進行繫結的命名空間。
    • (選用) 其他的服務專用參數。
  • 按一下表單底端的 [Save] (儲存) 按鈕,完成服務執行個體的建立作業。您接著會回到服務執行個體頁面,新執行個體會與其他使用中的服務執行個體一同顯示在該頁面的清單中。

服務執行個體準備就緒後,您就可以繫結至該執行個體。

繫結至執行個體

如要取得服務帳戶,您可以採取下列其中一種做法:

透過建立繫結,服務代理程式會將權限/角色授予指定的服務帳戶,並傳回連線及存取執行個體的必要資訊。做為服務帳戶的應用程式將因此而取得服務執行個體的存取權。

svcat

使用下列 svcat 指令來繫結至現有的服務執行個體:

svcat bind [INSTANCE_NAME] (--namespace [NAMESPACE] --param [KEY1]=[VALUE1] --param [KEY2]=[VALUE2] ...)

這會建立與服務執行個體同名稱的繫結。您可以使用下列指令檢查繫結的狀態:

svcat get binding [NAME] (--namespace [NAMESPACE])

kubectl

使用下列規格,建立名為 service_binding_spec.yamlServiceBinding YAML 資源檔案:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: [SERVICE_BINDING_NAME]     # example: gcp-pubsub-binding
  namespace: [NAMESPACE]           # example: pubsub-app-namespace
spec:
  instanceRef:
    name: [SERVICE_INSTANCE_NAME]  # example: gcp-pubsub-instance
  parameters:
    [KEY1]: [VALUE1]
    ...

執行 kubectl 指令,使用 YAML 檔案建立服務繫結:

kubectl create -f service_binding_spec.yaml

執行下列指令以確認繫結作業是否成功:

kubectl get -f service_binding_spec.yaml -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

主控台 UI

  • 前往服務執行個體頁面,並按一下您要進行繫結的服務執行個體名稱,隨即會顯示含有服務執行個體詳細資料的頁面。按一下頁面底端的 [Create binding] (建立繫結) 按鈕。

  • 填寫「建立服務繫結至...」表單。您必須指定:

    • 服務繫結的名稱。
    • 儲存繫結資訊的 Kubernetes 密鑰名稱,請在此處使用與繫結相同的名稱。
    • (選用) 其他的服務專用參數。
  • 按一下表單底端的「儲存」按鈕,完成服務繫結的建立作業。您接著會回到服務執行個體詳細資料頁面,新繫結會與其他使用中的服務繫結一同顯示在該頁面的清單中。

在服務執行個體的命名空間中,繫結作業會建立與繫結同名稱的密鑰。這個密鑰包含代理程式傳回的連線資訊,因此應用程式可以使用該密鑰連線至服務執行個體。

清除所用資源

刪除服務執行個體和繫結

如要避免系統向您的 GCP 帳戶收取上述步驟中所用資源的費用,請刪除服務執行個體和繫結。

svcat

  1. 使用下列 svcat 指令來解除服務執行個體的繫結:

    svcat unbind [INSTANCE_NAME] (--namespace [NAMESPACE])

    這項指令將會刪除服務執行個體的所有繫結。

  2. 取消佈建服務執行個體:

    svcat deprovision [NAME] (--namespace [NAMESPACE])
  3. 檢查服務執行個體是否已成功刪除:

    svcat get instances [NAME] (--namespace [NAMESPACE])

    如果服務執行個體已不存在,您應該會看到 unable to get instance 錯誤。

kubectl

  1. 執行 kubectl 指令,使用 service_binding_spec.yaml 刪除服務繫結:

    kubectl delete -f service_binding_spec.yaml
  2. 使用 service_instance_spec.yaml 取消佈建服務執行個體:

    kubectl delete -f service_instance_spec.yaml
  3. 確認服務執行個體是否已成功刪除:

    kubectl get -f service_instance_spec.yaml

    如果服務執行個體已不存在,您應該會看到 NotFound 錯誤。

主控台 UI

  1. 前往服務執行個體頁面,並按一下您要解除繫結的服務執行個體名稱,隨即會顯示含有服務執行個體詳細資料的頁面。在頁面底端,按一下您要刪除的繫結旁的 [trash] (垃圾桶) 按鈕。

  2. 在確認對話方塊中,按一下 [DELETE] (刪除) 按鈕。服務繫結的狀態會變更為 Unbinding

  3. 在服務執行個體詳細資料頁面的頂端,按一下 [DELETE] (刪除) 按鈕,然後在確認對話方塊中按一下 [DELETE] (刪除) 按鈕。您接著會回到服務執行個體清單頁面。

  4. 重新整理服務執行個體清單頁面,並檢查該服務執行個體是否已成功刪除。

只要服務執行個體已不存在,就表示服務執行個體和繫結的清除作業已完成。

(選用) 解除安裝 Service Catalog 和服務代理程式

如果您決定不繼續使用其他任何的 Service Catalog 範例,可以解除安裝 Service Catalog 和服務代理程式。

  1. 使用 sc 安裝程式工具將服務代理程式取消註冊:

    sc remove-gcp-broker

    如果指令成功,則會輸出下列訊息:

    The Service Broker removed successfully.
  2. 從 Kubernetes 叢集中將 Service Catalog 解除安裝:

    sc uninstall

    如果指令成功,則會輸出下列訊息:

    deleting service catalog configs...
    uninstalled service catalog successfully
    

(選用) 刪除 Kubernetes 叢集

如要避免產生費用,請按照 Kubernetes 教學課程的說明刪除不需要的叢集。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件