Re: Kubernetes-native テストベッドで始めるベストプラクティス模索 / kubefest2020_lt_k8s-native-testbed

Re: Kubernetes-native テストベッドで始めるベストプラクティス模索 / kubefest2020_lt_k8s-native-testbed

Re: Kubernetes-native テストベッドで始めるベストプラクティス模索

https://k8sjp.github.io/kubefest-2020/sessions/26/

現在Kubernetesは急速に発達し、様々なミドルウェアやアプリケーションをKubernetes上で動かすプロダクトがでてきています。 なかでも、KubernetesのCRD・Operatorなどの機能をフル活用し、ミドルウェアの管理をKubernetesに自動的に任せるKubernetes-nativeな手法を用いることが一般的になってきました。 一方でこうした一歩進んだミドルウェアのベストプラクティスを現実に近い環境で試したりすることことは、なかなか出来ないのが現状です。 そこでこの問題を解決するために、自前のクラスタにサンプルのマイクロサービスとともにデプロイし、使用感や運用感を確認できるテストベッドを作成しました。 またこのテストベッドではOSSとして公開することで、先進的なプロダクトのベストプラクティスを模索していくことも目的としています。 本セッションではこのテストベッドの概要として、そのアーキテクチャ・使用しているミドルウェア・マイクロサービスの実装について簡単に紹介します。

De266761b955b2636e454a1bc7a99ed4?s=128

Masaya Aoyama (@amsy810)

June 13, 2020
Tweet

Transcript

  1. Masaya Aoyama CyberAgent amsy810 @amsy810

  2. - Co-chair ੨ࢁ ਅ໵ + CREATIONLINE / DENSO - 技術アドバイザ

    + SAKURA Internet Research Center – 客員研究員 - Organizer - KaaS Product Owner - Publications Twitter: @amsy810
  3. 実際にはすべてが Kubernetes API 上のリソースとして表現されている Controllerの中⾝ = API の操作 + ロジック

    Controller の例 reconcile() { … } Controller ReplicaSet/Podの監視 Pod の制御 via API 運⽤のコード化
  4. 実際にはすべてが Kubernetes API 上のリソースとして表現されている Controllerの中⾝ = API の操作 + ロジック

    Controller の例 reconcile() { … } Controller ReplicaSet/Podの監視 Pod の制御 via API 運⽤のコード化 ๛෋ͳΤίγεςϜ ௥ՃϦιʔεͰ֦ுՄೳ
  5. みなさん、 考えたことはありませんか︖

  6. そしてすべてが Kubernetes マニフェストで 管理される

  7. そしてすべてが Kubernetes-native になる

  8. Kubernetes-native な CI/CD Kubernetes-native な Stateful App Kubernetes-native な Networking

    1 2 3
  9. 課題 こうしたソフトウェアの使⽤感・運⽤感は ⼩規模なデモ環境だと予測しづらい

  10. None
  11. @zuiurs @amsy810

  12. Kubernetes-native testbed for the future (still alpha release) https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 11

    microservices
  13. Kubernetes-native CI/CD Tekton, Kaniko, Harbor, Clair, ArgoCD

  14. Kubernetes-native CI / CD

  15. Kubernetes-native CI / CD Webhook を受ける Service が作成される

  16. Kubernetes-native CI / CD Kubernetes. マニフェストで従来の CI ツールの yaml 相当の処理が記述可能

  17. Kubernetes-native CI / CD CI では Kubernetes 上で コンテナイメージをビルドする Kaniko

    を利⽤
  18. Kubernetes-native CI / CD Registry は Harbor を利⽤ Clair (Trivy)

    と連携した脆弱性スキャンに対応 Harbor Operator による管理も(TBR)
  19. Kubernetes-native CI / CD Kubernetes 内部から 特定のリポジトリのマニフェストを適⽤

  20. Kubernetes-native StatefulSet App by Operator Database, KVS, Message Queue, Storage

  21. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Database - MySQL -

    PostgreSQL - TiDB - YugabyteDB - Cassandra - MongoDB - (Vitess)
  22. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Database - MySQL -

    PostgreSQL - TiDB - YugabyteDB - Cassandra - MongoDB - (Vitess)
  23. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 KVS - Memcached -

    Redis - TiKV
  24. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 KVS - Memcached -

    Redis - TiKV
  25. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Message Queue - NATS

    - Kafka - strimzi
  26. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Message Queue - NATS

    - Kafka - strimzi
  27. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Storages - Block -

    Shared FS - Rook/Ceph - Object - MinIO
  28. Kubernetes-native stateful app by Operator https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Storages - Block -

    Shared FS - Rook/Ceph - Object - MinIO
  29. Kubernetes-native Networking and gRPC-web / gRPC gRPC-web, gRPC, Contour, Cert-manager

  30. gRPC-web and gRPC Communication https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 gRPC / gRPC-web では Server-Server

    / Client-Server 間を IDL で定義した Interface を利⽤可能 gRPC-web に対応している Envoy ベースの Contour を利⽤
  31. Contour namespace delegation https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 各 Namespace (チーム) に 特定のパス以下の設定を委譲

  32. Automated Certificate Management https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000 Cert-manager が Ingress リソースを⾃動作成して ACME HTTP

    Challenge を利⽤して 証明書を⾃動発⾏
  33. そしてすべてが Kubernetes-native になる (管理系統・運⽤をKubernetesに寄せたいお気持ち) 詳細︓https://employment.en-japan.com/engineerhub/entry/2020/04/16/103000

  34. Thank you for your attention Twitter: @amsy810