.. _messaging: ######### MESSAGING ######### マネージドメッセージングサービスの作成及びアクセスコントロールの設定を行います。 +-------+-----------+ | | 設定値 | +=======+===========+ | Chart | messaging | +-------+-----------+ 対応サービス ============== * Azure: `Azure Service Bus`_ * Google Cloud: `Cloud Pub/Sub`_ * AWS: `Amazon SNS`_, `Amazon SQS`_ パッケージの機能 ================ Pod 間や他のマネージドサービスとの連携に便利な 1:1~n のメッセージ配信サービスを行うため以下の設定機能を提供します。 * トピッックの設定 * サブスクリプションの設定 * リソースに対するアクセス権の設定(Azure 以外) * メッセージ配信順の設定 * 重複メッセージの制御 * 配信不能メッセージの処理 * メッセージのフィルタリング メッセージング関連オブジェクト作成 ---------------------------------- Azure ~~~~~ 一つのトピックと複数のサブスクリプションを作成可能です。 トピック作成時には Service Bus の名前空間が作成されます。 サブスクリプションは pull 型に設定されます。 サブスクリプションフィルターは、SQL、相関関係、の2つの配信フィルター条件が設定可能です。 Azure クラウドサービスのリソースグループは values の ``azure.resourceGroup.name`` で指定できます。 リソースグループを指定する場合は、事前にリソースグループが作成されていることを確認してください。 リソースグループは `UserConfig`_ で作成可能です。 リソースグループを指定しない場合には、本パッケージの設定を記述した `Application`_ リソースの ``namespace`` と同名のリソースグループにリソースが作成されます。 Google Cloud ~~~~~~~~~~~~ 一つのトピックと複数のサブスクリプションを作成可能です。 サブスクリプションのみを作成する場合は、サブスクライブする任意のトピックを指定します。 トピックとサブスクリプションを同時に作成した場合は、作成したトピックがサブスクライブされます。 サブスクリプションはデフォルトで pull 型に設定されます。 AWS ~~~ 一つのトピックと複数のサブスクリプション、各サブスクリプションの配信先となる複数のキューを作成可能です。 サブスクリプションのみを作成する場合は、サブスクライブする任意のトピックを指定します。 トピックとサブスクリプションを同時に作成した場合は、作成したトピックがサブスクライブされます。 また、サブスクリプションのエンドポイントとして、パッケージ内で作成したキューが指定されます。 アプリケーションではこのキューからデータを取得してください。 .. IMPORTANT:: トピックに対してサブスクリプションの追加削除を行う前提の場合、トピックとサブスクリプションは別のインストールとする必要があります。 そのため要件が明確になっていない場合はトピックとサブスクリプションのインストールは分割してください。 アカウント作成とロール設定 -------------------------- ``acl`` の設定を行うことで、作成したトピックとサブスクリプションそれぞれのリソースにアクセスするクライアントを制限することができます。 .. code-block:: yaml acl: consumer: - name: data-reader type: mid ``type`` には指定するクライアントの種類を指定し ``name`` 対象の識別子を type ごとの書式で指定します。 これらのリソースは Pod から利用することを想定して、作成したリソースを適切に適用できるように構成されます。 .. table:: ACL type に設定可能な値 +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | type | AWS | Azure | Google | Description | +=============+=====+=======+========+=======================================================================================================================================================+ | federatedId | ○ | | | 外部 IdP のアドレスを指定します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | service | ○ | | | サービスに権限を付与します。[service-name].amazonaws.com という形式で指定します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | role | ○ | | | ロールに権限を付与します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | sts | ○ | | | AssumeRoleにて引き受けたセッションロールに対して権限を付与します。"[role-name]/[session-name]" という形式でダブルクォーテーションで囲んで指定します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | mid | | ○ | | CNAP サービスで作成したユーザーアサインドIDの name を指定して権限を付与します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | objectId | | ○ | | ユーザー、グループ、サブスクリプション などのIDを指定して権限を付与します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | domain | | | ○ | Google Workspace もしくは Cloud Identity のドメインに所属するユーザーに権限を付与します。 | | | | | | [USER_NAME]@[DOMAIN].com の ``DOMAIN`` 部分を指定します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | | | | | google サービスアカウントに権限を付与します。 | | gsa | | | ○ | [SERVICEACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com | | | | | | の形式で指定します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | user | ○ | | ○ | ユーザーアカウントに権限を付与します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | group | | | ○ | グループアカウントに権限を付与します。 | +-------------+-----+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ .. important:: 現在本パッケージは Azure でのリソース単位での ACL 設定をサポートしていません。 Azure でのリソースへのアクセス権限設定は DEPLOYMENT パッケージのロール設定機能を利用して、 リソースグループ単位でのアクセス権の設定を行います。 Values ====== Default values -------------- .. literalinclude:: values/messaging.values.yaml :language: yaml Schema reference ---------------- .. jsonschema:: schema/messaging.schema.json Example ======= Example1. Azure:トピック1つ、サブスクリプション2つ作成 ------------------------------------------------------------------------------ .. literalinclude:: example/messaging/example1_azure.yaml :language: yaml Example2. Google Cloud:トピック1つ、サブスクリプション2つ作成 ------------------------------------------------------------------------------ .. literalinclude:: example/messaging/example2_gc.yaml :language: yaml Example3-1. AWS:トピック1つ、サブスクリプション2つ、キュー2つ作成 ----------------------------------------------------------------------------------------------- .. literalinclude:: example/messaging/example3_aws.yaml :language: yaml Change Log ========== .. changelog:: :changelog-url: https://msp-project-gcp.an.r.appspot.com/managed/messaging.html :github: https://github.com/sbopsv/MASTER-CONTAINER-HELM-MESSAGING/releases/ .. _MASTER-CONTAINER-HELM-MESSAGING: https://github.com/sbopsv/MASTER-CONTAINER-HELM-MESSAGING .. _Cloud Pub/Sub: https://cloud.google.com/pubsub .. _Azure Service Bus: https://docs.microsoft.com/ja-jp/azure/service-bus-messaging/service-bus-messaging-overview .. _Amazon SNS: https://docs.aws.amazon.com/ja_jp/sns/latest/dg/welcome.html .. _Amazon SQS: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html .. _UserConfig: https://github.com/sbopsv/MASTER-CONTAINER-APP-OPERATOR#userconfig .. _Application: https://github.com/sbopsv/MASTER-CONTAINER-APP-OPERATOR#application