このチュートリアルでは、Atlas Kubernetes Operator を使用してKubernetes構成ファイルから Atlas にフェデレーティッドデータベースインスタンスを作成する方法を説明します。このチュートリアルのフェデレーティッドデータベースインスタンスは、Amazon Web Services S3バケットと Atlas クラスターを接続します。
前提条件
このチュートリアルには次のものが必要です。
Atlas Kubernetes Operator が配置された実行中の Kubernetes クラスター
AtlasProject
カスタム リソースを含む)。Amazon Web ServicesIAM ロールを変更する権限を持つ ユーザーのアカウント。
手順
重要
カスタム リソースはデフォルトでオブジェクトを削除しなくなりました
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 の削除保護 」を参照してください。
Amazon Web ServicesAtlas でAmazon Web Services IAM ロールを作成するAtlas
Atlas CLI次のAmazon Web Services Atlasコマンドを実行して、 で新しい IAM ロールを作成します。次のプレースホルダーを自分の値に置き換えます。
プレースホルダー説明PROJECT-ID
使用するAtlasプロジェクトを識別する一意の24文字の16進数文字列。
atlas cloudProviders accessRoles aws create --projectId <PROJECT-ID> 返されたフィールド値
RoleID
、Atlas AWS Account ARN
、Unique External ID
に注意します。AWS IAM role '<RoleID>' successfully created. Atlas AWS Account ARN: <AtlasAWSAccountARN> Unique External ID: <AtlasAssumedRoleExternalID>
Amazon Web Services IAM ロールの信頼ポリシーを変更します。
Amazon Web Servicesマネジメント コンソールにログインします。
Identity and Access Management (IAM)サービスに移動します。
左側のナビゲーションからRolesを選択します。
ロールのリストから Atlas アクセスに使用する既存の IAM ロールをクリックします。
Trust Relationships タブを選択します。
Edit trust relationshipボタンをクリックします。
Policy Documentを編集します。 次のコンテンツを持つ新しい
Statement
オブジェクトを追加します。注意
強調表示された行を、前の手順で返された値に置き換えます。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] } Update Trust Policyボタンをクリックします。
AtlasDataFederation
カスタムリソース を作成します。
次のコマンドを実行して、 AtlasDataFederation
カスタム リソースを作成します。 roleId
は前のステップでRoleID
に返された値と一致し、 spec.projectRef.name
はAtlasProject
カスタム リソースの名前と一致する必要があります。
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDataFederation metadata: name: my-federated-deployment spec: projectRef: name: my-project namespace: default cloudProviderConfig: aws: roleId: 12345678 testS3Bucket: my-bucket dataProcessRegion: cloudProvider: AWS region: OREGON_USA name: my-fdi storage: databases: - collections: - dataSources: - allowInsecure: false collection: my-collection collectionRegex: database: my-database databaseRegex: defaultFormat: ".avro" path: / provenanceFieldName: string storeName: my-data-store urls: - string: name: my-collection-mdb maxWildcardCollections: 100 name: my-database-mdb views: - name: my-view pipeline: source: my-source-collection stores: - name: my-store provider: S3 additionalStorageClasses: - STANDARD bucket: my-bucket delimiter: / includeTags: false prefix: data- public: false region: US_WEST_1 EOF
次のステップへ進む
フェデレーティッドデータベースインスタンスのプライベートエンドポイントを構成するには、「プライベートエンドポイントの管理 」を参照してください。