AWS 服務代理程式會透過 Open Service Broker (OSB) 通訊協定公開 AWS 服務。這些文件是根據 AWS Service Broker 說明文件編寫。本文件將說明兩種安裝方式:
- 在 Kf Kubernetes 叢集中安裝 AWS Service Broker (建議)
- 在 AWS 中安裝 AWS Service Broker,並透過 VPC 橋接公開 API
事前準備
除了安裝 Kf 和 Service Catalog 的 Kubernetes 叢集 (請參閱這篇操作說明) 之外,您還必須在要使用 kf
CLI 的工作站上安裝下列工具:
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 accesskeyid
和 secretkey
:
$ 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 叢集:
- 您可以透過 Google Cloud 與 AWS 之間的 VPN 橋接存取 API。
- 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