🌐
セキュアなKubernetes統合開発基盤の構築(ベアメタルサーバー編)
自宅のk8sクラスターで企業で求められそうなセキュリティ要件を満たしつつ、gitopsによるCI/CDを実装した、アプリケーションデプロイ用クラスターを作ってみたので、概要を記します。
ちょっと中途半端なところですが、一旦区切りにしたいので自分用メモも兼ねてです。ご容赦ください。
それぞれの固有要素も追々記事にしていきたいと思います。
アーキテクチャ
リポジトリ
何ができるか
- アプリケーション初回開発時に、kustomizeを活用することで、oauth2-proxy及びkeycloakを用いた認証認可を実装できます。
- argocdを用いたgitopsにより、アプリケーション開発者はDockerイメージをpushし、githubにコード差分をpushするだけで、アプリケーションをデプロイできます。
- envoy gateway及びmetalLB、cert managerにより、ベアメタルサーバーにhttps通信で公開するようにアプリケーションをデプロイできます。
1. kustomizeを利用したoauth2-proxyによるリバースプロキシ認証認可
すべてのアプリケーションに適用できる、認証認可を実装するにあたり、oauth2-proxyのリバースプロキシ形式を採用しました。
これにより、認証認可はアプリケーションに埋め込まれず、oauth2-proxyでコントロールすることができます。(アーキテクチャ図のアプリケーション群とkeycloakの関係)
kustomizeを利用することで、secretやclientなどの変数以外を設定せずに、自然とoauth2-proxyをアプリ前面にデプロイできます。
2. argocdを用いたgitops
app-of-appsを採用しており、argocdによってアプリケーションが監視されます。
argocdのUIを用いてアプリケーションを網羅的に監視ができるので、プラットフォーム管理者の仕事を楽にしてくれます。
3. envoy gatewayによるhttps通信の実現
Ingressを使っても良いのですが、せっかくGatewayが開発されてきているので使ってみました。
ベアメタルサーバーようにmetalLBをデプロイしており、cert managerを使うことでアノテーションの利用のみでhttps終端を実現できます。
Discussion