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¶
一つのトピックと複数のサブスクリプション、各サブスクリプションの配信先となる複数のキューを作成可能です。 サブスクリプションのみを作成する場合は、サブスクライブする任意のトピックを指定します。 トピックとサブスクリプションを同時に作成した場合は、作成したトピックがサブスクライブされます。 また、サブスクリプションのエンドポイントとして、パッケージ内で作成したキューが指定されます。 アプリケーションではこのキューからデータを取得してください。
重要
トピックに対してサブスクリプションの追加削除を行う前提の場合、トピックとサブスクリプションは別のインストールとする必要があります。 そのため要件が明確になっていない場合はトピックとサブスクリプションのインストールは分割してください。
アカウント作成とロール設定¶
acl
の設定を行うことで、作成したトピックとサブスクリプションそれぞれのリソースにアクセスするクライアントを制限することができます。
acl:
consumer:
- name: data-reader
type: mid
type
には指定するクライアントの種類を指定し name
対象の識別子を type ごとの書式で指定します。
これらのリソースは Pod から利用することを想定して、作成したリソースを適切に適用できるように構成されます。
type |
AWS |
Azure |
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 の |
||
gsa |
○ |
google サービスアカウントに権限を付与します。 [SERVICEACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com の形式で指定します。 |
||
user |
○ |
○ |
ユーザーアカウントに権限を付与します。 |
|
group |
○ |
グループアカウントに権限を付与します。 |
重要
現在本パッケージは Azure でのリソース単位での ACL 設定をサポートしていません。 Azure でのリソースへのアクセス権限設定は DEPLOYMENT パッケージのロール設定機能を利用して、 リソースグループ単位でのアクセス権の設定を行います。
Values¶
Default values¶
# Default values for MASTER-CONTAINER-HELM-MESSAGING.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# kubernetes上からこのHelmを削除した際にクラウド上のストレージリソースを残すかどうか設定します。
# trueに設定すると、Helmを削除してもクラウド上にストレージリソースが残ります。
keepOnDelete: true
# リソースを作成する地理的場所を指定します。
location:
# ロケーション名
name: ""
# topic設定
topic:
# topic名
name: ""
# 新規にtopicを作成する場合はtrue、既存のtopicにsubscriptionを追加する場合はfalseを指定してください。
create: true
# topicに対するアクセスコントロール設定です。以下を設定します。
acl:
publishers: []
# - name: # 制御対象の名前
# type: # クライアントの種類 (README 参照)
# 配信失敗時の最大再試行回数
maxDeliveryCount: 10
# メッセージの配信順序設定
fifo:
enabled: false
# メッセージの重複排除設定。 AWSはfifoが有効のときのみ重複排除が可能です。
duplicationPolicy:
# 重複発生時の処理 none(重複排除しない)もしくは delete(重複排除する)が選択できます。
type: none
# 重複検知期間。Azure, Googleのみ指定可能です。
duration: "20"
# subscription設定
subscriptions: []
# subscription名
# - name: ""
# サブスクリプションに対するアクセス権の設定
# acl:
# consumers:
# - name: # 制御対象の名前
# type: # クライアントの種類 (README 参照)
# # デッドレターポリシーの設定です。
# # なお、あらかじめ送信先を作成しておく必要があります。AWSではMSPサポート経由でSQSを作成してください。Google, Azureでは本パッケージを使用して送信先トピックを作成してください。
# deadLetterPolicy:
# # デッドレター機能の有効化・無効化
# enabled: false
# # 配信不能メッセージの送信先
# target:
# # 送信先リソースの指定方法
# type: "resourceId" # resourceId, name(defualt)
# # resourceId
# # GC: externalの場合 `projects/{{project}}/topics/{{value}}` 形式の文字列
# # Azure: OIDを指定,
# # name:
# # AWS: arn を指定,
# # Azure, GC: topic.name で設定した値を設定
# name: ""
# namespace: "" # topicのインストールされているnamespace. externalの場合は指定しない
# # メッセージフィルタの設定
# # フィルタはGoogle, AWSでは1つしか指定できません。
# filters:
# - query:
# action: # Azureの場合のみフィルタに対応するアクションを指定してください。
# scope: # AWSの場合のみフィルタのスコープをを指定してください。(有効な値はMessageAttributesまたはMessageBodyです。)
# Azure のみの固有設定です。
azure:
# 作成するリソースの所属するリソースグループ
resourceGroup:
name: ""
# リソースのスペック
# Azureを使用する場合に指定する Storage Account の SKU(Stock Keeping Unit)
# パフォーマンスレベル・冗長化を設定してください。
sku:
name: Standard
Schema reference¶
properties |
||||||
|
Helmのアンインストール時にService Bus又はPubSubリソースを削除せすに残す場合は true |
|||||
type |
boolean |
|||||
default |
True |
|||||
|
type |
object |
||||
properties |
||||||
|
リージョン名 |
|||||
type |
string |
|||||
|
サブスクリプション個別設定 |
|||||
type |
array |
|||||
items |
type |
object |
||||
properties |
||||||
|
サブスクリプション名 |
|||||
type |
string |
|||||
|
権限設定(Azure は未サポート) |
|||||
type |
object |
|||||
properties |
||||||
|
サブスクリプションの配信権限を付与する対象リスト |
|||||
type |
array |
|||||
items |
#/definitions/acl_pricipal |
|||||
|
配信不能メッセージにの転送設定 |
|||||
type |
object |
|||||
properties |
||||||
|
メッセージ転送を有効にする場合は true |
|||||
type |
boolean |
|||||
|
配信先に関する設定 |
|||||
type |
object |
|||||
properties |
||||||
|
配信先の指定方法 name: kubernetes マニフェスト名, resourceId: 各クラウドのリソース ID (Azure, Google のみ使用) |
|||||
type |
string |
|||||
enum |
resourceId, name |
|||||
|
リソースの識別子 |
|||||
type |
string |
|||||
|
kubernetes マニフェストを指定する場合の Namespace 指定 (Google のみ使用) |
|||||
type |
string |
|||||
|
メッセージに対するフィルタリング設定 |
|||||
type |
array |
|||||
items |
type |
object |
||||
properties |
||||||
|
フィルタクエリストリング |
|||||
type |
string |
|||||
|
フィルタ結果に対するアクション (Azure のみ使用) |
|||||
type |
string |
|||||
|
フィルタの適用範囲 (AWS のみ使用) |
|||||
type |
string |
|||||
enum |
MessageAttributes, MessageBody |
|||||
|
トピック設定 |
|||||
type |
object |
|||||
properties |
||||||
|
トピックを作成する場合は true, 既存のトピックを指定する場合は falseを指定 |
|||||
type |
boolean |
|||||
|
トピックの名前を設定 |
|||||
type |
string |
|||||
|
権限設定(Azure は未サポート) |
|||||
type |
object |
|||||
properties |
||||||
|
トピックへのメッセージプッシュ権限を付与するリスト |
|||||
type |
array |
|||||
items |
#/definitions/acl_pricipal |
|||||
|
配信失敗時の最大再試行回数 |
|||||
type |
number |
|||||
|
メッセージの先入れ先出しに関する設定 |
|||||
type |
object |
|||||
properties |
||||||
|
FIFO を有効にする場合は true を指定 |
|||||
type |
boolean |
|||||
default |
False |
|||||
|
重複メッセージに対する処理設定 |
|||||
type |
object |
|||||
properties |
||||||
|
処理方法の指定 |
|||||
type |
string |
|||||
enum |
none, delete |
|||||
|
重複を検知する期間の設定 Azure は ISOISO8601 形式で指定(ex. P10DT1H) |
|||||
type |
string |
|||||
|
Azure ServiceBus 関連設定 |
|||||
type |
object |
|||||
properties |
||||||
|
ServiceBus を追加するリソースグループ。 |
|||||
type |
object |
|||||
properties |
||||||
|
ServiceBus を作成する場合は作成先のリソースグループ名。指定しない場合は、Namespaceと同名のリソースグループに作成される |
|||||
type |
string |
|||||
|
サービススペックを指定 |
|||||
type |
string |
|||||
enum |
Premium, Standard, Basic |
|||||
default |
Standard |
|||||
definitions |
||||||
|
type |
object |
||||
properties |
||||||
|
リソース名等の識別子 |
|||||
type |
string |
|||||
|
リソースの種別 |
|||||
type |
string |
|||||
enum |
user, role, group, gsa, mid, domain, objectId, sts, federatedId, service, account |
Example¶
Example1. Azure:トピック1つ、サブスクリプション2つ作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: staging-messaging
namespace: staging
spec:
chart:
name: messaging
version: <latest>
settings:
location:
name: japaneast
subscriptions:
- name: sub1
- name: sub2
filter:
- query: "StoreId IN ('Store1','Store2','Store3')"
action: "SET myproperty=myvalue"
topic:
create: true
name: topic-1.example.com
fifo:
enabled: true
duplicationPolicy:
type: delete
duration: P3DT11H59M
keepOnDelete: true
azure:
resourceGroup:
name: staging
sku: Standard
Example2. Google Cloud:トピック1つ、サブスクリプション2つ作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: staging-messaging
namespace: staging
spec:
chart:
name: messaging
version: <latest>
settings:
subscriptions:
- name: sub1
gcp:
topicRef:
name: topic-1.example.com
- name: sub2
gcp:
topicRef:
name: topic-1.example.com
topic:
create: true
name: topic-1.example.com
Example3-1. AWS:トピック1つ、サブスクリプション2つ、キュー2つ作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: staging-messaging
namespace: staging
spec:
chart:
name: messaging
version: <latest>
settings:
location:
name: ap-northeast-1
topic:
create: true
name: testTopic
subscriptions:
- name: sub1
- name: sub2
Change Log¶
1.0.18¶
Released on 2025-08-07
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.0.17¶
Released on 2025-05-15
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.0.16¶
Released on 2025-04-03
What's Changed
- topic名指定のbugを修正しました
1.0.15¶
Released on 2025-03-21
What's Changed
topic.name
と location
の必須チェックを追加しました。