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 はカスタム リソース構成ファイルを使用して Atlas 構成を管理しますが、Atlas Kubernetes Operator 2.0 以降では、Kubernetes で削除したカスタム リソースは Atlas では削除されなくなりました。 代わりに、Atlas Kubernetes Operator はそれらのリソースの管理を停止します。 たとえば、Kubernetes でAtlasProject
カスタム リソースを削除すると、Atlas Kubernetes Operator による、Atlas 内の対応するプロジェクトの自動削除が行われなくなるた、意図しないまたは予期しない削除を防げます。 この動作を Atlas Kubernetes Operator 2.0 より前に使用されていたデフォルトに戻す方法などの詳細については、「新しいデフォルト: Atlas Kubernetes Operator 2.0 の削除保護 」を参照してください。
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 secrets に直接配置する必要はありません。詳細については、「シークレット ストレージの構成」を参照してください。
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 secrets に直接配置する必要はありません。詳細については、「シークレット ストレージの構成」を参照してください。
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