AWS Service Broker

AWS Service Broker 通过 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 是使用 AWS Service Broker Kubernetes 入门指南中的 Helm 图表部署的。

基础架构

AWS Service Broker 需要通过 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

如果您不希望 Broker 安装在集群范围内,请设置 --set deployNamespacedServiceBroker=true 标志,该标志会将 Broker 注册到已部署的命名空间中。

如需查看完整的配置参数列表,请参阅 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 图表值已正确设置

您的 Broker 可能需要几分钟的时间才会出现并自行注册 Service Catalog。注册 Broker 后,您可以使用 kf marketplace 命令查看提供的服务。

方法 2:在 AWS 中安装

在 GKE 集群中安装 AWS Service Broker 的缺点是必须使用 AWS 用户凭据,而不是 AWS 角色。但是,AWS Service Broker 与 Kf 配合使用所需的唯一 Kubernetes 资源是 ClusterServiceBroker(假设 AWS Service Broker 的 API 可从 GKE 集群访问)。

API 可以通过两种方法公开给 GKE 集群:

  1. 该 API 可通过 Google Cloud 和 AWS 之间的 VPN 网桥访问
  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