/k8s-tutorial

Primary LanguageJavaScript

これはなに?

Kubernetes tutorialsを試すリポジトリです。

使い方

各章に合わせてディレクトリを切っています。ものによっては空のことがあります。

とりあえず、見よう見まねでやっています。 3_stateless_guestbook_redis にはREADMEをつけていて、そのとおりやると、ローカルないしGoogle Kubernetes Engine にクラスタをデプロイできるかと思います。

目標

Railsの開発環境とProduction実行基盤をすぐに作れるようにしたい。 実行環境はこんなイメージ

  • minikube
    • 開発環境
  • GKE
    • 開発中デモ
    • テスト
    • 本番

ここまでやってみてわかったこと

  • "Railsの.."というのは不要。そこはcontainerに閉じてる。ruby-bookshelfのチュートリアルを参照。
    • 具体的には、deployment.spec.template.spec.containers.image に開発したRubyのContainerを指定するだけ(のはず..)
  • データの永続化が必要な場合は、
    • PersistentVolumeClaim(永続ボリューム請求)を使う。これはDynamic Provisioning機能を利用する場合は、PVCが適用された段階で、PersistentVolumeが動的に適用される。
    • GKEの場合は、CloudSQLも使える
      • その場合は、minikubeではどうやって動くのだろう?
      • コンソールでSQLを選択すると、インスタンスを作れるっぽい。おそらく、Cloud Datastoreなどと同じように、設定値でつなぎこむのだろう
    • GKEの場合は、Cloud Datastoreを使える
      • gcs_bucketへのつなぎ込みは設定値をどうにかする
  • 公開したいとき、
  • コードベースの変更はどうやって取り込む?

実際にどうやるか?

  • 第一段階
    • Railsアプリをminikubeで動かせる(hello yay)
      • nao0515ki/docker-for-railsを応用して、ralis newした状態のものを用意しよう(そもそも docker-composeじゃないしね)
        • k8s-for-rails リポジトリを作ってもいいかもしれない
      • deploymentのimageはどうしよう?
        • コードをdocker buildして、それを使う感じかな?
          • ローカルのimageをpullして使ってくれるかな?
          • 開発環境では、skaffoldを使うといいとか..
      • postgressのところは、mysqlに置き換える
      • mysqlへの接続情報のところは、pvcなどを使っていい感じにする
  • 第二段階
    • Railsアプリのコードベースを変更したら、それがminikube上で反映されていることが確認できる
  • 第三段階
    • RailsアプリをGKEにデプロイして公開できる
      • 基本的には、プロジェクトを作って、クラスタを作ったら..
      • あとは同じkubectlコマンドで済むはず
  • 第四段階
    • RailsアプリのIPを固定化し、domainを与え、https化する
    • 手順をメモしておいて、すぐに再現できるようにする
  • 第五段階
    • GitOps式のCICD pipeline を実現する
    • この段階まで、リポジトリ内にマニフェストが混在していてもいい