Blog\Assured公式noteを開設しました/2023-12-15GKEクラスタ内部であってもイベントを直接転送できるEventarcの意外な落とし穴こんにちは。エンジニアの岩松です。Visionalグループの軽音部でベースを弾いています。最近エフェクターを買ってみたのですが、欲しいものが次々と増えてきて困っています。15日目の記事となります。Engine(GKE)によって複数のアプリケーションを管理しています。以前紹介したインフラ構成では書かれていませんが、API処理とは別に重たい処理を担当するアプリケーションも存在しています。(以下JobAppとします)tech.assured.jp各APIからJobAppを呼び出すにあたり、可用性を考慮してPub/Subを挟んでいたのですが、Pull型の実装では実行速度やリソース効率に限度があるうえ、ビジネス要件の観点からもPush型の実装にできないかと考えていました。PS-->|Push|Bこうしたいしかし、今回利用しているGKEクラスタは限定公開であるため、これをセキュアな形で実現しようとすると意外と手間がかかります。JobAppに内部アクセス用のIPアドレス(VPC)を紐付ける。紐づけ、内部用VPCと連携する。B---SIP真面目にやると多分こうなるPull型と比較してPush型を実現するのは正直めんどくさい...。Cloudリソースまたはサードパーティリソース(Datadog等)からのイベントを起点に様々なエンドポイントを呼び出せる機能となります。AWSだとEventBridgeが近しい機能ですが、GKE(Kubernetes)内部のエンドポイントを直接指定できるという点が差分の一つかと思います。したがって前述のケースであっても、GKEの外側にエンドポイントを用意せず簡単にセキュアなPush型アーキテクチャを実現できるというわけです。Subscriberが作られます。発生事象EventarcはTerraformで管理することも可能で、比較的簡単に設定を記述することができます。ところが実際にEventarcを作成しようとすると実行が終わらない...。永遠に終わらないapplyこれはおそらくEventarcに設定するサービスアカウントの権限が足りていなかったことが原因だったと思われ、操作を強制終了すれば問題はありませんでしたがEventarc(トリガー)EventarcがKubernetesクラスター内に自動で作成したnamespaceがリソースとして残ってしまいました。これらは通常の削除操作を受け付けてくれません。トリガーに削除操作を行うと長い時間をかけた後に「不明なエラーです。namespaceは削除操作を受け付けたフリで終わるという状態です。🧟‍♂️Terminatingなnamespaceが残り続ける削除操作後の様子。Cloudのテクニカルサポートを活用していくことにしました。テクニカルサポート問い合わせ後の流れは以下となります。namespaceの削除方法を教示いただくサポートからのメッセージに返信し忘れているとケース(問い合わせ)がクローズされてしまうので、素早くレスポンスしていく必要があります。いったやりとりにおいてはオリバーさんはじめ、チームのみんなにも助けてもらいました。本記事の執筆時点(2023/12/15)では適切に権限を付与していれば問題なくTerraformでEventarcトリガーを作成できます。namespaceが残り続ける問題が依然発生します(トリガーは消えるようになった)。この場合は以下の手順でnamespaceを削除できます。Cloudの改善に貢献できて良かったです。今回作られたEventarcも問題なく稼働しており、管理すべきリソースがシンプルにまとまっているので、マネージドサービスの恩恵を受けられている実感があります。Runにもできるので、今後もどんどん活用していきたいと考えています。事象の発端においては必要な操作権限の確認不足が問題として挙げられます。「操作が中断されるはずだから問題ない」で済ませず、事前にちゃんと確認していく必要があると感じました。Cloudリソースの内部仕様ももっと勉強していきたいと思います。12:00関連記事2023-12-14【2023年11月】今月の行動指針プロダクトマネージャーの鈴木です。11月はアシュアードの有志...2023-02-02新機能「サービス(シャドーIT)検知」における技術選定こんにちは!エンジニアの内山です。Blog検索はてなブログをはじめよう!assuredjpさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。