MESSAGING

マネージドメッセージングサービスの作成及びアクセスコントロールの設定を行います。

設定値

Chart

messaging

対応サービス

パッケージの機能

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 から利用することを想定して、作成したリソースを適切に適用できるように構成されます。

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 部分を指定します。

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

  • keepOnDelete

Helmのアンインストール時にService Bus又はPubSubリソースを削除せすに残す場合は true

type

boolean

default

True

  • location

type

object

properties

  • name

リージョン名

type

string

  • subscriptions

サブスクリプション個別設定

type

array

items

type

object

properties

  • name

サブスクリプション名

type

string

  • acl

権限設定(Azure は未サポート)

type

object

properties

  • consumers

サブスクリプションの配信権限を付与する対象リスト

type

array

items

#/definitions/acl_pricipal

  • deadLetterPolicy

配信不能メッセージにの転送設定

type

object

properties

  • enabled

メッセージ転送を有効にする場合は true

type

boolean

  • target

配信先に関する設定

type

object

properties

  • type

配信先の指定方法 name: kubernetes マニフェスト名, resourceId: 各クラウドのリソース ID (Azure, Google のみ使用)

type

string

enum

resourceId, name

  • name

リソースの識別子

type

string

  • namespace

kubernetes マニフェストを指定する場合の Namespace 指定 (Google のみ使用)

type

string

  • filters

メッセージに対するフィルタリング設定

type

array

items

type

object

properties

  • query

フィルタクエリストリング

type

string

  • action

フィルタ結果に対するアクション (Azure のみ使用)

type

string

  • scope

フィルタの適用範囲 (AWS のみ使用)

type

string

enum

MessageAttributes, MessageBody

  • topic

トピック設定

type

object

properties

  • create

トピックを作成する場合は true, 既存のトピックを指定する場合は falseを指定

type

boolean

  • name

トピックの名前を設定

type

string

  • acl

権限設定(Azure は未サポート)

type

object

properties

  • publishers

トピックへのメッセージプッシュ権限を付与するリスト

type

array

items

#/definitions/acl_pricipal

  • maxDeliveryCount

配信失敗時の最大再試行回数

type

number

  • fifo

メッセージの先入れ先出しに関する設定

type

object

properties

  • enabled

FIFO を有効にする場合は true を指定

type

boolean

default

False

  • duplicationPolicy

重複メッセージに対する処理設定

type

object

properties

  • type

処理方法の指定

type

string

enum

none, delete

  • duration

重複を検知する期間の設定 Azure は ISOISO8601 形式で指定(ex. P10DT1H)

type

string

  • azure

Azure ServiceBus 関連設定

type

object

properties

  • resourceGroup

ServiceBus を追加するリソースグループ。

type

object

properties

  • name

ServiceBus を作成する場合は作成先のリソースグループ名。指定しない場合は、Namespaceと同名のリソースグループに作成される

type

string

  • sku

サービススペックを指定

type

string

enum

Premium, Standard, Basic

default

Standard

definitions

  • acl_pricipal

type

object

properties

  • name

リソース名等の識別子

type

string

  • type

リソースの種別

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.namelocation の必須チェックを追加しました。