2019の11日目の記事です。KubernetesにとりあえずWEBサーバを立てたい時、ありませんか?単にHTTPを受け付けるサーバが欲しいのであれば、適当にApacheやnginxのイメージを起動すれば良いのですが、筆者の場合、エッジケースの調査のために、処理遅延させたり負荷をかけたり、もう一捻り小細工を入れたいケースがよくあります。自作のプログラムをKubernetesで動かす場合、アプリケーションをDockerイメージで用意するのが普通です。ものぐさな筆者には耐え難い苦痛です。そんなわけで、WEBアプリケーションをDockerイメージを構築せずにサクッと起動させる方法をご紹介します。自分でプログラムを書く前に、代替手段がないか検討してみると良いでしょう。「指定時間sleepを入れたい」なんて場合はhttpbinが解決してくれます。ホストされているサービス。リクエストのインスペクション、Cookie発行、リダイレクト、ランダムデータ生成など、HTTP開発にまつわる様々なツールを提供してくれます。Pythonで書かれたOSSなので、自前で起動しておくと負荷を掛けたい時にも気兼ねなく呼びだすことができます。port-fowardが楽で良いです。以下のコマンドを実行している間、kubectlを実行したマシンの8080ポートにアクセスするとhttpbinが使えます。アクセスすると、SwaggerUIの画面が表示されるのでどんなAPIがあるのか見ておくと良いでしょう。以下のURLでレスポンスを10秒遅延させることができます。"http://localhost:8080/delay/10"}記事のタイトルにあるように「使い捨てWEBアプリ」なので不要になったら削除するのを忘れずに。httpbinPHP編httpbinは便利ですが、それだけですべての要望に対応することはできません。書いたコードを動かすのが手っ取り早いことも多いです。そんな時のため、KubernetesのマニフェストだけでPHPアプリケーションを動作させてみます。?>EOShttpbinに比べてかなり複雑になりましたが、1コマンドで実行できるので我慢しています。annotationに日付を埋め込んでいるのは、2回以降にapplyした際に新しいコードが反映されるようにするためです。アクセスすると、おなじみのphpinfoが表示されます。変えて実行してください。今度はSpringBootを実行してみましょう。単一のgroovyファイルを書くだけで動作させることが出来るため、PHPと同じように、Kubernetesのマニフェストだけで起動することができるのです。World!"}}EOS起動ごとに依存ライブラリをダウンロードしてくるので起動がやたら遅いですが、Grabアノテーションでコード中に依存関係を記述できるため、1ファイルで大概の処理をこなせてしまいます。筆者は普段JavaやKotlinでSpringBootアプリケーションを書いているためこちらをよく利用します。まとめ要は、スクリプト言語であれば、必要なファイルをConfigMapに突っ込んでマウントすればカスタムイメージ作らなくてもアプリ起動できるよね、という話でした。NodeJS+ExpressやRuby+Sinatraあたりが使えると快適な気がしますが、依存ライブラリのインストールの手間をうまく解消する手段が思いつかず、Apacheだけでそれなりに動作してくれるPHPと、ソースコード中に依存ライブラリを記述してしまえるSpringBootCLIを紹介しました。Kubernetesのとある挙動を調査して記事にしようとしていたものの、挫折した末に副産物を記事にしたのは内緒です。Codeのフォーマッタを自分好みに設定してみる。