重要
Atlas Open Service Blog は非推奨です。代わりに、MongoDB Atlas演算子 を使用してください。
Atlas Open Service Blog を通じて Atlasデータベースユーザー を作成および削除できます。
前提条件
データベースユーザーの追加
データベースユーザーを作成するには、まずKubernetesでServiceBindingリソースを定義します。次に、Atlas Open Service Blog は Atlas に対応するデータベースユーザーを作成します。
必要な設定を構成します。
データベースユーザーを作成するには、強調表示された設定が必要です。
キー | 説明 | 例 |
|---|---|---|
| Kubernetes 内のサービス バインディング リソースの名前。 |
|
|
| |
| Atlas クラスターに対応する Kubernetes 内の |
|
データベースユーザーを作成すると、Atlas Open Service Blocker はユーザー用の Atlas ユーザー名とパスワードをランダムに生成します。 サービスカタログには、ユーザーの Atlas ユーザー名、パスワード、接続 URI が Kubernetes シークレットに自動的に保存されます。
追加設定を指定しない場合、データベースユーザーは次のデフォルト属性で作成されます。
SCRAM-SHAadminデータベースでの認証readWriteAnyDatabaseadminデータベースに対する権限
ユーザーの追加設定を追加します。
spec.parameters.user キーでユーザーの追加設定を構成できます。これらの設定は、 データベースユーザーのパブリックAPIメソッドのリクエスト本体のパラメーターに対応します。
重要
次のAPIパラメーターは、前のステップの必須 Atlas Open Service Blocker 設定によって上書きされるため、指定しないでください。
databaseNamegroupIdpasswordusername
例
このリソース定義の例では、次のものが作成されます。
atlas名前空間内のatlas-user-1と呼ばれる Kubernetes リソース、および次の構成を持つ Atlas データベースユーザー :
SCRAM-SHAランダムに生成されたユーザー名とパスワードを使用したadminデータベースでの認証readWritesample_airbnbデータベース上のlistingsAndReviewsコレクションに対する権限dbAdminsample_geospatialデータベースへの権限
apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: atlas-user-1 namespace: atlas spec: instanceRef: name: my-atlas-cluster parameters: user: roles: - databaseName: sample_airbnb collectionName: listingsAndReviews roleName: readWrite - databaseName: sample_geospatial roleName: dbAdmin
新しいユーザーのステータスを表示します。
Kubernetes クラスター内の新しいユーザーのステータスを表示するには、metadata.name からのreplica-set.yaml を次のコマンドに渡します。
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
ユーザーのステータスはBindingsの下に表示されます。
例
Bindings: NAME STATUS +---------------+--------+ atlas-user-1 Ready
ユーザーの詳細ビューを表示するには、metadata.name からのatlas-user-1.yaml を次のコマンドに渡します。
svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE>
コマンドは、ユーザーの詳細を返します。
例
Name: atlas-user-1 Namespace: atlas Status: Ready - Injected bind result @ 2019-08-24 20:57:43 +0000 UTC Secret: atlas-user-1 Instance: my-replica-set Parameters: user: roles: - collectionName: listingsAndReviews databaseName: sample_airbnb roleName: readWrite - databaseName: sample_geospatial roleName: dbAdmin Secret Data: password 44 bytes uri 58 bytes username 36 bytes
新しいユーザーの Atlas 接続の詳細を取得します。
ユーザーの接続の詳細は、 ServiceBindingリソースと同じ名前と名前空間を持つシークレットに保存されます。 シークレットは Kubernetes によって base64 でエンコードされ、Atlas のユーザー名、パスワード、ユーザーの URI が含まれています。
から
metadata.nameとmetadata.namespaceatlas-user-1.yamlを次のコマンドに渡して、ユーザーの Kubernetes シークレットを取得します。kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml このコマンドは、base64 でエンコードされた Atlas のパスワード、URI、およびユーザーのユーザー名を返します。
例
apiVersion: v1 data: password: MlFhTnB4NzNoaEYwZWFKFMCjRUlNU2Iwbk5OMnJPT0JGZnZOeldKMS16Zz0= uri: bW9uZ29kYitzcnY6Ly8wMTY5YjA5My1jNTEyLTExZTktOGQyMC1kbjZyNy5tb25nb2RiLXFhLm5ldA== username: NTJjMzVlNjctYzdhMy0xMWKR7ThkMjAtMDI0MmFjMTEwMDA3 kind: Secret metadata: creationTimestamp: "2019-08-26T01:46:30Z" name: atlas-user-1 namespace: atlas ownerReferences: - apiVersion: servicecatalog.k8s.io/v1beta1 blockOwnerDeletion: true controller: true kind: ServiceBinding name: atlas-user-1 uid: 52c35ea1-c7a3-11e9-8d20-0242ac113457 resourceVersion: "79692" selfLink: /api/v1/namespaces/atlas/secrets/atlas-user-1 uid: 14829566-4859-4b47-97f6-d0a2f7425906 type: Opaque シークレットから次のコマンドに
data.usernameを渡して、ユーザーの Atlas ユーザー名を復号化します。echo '<DATA.USERNAME>' | base64 --decode このコマンドは、デコードされた Atlas ユーザー名を返します。
例
52c35e67-c7a3-11e9-8d20-0374ac110007 data.passwordとdata.uriで コマンドを繰り返し、ユーザーの Atlas パスワードと URI を復号化します。echo '<DATA.PASSWORD>' | base64 --decode echo '<DATA.URI>' | base64 --decode
Tip
Atlas クラスターへの接続
配置に接続するには、デコードされた Atlas URI とユーザー名を次のコマンドに渡します。
mongo <DECODED_URI> --username <DECODED_USERNAME>
パスワードの入力を求められたら、ユーザーのデコードされた Atlas パスワードを入力します。
データベースユーザーの削除
データベースユーザーを削除するには、 ServiceBindingリソースから次のコマンドのいずれかにmetadata.nameを渡します。
kubectl delete servicebindings <METADATA.NAME> \ -n <METADATA.NAMESPACE>
ユーザーが削除されたことを確認するには、クラスター リソースから次のコマンドにmetadata.nameを渡します。
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
このコマンドは、No bindings defined の下にBindings を返します。