AWS Service Broker 通过 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 是使用 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 accesskeyid
和 secretkey
:
$ 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 集群:
- 该 API 可通过 Google Cloud 和 AWS 之间的 VPN 网桥访问
- 该 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