生成AI時代のSRE【サポーターズCoLab】に登壇した

4月3日、 生成AI時代のSRE【サポーターズCoLab】 に登壇しました。 資料を公開します。

April 11, 2025 · Me

KEDAを導入してAWS SQSキューとHTTPリクエストベースのスケーリングを実現する

会社のtech blogに記事を書きました KEDAを導入してAWS SQSキューとHTTPリクエストベースのスケーリングを実現する

January 23, 2025 · Me

Argo CDとArgo Workflowsにおける認証・認可の設定

背景 仕事ではArgoCDでGitOpsを行っており、Argo Workflowsでバッチ処理を実行するエンジンとして利用しています。 運用初期は利用者が多くなかったため、Argo CDのSSOはGitHub Team (グループ管理)とArgo CDに付随されている Dex を使用していました。 また、認可設定はシンプルに保ち、 Basic Built-in Roles を利用して、クラスタ管理者にrole:admin、利用者にrole:readonly権限を付与していました。一方、Argo WorkflowsではSSOを設定せず、デフォルトの Auth Mode であるserverを使っていたため、認証が通れば誰でもバッチのログを閲覧できる状態でした。 しかし、プラットフォームの成長に伴い、機密性の高いログが増える見込みとなり、現在の運用は対応が難しくなってきました。 そこで、先日最小権限の原則(Principle of Least Privilege、必要最小限の権限のみを付与する運用方針)に従い、Argo CDとArgo Workflowsの権限設定を見直しました。 本記事では、公式ドキュメントに記載されていない落とし穴や、実践してみて明らかになったArgo CDとArgo Workflows権限のポイントについて解説します。 Argo CDやWorkflows権限設定の権限設定を進める際の参考になれば幸いです。 Argo CD 先述の通り、今回の構成ではGitHub Teamでグループを管理し、OpenID Connect ProviderとしてDexを利用しています。この構成における認証・認可のフローは、GitHub Teams → Dex → Argo CD Applicationとなります。 Argo CDでは、グループごとにnamespaceのアクセス権限を設定することで、必要最小限の権限のみを付与できます。 ただし、Argo CDのドキュメント RBAC Configuration の記載によると、namespaceごとに設定する場合、事前に Application in Any Namespaces を有効化する必要があります。 デフォルトでは、Argo CDのApplicationはargocd namespaceに作成されるため、Applicationリソースを各namespaceに分割して配置する必要があります。この設定は比較的簡単な一方で、ApplicationSetのtemplateにおいて namespaceがサポートされていない ため、この方法を採用するのは現実的ではありませんでした。すでにApplicationSetによって複数のnamespaceにアプリケーションをデプロイしているため、ApplicationSetの廃止は容易ではありません。 その解決策として、namespaceごとにAppProjectを作成し、論理的なグループ化を行いました。AppProjectは、Argo CDにおいてアプリケーションをグループ化し、リソースやアクセス制限を設定するためのリソースです。以下は、その例です。 apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: samples namespace: argocd spec: destinations: - namespace: samples server: "https://kubernetes.default.svc" sourceRepos: - "https://github.com/org/repo.git" このAppProjectに対応する権限は、Dex設定用のConfigMapに定義します。 ...

December 16, 2024 · Me

EKSにおけるNamespaceごとにCloudWatchとEC2のコスト按分方法

会社のtech blogに記事を書きました EKSにおけるNamespaceごとにCloudWatchとEC2のコスト按分方法

September 4, 2024 · Me

GKEでArgo WorkflowsにWorkflow Archiveを導入する

副業先のtech blogに記事を書きました GKEでArgo WorkflowsにWorkflow Archiveを導入する

July 9, 2024 · Me

blue/green戦略によるKubernetesクラスタ更新時にIstioの対応方法

会社のtech blogに記事を書きました blue/green戦略によるKubernetesクラスタ更新時にIstioの対応方法

July 5, 2024 · Me

ややこしいノートアプリを捨てよう!15行のMakefileとGitで自分のノートを管理する

