Docs Menu
Docs Home
/
Atlas オープン サービス ブロック

Atlas オープン サービス ブロードキャストのインストールと構成

重要

Atlas Open Service Blog は非推奨です。代わりに、MongoDB Atlas演算子 を使用してください。

注意

このチュートリアルでは Kubernetes に関するある程度の知識を前提としていますが、可能な場合は Kubernetes の関連ドキュメントにリンクします。 Kubernetes に詳しくない場合は、まず Kubernetes のドキュメント を確認してください。

Atlas Open Service Blog をインストールするには、以下の手順を実行する必要があります。

  1. Atlas 請求の支払い方法を設定します。

  2. クラスターを配置するプロジェクトを作成します。

  3. プログラマティック API キーを取得または生成します。

    1. この新しいプログラマティック API キーにプロジェクト オーナーのロールを付与します。

    2. Atlas Open Service ブロックを提供するホストの IPまたは CIDR ブロックをAPIホワイトリストに追加します。

  1. 使用可能な Kubernetes ソリューションを用意します。

    Kubernetesソリューションが必要な場合は、 適切なソリューションの選択 に関するKubernetes のドキュメントを参照してください。

  2. Kubernetes Service カタログ をインストールします。

  3. Kubernetes Service カタログ CLI をインストールします。

Atlas Open Service Blog は以下と互換性があります。

Atlas Open Service Blog のインスタンスを作成すると、それをクラスタースコープの clusterServiceBrokerまたは名前空間スコープのserviceBrokerとして Kubernetes に登録します。

クラスタースコープのサーバーと名前空間スコープのサーバーのユースケースの詳細については、Kubernetes Service カタログのドキュメント を参照してください。

ClusterServiceBrokerとして登録されている Atlas Open Service ブロック インスタンスは、Kubernetes クラスター全体で利用できます。 Atlas レプリカセットまたはシャーディングされたクラスターを配置する場合は、関連付けられているclusterServiceClass リソースとclusterServicePlan リソースを使用する必要があります。

ServiceBrokerとして登録されている Atlas Open Service ブロック インスタンスは、Kubernetes クラスター内の単一の名前空間でのみ使用できます。 Atlas レプリカセットまたはシャーディングされたクラスターを配置する場合は、同じ名前空間にスコープ設定されたserviceClassservicePlanリソースを使用する必要があります。

Atlas Open Service Blog のインスタンスを作成すると、以下を配置できます。

  • Kubernetes クラスター全体にスコープが設定された 1 つの Atlas Open Service Blog インスタンス、または

  • Kubernetes クラスター内の独自の名前空間にスコープ設定された複数の Atlas Open Service Blog インスタンス

    重要

    複数の Atlas Open Service Blog インスタンスを配置する場合は、名前空間ごとに 1 つのインスタンスのみを配置します。複数の Atlas Open Service Blog インスタンスは、同じ名前空間内で相互に調整することはできません。

Kubernetes に Atlas Open Service Blog を配置するには、次の手順に従います。

1

インストールを簡素化するために、次の kubectl コマンドを使用して atlas というラベルの付いた名前空間を作成することを検討してください。

kubectl create namespace atlas

atlas名前空間を使用しない場合は、名前空間に次のようにラベルを付けることができます。

kubectl create namespace <NAMESPACE_NAME>
2
  1. 次のリソース定義の例をコピーします。

    これは、必要な構成に合わせて変更できるYAMLファイルです。 これにはDeploymentServiceの両方の仕様が含まれます。

    注意

    この例では、配置名、サービス名、ポッド ラベルとしてatlas-service-brokerを使用しています。 リソース間で一貫している限り、これらのフィールドを他の値で更新できます。

    ---
    # 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 Blog サーバーがリッスンするコンテナ ポートを確認または編集します。

    Resource
    環境変数
    説明
    default

    Deployment

    spec.template.spec
    .containers.ports.containerPort

    Atlas Open Service Blog サーバーがリッスンするポート。

    Serviceリソース内のtargetPortの値と一致する必要があります。

    4000

    Service

    spec.ports.targetPort

    Atlas Open Service Blog サーバーがリッスンするポート。

    Deploymentリソース内のcontainerPortの値と一致する必要があります。

    4000

  4. ファイルをdeployment-and-service.yamlとして保存します。

3

次の kubernetes コマンドを使用します。

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

Atlas Open Service Blog が Atlas プロジェクト内のオブジェクトを作成または更新するには、 プログラマティックAPIキーとプロジェクトID をKubernetes secret として保存する必要があります。

複数のシークレットが同じ名前空間に存在できます。

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 Blog に対する基本認証に使用されます。

    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 Blog がKubernetesクラスター全体で使用できるか、 Kubernetesクラスター内の単一の名前空間のみで使用できるかが決まります。サービス カタログのドキュメントの詳細については、サービス カタログのドキュメント を参照してください。

    可能な値は次のとおりです。

    ServiceBroker

    スコープが 1 つの名前空間のみに設定されている Atlas Open Service Blog を配置します。 すべての Atlas クラスターは、Atlas Open Service Blog と同じ名前空間でプロビジョニングする必要があります。

    ClusterServiceBroker

    Kubernetes クラスター全体にスコープが設定された Atlas Open Service Blog を配置します。 Atlas クラスターは任意の名前空間でプロビジョニングできます。

    spec.url

    http://<SERVICE_NAME>.<NAMESPACE>形式のプロバイダーの URL。

    <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

次の kubernetes コマンドを使用します。

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.name からのservice-broker.yaml を次のコマンドに渡して、詳細なエラー メッセージを表示します。

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

Atlas Open Service Blog をインストールすると、次のことが可能になります。

  • 許可されたクラウド サービス プロバイダーとインスタンス サイズのホワイトリストを設定します。

  • レプリカセットまたはシャーディングされたクラスターを配置します。

  • データベースユーザーを作成します。