重要
Atlas Open Service Blog は非推奨です。代わりに、MongoDB Atlas演算子 を使用してください。
注意
このチュートリアルでは Kubernetes に関するある程度の知識を前提としていますが、可能な場合は Kubernetes の関連ドキュメントにリンクします。 Kubernetes に詳しくない場合は、まず Kubernetes のドキュメント を確認してください。
前提条件
Atlas の前提条件
Atlas Open Service Blog をインストールするには、以下の手順を実行する必要があります。
Atlas 請求の支払い方法を設定します。
この新しいプログラマティック API キーにプロジェクト オーナーのロールを付与します。
Atlas Open Service ブロックを提供するホストの IPまたは CIDR ブロックをAPIホワイトリストに追加します。
Kubernetes の前提条件
使用可能な Kubernetes ソリューションを用意します。
Kubernetesソリューションが必要な場合は、 適切なソリューションの選択 に関するKubernetes のドキュメントを参照してください。
Kubernetes Service カタログ をインストールします。
Kubernetes Service カタログ CLI をインストールします。
Considerations
Kubernetes の互換性
Atlas Open Service Blog は以下と互換性があります。
Kubernetes v1.13 以降
Kubernetes Service カタログ v0.2.1 またはそれ以降
Atlas オープン サービス ブロックのスコープ
Atlas Open Service Blog のインスタンスを作成すると、それをクラスタースコープの clusterServiceBrokerまたは名前空間スコープのserviceBrokerとして Kubernetes に登録します。
クラスタースコープのサーバーと名前空間スコープのサーバーのユースケースの詳細については、Kubernetes Service カタログのドキュメント を参照してください。
ClusterServiceBroker
ClusterServiceBrokerとして登録されている Atlas Open Service ブロック インスタンスは、Kubernetes クラスター全体で利用できます。 Atlas レプリカセットまたはシャーディングされたクラスターを配置する場合は、関連付けられているclusterServiceClass リソースとclusterServicePlan リソースを使用する必要があります。
ServiceBroker
ServiceBrokerとして登録されている Atlas Open Service ブロック インスタンスは、Kubernetes クラスター内の単一の名前空間でのみ使用できます。 Atlas レプリカセットまたはシャーディングされたクラスターを配置する場合は、同じ名前空間にスコープ設定されたserviceClassとservicePlanリソースを使用する必要があります。
複数の Atlas オープン サービス ブロック インスタンス
Atlas Open Service Blog のインスタンスを作成すると、以下を配置できます。
Kubernetes クラスター全体にスコープが設定された 1 つの Atlas Open Service Blog インスタンス、または
Kubernetes クラスター内の独自の名前空間にスコープ設定された複数の Atlas Open Service Blog インスタンス
重要
複数の Atlas Open Service Blog インスタンスを配置する場合は、名前空間ごとに 1 つのインスタンスのみを配置します。複数の Atlas Open Service Blog インスタンスは、同じ名前空間内で相互に調整することはできません。
Atlas Open Service Triggers のインストール
Kubernetes に Atlas Open Service Blog を配置するには、次の手順に従います。
Kubernetes配置用の名前空間を作成します。
インストールを簡素化するために、次の kubectl コマンドを使用して atlas というラベルの付いた名前空間を作成することを検討してください。
kubectl create namespace atlas
atlas名前空間を使用しない場合は、名前空間に次のようにラベルを付けることができます。
kubectl create namespace <NAMESPACE_NAME>
Deployment と Service のリソース定義を作成します。
次のリソース定義の例をコピーします。
これは、必要な構成に合わせて変更できるYAMLファイルです。 これには
DeploymentとServiceの両方の仕様が含まれます。注意
この例では、配置名、サービス名、ポッド ラベルとして
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 テキスト エディターを開き、リソース定義を新しいテキスト ファイルに貼り付けます。
Atlas Open Service Blog サーバーがリッスンするコンテナ ポートを確認または編集します。
Resource環境変数説明defaultDeploymentspec.template.spec.containers.ports.containerPortAtlas Open Service Blog サーバーがリッスンするポート。
Serviceリソース内のtargetPortの値と一致する必要があります。4000Servicespec.ports.targetPortAtlas Open Service Blog サーバーがリッスンするポート。
Deploymentリソース内のcontainerPortの値と一致する必要があります。4000ファイルを
deployment-and-service.yamlとして保存します。
Atlas Open Service ブロックをインストールします。
次の kubernetes コマンドを使用します。
kubectl apply -f deployment-and-service.yaml -n <NAMESPACE>
Kubernetes シークレットを作成します。
Atlas Open Service Blog が Atlas プロジェクト内のオブジェクトを作成または更新するには、 プログラマティックAPIキーとプロジェクトID をKubernetes secret として保存する必要があります。
複数のシークレットが同じ名前空間に存在できます。
Kubernetes シークレットを作成するには
以下があることを確認してください。
目的の Atlas プログラマティック API キーの公開キーと秘密キー。
プログラマティックAPIキーをお持ちでない場合は、新しいプログラマティックAPIキーを生成してください。
AtlasプロジェクトのプロジェクトID 。
次のリソース定義の例をコピーします。
これは、必要な構成に合わせて変更できるYAMLです。
apiVersion: v1 kind: Secret metadata: name: <SECRET_NAME> type: Opaque stringData: username: <PUBLIC_KEY>@<PROJECT_ID> password: <PRIVATE_KEY> 次のフィールドを編集します。
フィールド名説明stringData.usernameAtlas 公開鍵、
@とプロジェクト ID が続きます。stringData.passwordAtlas 秘密キー。
usernameとpasswordは、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 ファイルを
secret.yamlとして保存します。次の Kubernetes コマンドを呼び出してシークレットを作成します。
kubectl apply -f secret.yaml -n <NAMESPACE> -nフラグは、このシークレットが適用される名前空間を制限します。次の 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
サービス プロバイダーのリソース定義を作成します。
次のリソース定義の例をコピーします。
これは、必要な構成に合わせて変更できる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> 次のフィールドを編集します。
フィールド名説明kindこの値により、Atlas Open Service Blog がKubernetesクラスター全体で使用できるか、 Kubernetesクラスター内の単一の名前空間のみで使用できるかが決まります。サービス カタログのドキュメントの詳細については、サービス カタログのドキュメント を参照してください。
可能な値は次のとおりです。
ServiceBrokerスコープが 1 つの名前空間のみに設定されている Atlas Open Service Blog を配置します。 すべての Atlas クラスターは、Atlas Open Service Blog と同じ名前空間でプロビジョニングする必要があります。
ClusterServiceBrokerKubernetes クラスター全体にスコープが設定された Atlas Open Service Blog を配置します。 Atlas クラスターは任意の名前空間でプロビジョニングできます。
spec.urlhttp://<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名前空間。
ファイルを
service-broker.yamlとして保存します。
Atlas Open Service Blog をサービスカタログに登録
次の kubernetes コマンドを使用します。
kubectl apply -f service-broker.yaml -n <NAMESPACE>
サービスカタログ CLI を使用して、Atlas オープン サービス ブロックのステータスを確認します。
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 をインストールすると、次のことが可能になります。
許可されたクラウド サービス プロバイダーとインスタンス サイズのホワイトリストを設定します。