Docs 菜单

Docs 主页Atlas Open Service Broker

安装和配置 Atlas Open Service Broker

在此页面上

重要

Atlas Open Service Broker 已弃用。 使用 MongoDB Atlas 操作符 相反。

注意

本教程假定您对 Kubernetes 有一定的了解,但尽可能链接到相关的 Kubernetes 文档。 如果您不熟悉 Kubernetes,请先查看 Kubernetes 文档。

要安装 Atlas Open Service Broker,您必须:

  1. 为 Atlas 计费设置付款方式

  2. 创建一个将在其中部署集群的项目

  3. 拥有或生成编程 API 密钥。

    1. 为这个新的编程 API 密钥授予项目所有者角色。

    2. 将任何为 Atlas Open Service Broker 提供服务的主机的 IPCIDR区块添加到API 白名单中。

  1. 准备一个可用的 Kubernetes 解决方案。

    如果您需要 Kubernetes 解决方案,请参阅 Kubernetes 文档,了解如何选择正确的解决方案。

  2. 安装 Kubernetes Service Catalog

  3. 安装 Kubernetes Service Catalog CLI。

Atlas Open Service Broker 兼容:

  • Kubernetes v1.13 或更高版本

  • Kubernetes 服务目录 v0.2.1 或更高版本

当您创建 Atlas Open Service Broker 的实例时,您可以将其注册到 Kubernetes,作为集群范围的 clusterServiceBroker或命名空间范围的serviceBroker

有关集群范围和命名空间范围的代理使用案例的更多信息,请参阅 Kubernetes 服务目录文档。

注册为ClusterServiceBroker的 Atlas Open Service Broker 实例可供整个 Kubernetes 集群使用。 部署 Atlas 副本集或分片集群时,必须使用关联的clusterServiceClassclusterServicePlan资源。

注册为ServiceBroker的 Atlas Open Service Broker 实例仅可用于 Kubernetes 集群中的单个命名空间。 部署 Atlas 副本集或分片集群时,必须使用作用域为同一命名空间的serviceClassservicePlan资源。

创建 Atlas Open Service Broker 实例时,您可以部署:

  • 范围为整个 Kubernetes 集群的单个 Atlas Open Service Broker 实例,或

  • 多个 Atlas Open Service Broker 实例在 Kubernetes 集群中限定各自的命名空间

    重要

    如果选择部署多个 Atlas Open Service Broker 实例,请每个 命名空间 仅部署一个实例 。多个 Atlas Open Service Broker 实例无法在同一命名空间内相互协调。

要在 Kubernetes 中部署 Atlas Open Service Broker,请执行以下过程。

1

为了简化安装,请考虑使用以下atlas kubectl 创建一个标记为 的命名空间 命令:

kubectl create namespace atlas

如果您不想使用atlas命名空间,则可以为命名空间添加任何您喜欢的标签:

kubectl create namespace <NAMESPACE_NAME>
2
  1. 复制以下资源定义示例。

    这是一个YAML文件,您可以修改该文件以满足所需的配置。 它包括DeploymentService规范。

    注意

    该示例使用atlas-service-broker作为部署名称、服务名称和 Pod 标签。 只要跨资源保持一致,您就可以使用其他值更新这些字段。

    ---
    # Deployment to run the service broker.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: atlas-service-broker
    labels:
    app: atlas-service-broker
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: atlas-service-broker
    template:
    metadata:
    labels:
    app: atlas-service-broker
    spec:
    containers:
    - name: atlas-service-broker
    image: quay.io/mongodb/mongodb-atlas-service-broker:latest
    ports:
    - containerPort: 4000
    env:
    - name: BROKER_HOST
    value: "0.0.0.0"
    ---
    # Service to expose the service broker inside the cluster.
    apiVersion: v1
    kind: Service
    metadata:
    name: atlas-service-broker
    labels:
    app: atlas-service-broker
    spec:
    selector:
    # Will match pods deployed by the "atlas-service-broker" deployment.
    app: atlas-service-broker
    ports:
    - protocol: TCP
    port: 80
    targetPort: 4000
  2. 打开首选文本编辑器,将资源定义粘贴到新的文件中。

  3. 确认或编辑 Atlas Open Service Broker 服务器侦听的 container 端口。

    Resource
    环境变量
    说明
    默认
    Deployment
    spec.template.spec
    .containers.ports.containerPort

    Atlas Open Service Broker 服务器侦听的端口。

    必须与Service资源中的targetPort值匹配。

    4000
    Service
    spec.ports.targetPort

    Atlas Open Service Broker 服务器侦听的端口。

    必须与Deployment资源中的containerPort值匹配。

    4000
  4. 将文件另存为 deployment-and-service.yaml

3

使用以下 kubectl 命令:

kubectl apply -f deployment-and-service.yaml -n <NAMESPACE>
4

