AWS 服務代理程式

AWS 服務代理程式會透過 Open Service Broker (OSB) 通訊協定公開 AWS 服務。這些文件是根據 AWS Service Broker 說明文件編寫。本文件將說明兩種安裝方式:

  1. 在 Kf Kubernetes 叢集中安裝 AWS Service Broker (建議)
  2. 在 AWS 中安裝 AWS Service Broker,並透過 VPC 橋接公開 API

事前準備

除了安裝 Kf 和 Service Catalog 的 Kubernetes 叢集 (請參閱這篇操作說明) 之外,您還必須在要使用 kf CLI 的工作站上安裝下列工具:

  1. helm:請按照這些操作說明安裝 helm CLI。

方法 1:在 GKE 中安裝

您可以使用 AWS Service Broker 的 Kubernetes 入門指南中的 Helm 資訊套件,部署 AWS Service Broker。

基礎架構

AWS 服務仲介需要 DynamoDB 資料表和 IAM 使用者才能存取資料表。最簡單的方法是部署提供的 CloudFormation 範本。如要手動安裝,請參閱必要條件說明文件

Helm

首先,請將 Helm 存放區新增至電腦:

$ helm repo add aws-sb https://awsservicebroker.s3.amazonaws.com/charts

接著部署 Helm 資訊套件,設定正確的 AWS accesskeyidsecretkey

$ helm install aws-sb/aws-servicebroker \
  --name aws-servicebroker \
  --namespace aws-sb \
  --set aws.secretkey=REPLACEME \
  --set aws.accesskeyid=REPLACEME

如果您不想在叢集範圍內安裝中介軟體,請設定標記 --set deployNamespacedServiceBroker=true,這樣系統就會將中介軟體註冊到已部署的命名空間。

如需設定參數的完整清單,請參閱 Helm 範本的 values.yaml 定義

驗證

部署 Helm 圖表後,系統應該會建立 ClusterServiceBroker 資源。您可以使用 kubectl 檢查:

$ kubectl get ClusterServiceBroker aws-servicebroker

NAME              URL                                                                    STATUS   AGE
aws-servicebroker https://aws-servicebroker-aws-servicebroker.aws-sb.svc.cluster.local   Ready    3d

如果 STATUS 尚未就緒,表示發生問題。排解問題時,請檢查以下事項:

  • DynamoDB 基礎架構已啟用
  • AWS 使用者可透過政策或群組存取 DynamoDB 資料表
  • Helm 資訊套件值設定正確

您的代管服務器可能需要幾分鐘的時間才能啟動並向 Service Catalog 註冊。一旦仲介服務註冊完成,您就可以使用 kf marketplace 指令查看提供的服務。

方法 2:在 AWS 中安裝

在 GKE 叢集中安裝 AWS 服務代理程式的缺點,是必須使用 AWS 使用者憑證,而非 AWS 角色。不過,假設 AWS Service Broker 的 API 可從 GKE 叢集存取,AWS Service Broker 與 Kf 搭配運作時,唯一必要的 Kubernetes 資源就是 ClusterServiceBroker。

有兩種方法可將 API 公開給 GKE 叢集:

  1. 您可以透過 Google Cloud 與 AWS 之間的 VPN 橋接存取 API。
  2. API 可供大眾存取 (不建議)

無論是哪種情況,我們強烈建議您使用信任的 TLS 憑證和存取憑證,保護 Service Broker 的 API。

當 API 可供存取時,請 kubectl apply ClusterServiceBroker 和 Kubernetes Secret,其中包含與 Service Broker 授權的憑證。

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
  name: aws-sb
spec:
  # For all configuration options, look at the service catalog's
  # type definitions:
  #  https://github.com/kubernetes-sigs/service-catalog/blob/master/pkg/apis/servicecatalog/v1beta1/types.go#L185
  url: https://replace.with.url.to.service.broker
  insecureSkipTLSVerify: false # use a trusted TLS certificate
  authInfo:
    bearer: # or basic
      secretRef:
        namespace: some-namespace
        name: some-secret-name