クイック スタート
項目一覧
- 前提条件
- 手順
- Atlas アカウントを登録するか、ログインします。
- 組織の API キーを作成します。
- Atlas Kubernetes Operatorの配置。
- API キーと組織 ID を使用してシークレットを作成します。
-
AtlasProject
カスタム リソースを作成します。 AtlasDeployment
カスタム リソースを作成します。- Atlas クラスター データベースにログインするためのパスワードを使用してシークレットを作成します。
AtlasDatabaseUser
カスタム リソースを作成します。- データベースユーザーのステータスを確認します。
- Atlas Kubernetes Operator がクラスターに接続するために作成したシークレットを取得します。
Atlas Kubernetes Operator を使用すると、Kubernetes を離れることなく Atlas 内のリソースを管理できます。 このチュートリアルでは、Atlas Kubernetes Operator を使用して、Kubernetes 構成ファイルから Atlas に最初のクラスターを作成する方法を説明します。
注意
Helm を使用して を開始することをおすすめしますか。
Atlas Kubernetes Operator を使用して Helm Charts から Atlas に最初のクラスターを作成するには、「 Helm Charts クイック スタート 」を参照してください。
前提条件
このチュートリアルには次のものが必要です。
x86-64、AMD64、または ARM64 アーキテクチャで実行中のプロセッサを含む実行中の Kubernetes クラスター。
jq
1.6 以上
のAtlas Kubernetes Operator プロジェクトにアクセスできます。Github
Atlas Kubernetes Operatorを使用してAtlas CLI をインストールするには、次のコマンドを実行します。
atlas kubernetes operator install [options]
コマンド構文とパラメータの詳細については、Atlas CLI Atlas Kubernetes Operatorのインストール の ドキュメントを参照してください。
手順
重要
カスタム リソースはデフォルトでオブジェクトを削除しなくなりました
Atlas Kubernetes Operator はカスタムリソース構成ファイルを使用して Atlas2.0 構成を管理しますが、 Atlas Kubernetes Operator 以降、 Kubernetesで削除したカスタム リソースは Atlas で削除されなくなりました(デフォルトでは )。代わりに、Atlas Kubernetes Operator は Atlas 内のそれらのリソースの管理を停止します。例、 Kubernetesで カスタム リソースを削除すると、デフォルトでは、Atlas Kubernetes Operator
AtlasProject
は Atlas から対応するプロジェクトを自動的に削除しなくなります。この動作の変更は、誤ってまたは予期せずに削除されるのを防ぐことを目的としています。この動作を Atlas Kubernetes Operator2 0より前に使用されていたデフォルトに戻す方法などの詳細については、 をご覧ください。 については、「 新しいデフォルト: Atlas Kubernetes Operator の削除保護 」を参照してください。20 。同様に、Atlas Kubernetes Operator を使用してKubernetesの Atlasプロジェクトからチームを削除しても、Atlas Kubernetes Operator は Atlas からチームを削除しません。
デフォルトの Atlas 構成値が暗黙的に使用されるのを避けるために、必要な構成の詳細を明示的に定義します。場合によっては、Atlas のデフォルトを継承すると調整ループが発生し、カスタムリソースが
READY
状態に達しなくなります。例、含まれている例に示すように、AtlasDeployment
カスタムリソースで必要なオートスケーリング動作を明示的に定義すると、カスタムリソース内の静的インスタンスサイズが、オートスケーリングが有効になっている Atlas 配置に繰り返し適用されないことが保証されます。autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
Atlas アカウントを登録するか、ログインします。
新しい Atlas アカウントを登録するか、 Atlas アカウントにログインします 。
組織の API キーを作成します。
注意
Atlas Kubernetes Operator から Atlas へのアクセスを構成するには、次の公開 API キー、プライベート API キー、および組織 ID 情報が必要です。
組織へのプログラムによるアクセスを付与し、 API Access Listを構成します。
Atlas Kubernetes Operator から Atlas へのアクセスを構成するには、次の公開 API キー、プライベート API キー、および組織 ID 情報が必要です。
Atlas Kubernetes Operator で新しい Atlasプロジェクトを作成する場合は、 組織へのプログラムによるアクセスの付与 。組織で Atlas Administration APIのIP アクセス リストが必要な場合は、 APIアクセス リストも設定する必要があります。
重要
API キーには、 Organization Project Creator組織ロール以上を割り当てる必要があります。
既存の Atlasプロジェクトを操作する場合は、 プロジェクトからプロジェクト アクセスを追加 します。組織で Atlas Administration APIのIP アクセス リストが必要な場合は、 APIアクセス リストも設定する必要があります。
重要
Project Ownerプロジェクト ロールに API キーを割り当てる必要があります。
Atlas Kubernetes Operatorの配置。
次のいずれかのシナリオでは、 <version>
を最新のリリース番号に置き換えます。
Atlas Kubernetes Operator ですべての 名前空間 を監視する場合 Kubernetes クラスターで、次のコマンドを実行します。
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/all-in-one.yaml Atlas Kubernetes Operator が 名前空間 のみを監視する場合 に設定されている構成ファイルは、 ディレクトリからインストールする必要があります。
deploy/namespaced
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/namespaced/crds.yaml kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/namespaced/namespaced-config.yaml
API キーと組織 ID を使用してシークレットを作成します。
シークレット を作成してラベルを付けるには、 は、API キーと組織 ID を使用して次のコマンドを実行します。
kubectl create secret generic mongodb-atlas-operator-api-key \ --from-literal="orgId=<atlas_organization_id>" \ --from-literal="publicApiKey=<atlas_api_public_key>" \ --from-literal="privateApiKey=<atlas_api_private_key>" \ -n mongodb-atlas-system
kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system
外部のシークレット ストレージを使用する場合、 機密 情報を Kubernetes secret に直接配置する必要はありません。 。詳細については、「シークレット ストレージの構成 」を参照してください。
AtlasProject
カスタムリソース を作成します。
次のコマンドを実行して、 AtlasProject
カスタム リソースを作成します。
注意
次の例えではspec.connectionSecretRef.name
を指定していません。 指定されていない場合、Atlas Kubernetes Operator はデフォルトの接続 シークレット を使用します 以前に API キーと組織 ID で設定されたもの
Atlas Kubernetes Operator カスタム リソースを配置します。
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Atlas Operator Project projectIpAccessList: - ipAddress: <your-ip-address-range> comment: "Adding your IP to Atlas access list" EOF
AtlasDeployment
カスタムリソース を作成します。
次のいずれかのコマンドを実行してAtlasDeployment
カスタム リソースを作成し、クラスターを作成します。
有料階層:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-atlas-cluster spec: projectRef: name: my-project deploymentSpec: clusterType: REPLICASET name: "Test-cluster" tags: - key: "environment" value: "production" replicationSpecs: - zoneName: US-Zone regionConfigs: - electableSpecs: instanceSize: M10 nodeCount: 3 providerName: AWS regionName: US_EAST_1 priority: 7 EOF
無料階層:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-atlas-cluster spec: projectRef: name: my-project deploymentSpec: clusterType: REPLICASET name: "Test-cluster" replicationSpecs: - regionConfigs: - regionName: US_EAST_1 providerName: TENANT backingProviderName: AWS electableSpecs: instanceSize: M0 nodeCount: 3 EOF
サーバーレスインスタンスを作成するには、「 サーバーレスインスタンスの例」を参照してください。
Atlas クラスター データベースにログインするためのパスワードを使用してシークレットを作成します。
P@@ssword%
をパスワードに置き換え、次のコマンドを実行します。
kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
外部のシークレット ストレージを使用する場合、 機密 情報を Kubernetes secret に直接配置する必要はありません。 。詳細については、「シークレット ストレージの構成 」を参照してください。
AtlasDatabaseUser
カスタムリソース を作成します。
次のコマンドを実行して、 AtlasDatabaseUser
カスタム リソースを作成します。
注意
spec.passwordSecretRef
は、過去に作成したパスワードを参照する必要があります。
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password EOF
データベースユーザーのステータスを確認します。
データベースユーザーが準備できたことを示すTrue
応答が返されるまで、次のコマンドを実行します。
注意
AtlasDatabaseUser
カスタム リソースはクラスターが準備ができるまで待機します。 新しいクラスターの作成には最大 10 分かかります。
kubectl get atlasdatabaseusers my-database-user -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
Atlas Kubernetes Operator がクラスターに接続するために作成したシークレットを取得します。
次のコマンドをコピーします。
重要
次のコマンドには
jq
1.6 以上が必要です。kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)'; 次のプレースホルダーをカスタム リソースの詳細に置き換えます。
my-project
AtlasProject
カスタム リソースのmetadata
フィールドの値を指定します。my-atlas-cluster
AtlasDeployment
カスタム リソースのmetadata
フィールドの値を指定します。my-database-user
AtlasDatabaseUser
カスタム リソースのmetadata
フィールドの値を指定します。コマンドを実行します。
注意
接続文字列は次の例とは異なります。
{ "connectionStringStandard": "mongodb://theuser:P%40%40sword%25@test-cluster-shard-00-00.peqtm.mongodb.net:27017,test-cluster-shard-00-01.peqtm.mongodb.net:27017,test-cluster-shard-00-02.peqtm.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-pk82fl-shard-0", "connectionStringStandardSrv": "mongodb+srv://theuser:P%40%40sword%25@test-cluster.peqtm.mongodb.net", "password": "P@@sword%", "username": "theuser" } この シークレット を使用できます アプリケーション内の次のことを行います。
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: test-atlas-operator-project-test-cluster-theuser key: connectionStringStandardSrv