# modoki-k8s
### PaaS on Kubernetes
Tsuzu(@Wp120_3238/@tsuzu_misw)
---
<div id="left">
<img src="https://i.imgur.com/OozSWw9.jpg">
</div>
<div id="right">
- Handle: Tsuzu
- Name: TSUCHIYA Tsuzuki
- Twitter: [@Wp120_3238](https://twitter.com/Wp120_3238), [@tsuzu_misw](https://twitter.com/tsuzu_misw)
- GitHub: [cs3238-tsuzu](https://github.com/cs3238-tsuzu)
- Interests: Continuous Delivery, Service Mesh, Monitoring
- Roles in MIS.W: SysAd, Web
</div>
---
## Agenda
- PaaSとは
- modoki-k8sとは
- デモ
- modoki-k8sの仕組み
- TODO
- まとめ
---
## What is PaaS?
- Platform as a Service
- アプリケーションの公開、運用、監視などを行ってくれるサービス
- ドメイン割当、証明書割当、データベースのセットアップ、など
- コードを書く→PaaSに投げる
- Popular PaaS: Heroku/GAE
---
## modoki-k8s
![](https://i.imgur.com/TjwXeJM.png)
- https://github.com/modoki-paas/modoki-k8s
- Kubernetesクラスタ上で動くPaaS
- modokiのKubernetes版
- Written in Go
- WIP(まだDockerイメージ単位でのデプロイのみ)
----
## WHY
- サークルのk8sクラスタを有効活用したい
- YAMLを書くハードルを下げたい
- Kubernetesを意識させたくない
---
## デモ
---
## 構成図
----
![](https://i.imgur.com/upiyCGQ.png)
Note:
黄色い矢印はリクエストの流れ
通信は全てgRPC
ingress-nginxで外部からのリクエストを受ける
Auth Serverでトークンを検証し各ユーザの持つ権限をメタデータに付与する
APIServerがリソースの管理を担当していて、アプリケーション関連はAppで処理される。
デプロイの際、YAMLerに対してパラメータを渡してデプロイするためのYAMLを生成してもらう
KubernetesのAPI serverに対してそのYAMLを適用するとアプリケーションが公開
----
## 使った技術一覧
- Kubernetes
- ingress-nginx, cert-manager
- gRPC
- client-go
- RBAC
---
## TODO
- User/Org周りのAPI実装
- OpenID Connectによる認証の実装
- DBやその他ミドルウェアのプラグイン
- MySQL/PostgreSQL/Redis/oauth2_proxyなど
- Webコントロールパネル実装
- Envoy導入
- Cloud Native Buildpack対応
----
### 一般的なKubernetesへのデプロイの流れ
![](https://i.imgur.com/Os7RexX.png)
----
### Cloud Native Buildpack
- CNCF Sandboxプロジェクト
- 勝手に言語を識別してDockerイメージを作ってくれる
- まとめて設定を適用しやすい
---
## まとめ
- Kubernetesで動くPaaSを開発中
- 内部的にはYAMLを自動生成してApplyしてるだけ
- 欲しい機能、PR、Issue、共同開発者募集中です
<style>
.reveal section img { background:none; border:none; box-shadow:none; }
#left {
left:-8.33%;
text-align: left;
float: left;
width:30%;
z-index:-10;
}
#right {
left:31.25%;
top: 75px;
float: right;
text-align: left;
z-index:-10;
width:70%;
}
</style>
{"metaMigratedAt":"2023-06-15T03:13:02.460Z","metaMigratedFrom":"YAML","title":"modoki-k8s","breaks":"true","slideOptions":"{\"showNotes\":false}","contributors":"[{\"id\":\"4e745644-ba64-4a37-b331-3743a1f87824\",\"add\":2352,\"del\":199}]"}