使用code-server在Kubernetes的In-Cluster和In-Pod环境中实现微服务开发风格的方法。 (1/2)
code-server 是什么?

使用code-server在Kubernetes上轻松进行微服务开发。
-
- 以前、はじめて code-server の存在を知った時に、 「コレって Pod 上で使ったら、最初から Kubernetes クラスタ内でマイクロサービス開発できるのでは!?」 と思ったことがありました。
- 実際使ってみたら、期待通りの便利さと可能性を感じましたので、簡単ですが共有いたします。
在Kubernetes中,有什么使得集群内和容器内微服务开发如此令人兴奋的好处?
可以利用测试环境中的现有微服务群,同时进行从头开始的开发并进行整合。

不需要重新构建和部署容器镜像,可以立即反映变更。
-
- Kubernetes の Pod 上で動かすのはコンテナなので、通常ではアプリケーションプログラムを修正するたびにコンテナイメージを再ビルドし、再デプロイする必要があります。しかし、これでは修正〜テストのサイクルが長くなってしまい、非効率的です。
- アプリケーションプログラムを修正したら、再ビルド・再デプロイせずに即反映できたら効率的ではないでしょうか?
不需要重新创建Pod,可以重新启动主容器。
-
- 前述した二つは、後述する code-server の in-Cluster な開発スタイルで実現できます。
-
- さらに、後述する code-server の in-Pod な開発スタイルでは、Pod の再作成なしにメインコンテナを再起動できます。
Pod の再作成よりもコンテナの再起動の方が速い ですので、修正〜テストのサイクルが短くなって便利です。
利用 code-server 进行集群内和容器内开发的方式

要通过code-server在集群内进行开发风格,应该如何操作?
code-server には、下記の helm チャートが存在しますので、こちらに従ってインストールするだけです。
Helm でのインストール方法
要进行基于code-server的in-Pod开发风格,应该如何操作?
- 後述するマニフェスト例のように、code-server をサイドカーにした構成で開発します。
侧边容器是什么?
-
- ひとことでいうと、Kubernetes の Pod に対して、メインのコンテナ(例えば Node.js サーバーなど)のとなりに配置する、サブの役割を担うコンテナ(例えば、fluentbit とか vector のようなログフォワーダーなど)のことです。
-
- 同じ Pod 内に同居する形になるため、メインのコンテナと同じボリュームを共有マウントすることができます。
- このため、サイドカーコンテナには、ログや分散トレーシング情報の転送だったり、今回の code-server ではアプリケーションプログラムの修正など、さまざまな役割を担わせることができます。
code-server的附属方式是什么?

怎样重新启动应用程序执行程序?
-
- コードの作成やデバッグが完了したら、アプリケーションプログラム(例えば Node.js サーバや Go のバイナリなど)を再起動したいわけですが、アプリケーションプログラムは、code-server と同一 Pod とはいえ、別コンテナになります。このため、直接プロセスを確認したり、再起動させたりすることはできません。このため、ちょっとした工夫が必要になります。
- 今回は、Kubernetes の liveness probe の仕組みを使って、アプリケーションプログラムを再起動させたいと思います。
活动探针是什么?
コンテナの生死状態を確認するための仕組みです。
例えば、特定の HTTP ポートを叩いて、200 以上 400 未満のステータスコードが返ってきたらコンテナは生きているとみなす、などの定義や、コマンドを実行して 0 以外が返ってきたらコンテナは死んでいるとみなして再起動させる、などの定義ができます。
コマンド実行による Liveness Probe を定義する
怎么具体地做呢?
- 今回は liveness という名前のファイルが存在していたらコンテナは生きているとみなす、ファイルが存在していなかったらコンテナは死んでいるとみなして再起動させる、という挙動を定義して、code-server からアプリケーションプログラムの再起動を実現したいと思います。
新闻的续篇
请参阅这篇文章的继续部分,标题为「通过code-server在集群和Pod中实现Kubernetes微服务开发风格(2/2)」。