Composeを使って開発しています。Composeでの開発はそこそこ快適ではあったものの実際Kubernetes上で動いていないので、細かい環境が異なります。いってMacでKubernetesを動かそうとするといちいちDockerイメージを作ってデプロイしてなければいけなくて面倒です。今回、MinikubeとTelepresenceを使ってKubernetes上なのに快適なローカルな開発環境を構築できました。MinikubeでKubernetesを動かし、TelepresenceでMac上で動いている「プロセスをあたかもKubernetes上で動いているかのように動かせます。ホットリロードもできるのでDockerイメージを作ってkubectlコマンドでデプロイしなくても即時コードが反映されます。MacのKubernetesかという選択肢となります。Macはその上でKubernetesが動きます。MacのKubernetesは動作がとまったり安定しなかったのと、Kubernetesのバージョンがv1.10.11と求めているバージョンより低かったのでMinikubeにしました。Machineのサイズを設定すればそこそこ安定して使えました。TelepresenceについてTelepresenceはどのようにローカルで動いているプロセスをKubernetes上で動いているかのようにしているかというと以下のように、ローカル環境でTelepresenceのクライアントが動き、開発しているソースを実行したプロセスがTelepresenceのクライアントからKubernetesにあるTelepresenceのプロキシを通して通信します。ローカルでプロセスが動いているのでホットリロードもでき高速に開発できます。Telepresenceより)MinikubeとTelepresenceを使ってローカル開発環境を実現それでは実際に環境を構築してみます。今回はFlaskで作られた簡単なPythonのプログラム(ソースコードはここにはないですがサンプルでもなんでも簡単なもので構いません)を実際に動かしKubernetes環境でもホットリロードで開発できることを確かめます。Minikubeあたりをみながらインストールするといいかなと思います。Minikubeがインストールできたら以下のようにスタートします。ディスクサイズとかメモリとかCPUとかは各自のマシンによると思いますので適度に設定してください。自分はこれくらいあれば困りませんでした。6次に、PythonのプログラムをデプロイするためのKubernetesの設定を以下のように作ります。以下の設定はgcr.io/xxx/server-minikubeにDockerイメージがありますが、ローカルにあっても構いません。daemonを参考にして設定してください。1別途上記のserverにアクセスするためのIngress用の設定も作っておきます。別途、MinikubeのIngressのaddonの追加も行っておいてください。5000上記をkubectlコマンドでMinikubeにデプロイします。念の為コンテキストをMinikubeにしてから行っておきます。podコマンドなどで正しくデプロイされたか確認しておきます。ipコマンドで確認したIPにブラウザからアクセスしてみます。今回は、192.168.99.100だったので、ヘルスチェックのパスの192.168.99.100/healthにアクセスして確認しました。Telepresenceを使ってローカルで動かしているPythonのプログラムがホットリロードできるか確かめてみます。いっても驚くほど簡単です。Telepresenceをインストールしてから以下のように実行します。runserverこれだけで、Kubernetes上にあるserverデプロイメントのPodが置き換わります。ソースコードを変えてもホットリロードされ、実際にソースコードが変わっています。まとめMacのローカル開発環境としてMinikubeとTelepresenceを使って快適に開発できる環境の構築を試しました。Composeを使うより、Minikubeを使ったほうがより本番のKubernetesの環境に近づけられます。その場合、従来だとDockerイメージをいちいちビルドしてデプロイしなければなりませんでしたが、Telepresenceを使うことによりホットリロードもできる快適な開発環境が構築できました。これで不満だったローカルでのKubernetes上での開発が快適になり嬉しいです。blogHomeAboutTool。