🌐

セキュアなKubernetes統合開発基盤の構築(ベアメタルサーバー編)

に公開

自宅のk8sクラスターで企業で求められそうなセキュリティ要件を満たしつつ、gitopsによるCI/CDを実装した、アプリケーションデプロイ用クラスターを作ってみたので、概要を記します。

ちょっと中途半端なところですが、一旦区切りにしたいので自分用メモも兼ねてです。ご容赦ください。
それぞれの固有要素も追々記事にしていきたいと思います。

アーキテクチャ

リポジトリ

https://github.com/yu-min3/my_k8s

何ができるか

  1. アプリケーション初回開発時に、kustomizeを活用することで、oauth2-proxy及びkeycloakを用いた認証認可を実装できます。
  2. argocdを用いたgitopsにより、アプリケーション開発者はDockerイメージをpushし、githubにコード差分をpushするだけで、アプリケーションをデプロイできます。
  3. 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