なぜ 最近のFancyなノートアプリが複雑になりすぎて個人利用には不要な機能が溢れています。 その上、自分が書いたノートなのにローカルに保存されないため、サービス障害やインシデントが起きるとを閲覧できないリスクが高いです。 そのため、MakefileとGitだけで自分用簡易ノートを作りました。 詳細 この15行のMakefileがすべてです。↓ .PHONY: pull note journal pull: git checkout master && git pull origin master today=`date +%Y%m%d` year=`date +%Y` journal_path=./journal/${year}/${today}.md name=newname note: pull @mkdir -p notes && echo "# ${name}" >> notes/${today}_${name}.md && code notes/${today}_${name}.md journal: pull @mkdir -p "./journal/${year}"; if [ ! -f ${journal_path} ]; then echo "# ${today}" >> ${journal_path}; fi; code ${journal_path} ややこしいことはやっておらず、directory journal/とnotes/にmarkdownファイルを作ってvscodeで開いているだけです。 journal/ 日記を保存するディレクトリ 年別に分けるためにjournal/配下に更にサブディレクトリYYYY/を生成するように実装している make journalを実行するとjournal/YYYY/YYYYMMDD.mdが生成される 日付などは自動生成されるので自ら記入する必要なし note/ その他のノードを保存するディレクトリ こちらは年別にわけてない make note name="hogehoge"を実行するとnotes/YYYMMDD_hogehoge.mdが生成される Markdownはコードブロックや画像挿入の機能が備えているため、ほとんど個人のユースケースに対応できます。また、ノードアプリの画像やURLを挿入する際に使う「Markdown方言」を覚える必要もなくなります。 検索に関しては、自分が普段使い慣れているIDEの検索機能を利用すればいいので、ほとんどのノードアプリより優れていると思います。 ノートをGitHubのprivate repositoryに上げておくと、GitHubにログインできれば他の端末からでも閲覧・編集できます。モバイルから編集しづらいという問題はもちろんありますが、そもそも外にいる際にスマホをいじる時間を減らして周りの景色を楽しんだほうがいいでしょう。 最後に シンプルなノードアプリを自作しましょう! ノートアプリを選んでカスタマイズする時間・お金があるのであれば、自分の趣味などに充てたほうがよいのではないでしょうか。 また、GitHub PagesとMarkdownで自作個人ナレッジマネジメントツールに興味のある方は筆者が2年前に書いた この記事 も併せて読んでみてください。 ご参考になれば幸いです。 ...

June 23, 2024 · Me

自作PCからUbuntu22.04開発環境構築してみた

更新履歴 2022/06/26: 初稿 2024/04/20: 起動時I/O error, dev sda, sector xxxxxxxxxxのエラーが発生した。smartctlで確認したところ、問題がなかったので、手順の最新化を行い再度インストールした アップルをはじめとして、最近スペックがそこそこ良いPCがわけわからないくらい高くなり、誰でも使える個人用のコンピュータというPersnal Computerの趣旨と乖離しています。独断と偏見ですが、せっかく数十万円でPCを購入したのにもかかわらず、 パーツ交換不可なので、数年後は電子ゴミになり、自然環境に優しくない 不要なソフトウェア・サービスが多い(たとえば、2022年なのに、バージョン管理非対応のクラウドサービスiCloudが大きなシェアを占めているっていう皮肉) なんとかStoreの通知がうるさい。利用するのにアカウント(個人情報)が必要 プライバシー侵害問題 … https://www.theguardian.com/world/2021/oct/15/apple-plan-scan-child-abuse-images-tears-heart-of-privacy 別にゲーマーではないですが、数十万払ったのに自由が奪われる感じがどうしても気に入らないので、自作PCからLinuxの開発環境を構築することにしました。 ハードウェア 秋葉原まで行く元気がなかったので、すべてのパーツはAmazonやメルカリから購入することにしました。また、PCパーツの価格変動が激しいのでkeepaのメール通知機能を活用すると簡単に低価格でお気に入りのパーツ狙えます。 https://keepa.com/ 最終的に以下のパーツを買いました。 Model Price Motherboard ASUS Intel B560M-A ¥10,563 CPU Intel Core i5 10400 ¥18,943 GPU ASUS GTX 1650-4G DUAL ¥21,500 Power 玄人志向 KRPW-BK 80PLUS Bronze 750W ¥5,535 Memory KLEVV DDR4 2666 PC4-21300 8GB*2 ¥7,002 Storage Crucial SSD 500GB MX500 ¥5,980 CPU Cooler CPUクーラー 虎徹 Mark II ¥3,400 Case SAMA JAX-03W (second hand) ¥4,480 LAN cable ¥945 Total ¥78,348 あくまで筆者の例ですが、他のパーツに替えても全然問題がありません。パーツ間の互換性と電源容量だけ気をつけてください ...

April 20, 2024 · Me