用于 Atlas Open Service Broker 创建或更新 对象 在您的 Atlas 项目中,您需要将编程 API 密钥和项目 ID 存储为 Kubernetes 密钥

同一个命名空间中可以存在多个密钥。

要创建 Kubernetes 密钥,请执行以下操作:

  1. 确保您具备以下条件:

    • 所需 Atlas 编程 API 密钥的公钥和私钥。

      如果您没有编程 API 密钥,请生成新的编程 API 密钥。

    • Atlas 项目的项目 ID

  2. 复制以下资源定义示例。

    这是一个YAML ,您可以修改它以满足所需的配置。

    apiVersion: v1
    kind: Secret
    metadata:
    name: <SECRET_NAME>
    type: Opaque
    stringData:
    username: <PUBLIC_KEY>@<PROJECT_ID>
    password: <PRIVATE_KEY>
  3. 编辑以下字段:

    字段名称
    说明
    stringData.username
    Atlas 公钥,后跟@和项目 ID。
    stringData.password
    您的 Atlas 私钥。

    usernamepassword用于针对 Atlas Open Service Broker 进行基本身份验证。

    例子

    apiVersion: v1
    kind: Secret
    metadata:
    name: atlas-service-broker-auth
    type: Opaque
    stringData:
    username: ABCAXNVY@5d49a272ce4bd97b2e1234abc
    password: 123e8d75-cxfb-x012-bx5c-abc4356e3xyz
  4. 将文件另存为 secret.yaml

  5. 调用以下 Kubernetes 命令来创建密钥:

    kubectl apply -f secret.yaml -n <NAMESPACE>

    -n标志限制了 命名空间 此密钥适用的对象。

  6. 调用以下 Kubernetes 命令来验证您的密钥:

    kubectl describe secrets/<SECRET_NAME> -n <NAMESPACE>

    此命令会在 Shell 中返回密钥描述:

    Name: <SECRET_NAME>
    Namespace: <NAMESPACE>
    Labels: <none>
    Annotations:
    Type: Opaque
    Data
    ====
    password: 36 bytes
    username: 36 bytes
5
  1. 复制以下资源定义示例。

    这是一个 YAML 文件,您可以根据所需配置进行修改。

    apiVersion: servicecatalog.k8s.io/v1beta1
    kind: <SERVICE_BROKER_SCOPE>
    metadata:
    name: atlas-service-broker
    spec:
    url: http://<SERVICE_NAME>.<NAMESPACE>
    authInfo:
    basic:
    secretRef:
    name: <SECRET_NAME>
    namespace: <NAMESPACE>
  2. 编辑以下字段:

    字段名称
    说明
    kind

    该值决定了 Atlas Open Service Broker 是可用于整个 Kubernetes 集群,还是仅可用于 Kubernetes 集群中的单个命名空间。 有关服务代理资源的更多信息,请参阅 服务目录文档。

    可能的值为:

    ServiceBroker
    部署仅适用于单个命名空间的 Atlas Open Service Broker。 所有 Atlas 集群都必须在与 Atlas Open Service Broker 相同的命名空间中预配。
    ClusterServiceBroker
    部署适用于整个 Kubernetes 集群的 Atlas Open Service Broker。 可以在任何命名空间中预配 Atlas 集群。
    spec.url

    代理的 URL,格式为http://<SERVICE_NAME>.<NAMESPACE>

    <SERVICE_NAME>Service资源中metadata.name的值。

    例子

    http://atlas-service-broker.atlas
    spec.authInfo
    .basic.secretRef.name
    您在上一步中创建的 Kubernetes 密钥的名称。
    spec.authInfo
    .basic.secretRef.namespace
    您的命名空间。
  3. 将文件另存为 service-broker.yaml

6

使用以下 kubectl 命令:

kubectl apply -f service-broker.yaml -n <NAMESPACE>
7
svcat get brokers -n <NAMESPACE>

该命令会返回代理的状态。 如果没有显示代理的状态,请等待片刻,然后再次调用该命令。

例子

以下示例显示了定义为ClusterServiceBroker的代理的状态。 由于此代理是在集群级别部署的,因此没有命名空间。

NAME NAMESPACE URL STATUS
+----------------------+-----------+-----------------------------------+--------+
atlas-service-broker http://atlas-service-broker.atlas Ready

如果代理的状态不是Ready ,请将metadata.nameservice-broker.yaml传递到以下命令以查看详细的错误消息:

svcat describe broker <METADATA.NAME> -n <NAMESPACE>

安装 Atlas Open Service Broker 后,您可以:

分享反馈
© 2023 MongoDB, Inc.

关于MongoDB

  • 招贤纳士
  • 投资者关系
  • 法律声明
  • 隐私条款
  • 安全信息
  • 信任中心
© 2023 MongoDB, Inc.