ASP.NET Core の Docker アプリケーションを Kubernetes にデプロイする

オウルです。
今回は、Visual Studio 2017 Community を使って ASP.NET CoreDockerアプリケーションを Kubernetes にデプロイしてみます。
ローカル環境
IDE
Visual Studio 2017 Community
言語
ASP.NET Core 2.1
PC
Windows10
Docker for Windows
ローカルに Kubernetes 環境がない場合は、こちらの記事を参考に準備してください。
ASP.NET Core
ASP.NET Core は、インターネットに接続された最新のクラウド ベース アプリケーションを構築するための、クロス プラットフォームで高パフォーマンスのオープン ソース フレームワークです。
今後は ASP.NETASP.NET Core を選択する必要がでてきそうです。個人的に新規の場合は ASP.NET Core で良い気がしています。
※別の機会に ASP.NET Core を取り上げる予定です。
ASP.NET Core プロジェクト作成
Visual Studio 2017 には Visual Studio Tools for Kubernetes が提供されていますが、今回は ASP.NET Core Web アプリケーションプロジェクトを作成します。
isual Studio Tools for Kubernetes
Visual Studio Tools for Kubernetes を使用すると Visual Studio から「Container Application for Kubernetes」プロジェクトを作成することができるようになります。
公式リファレンス:
「Container Application for Kubernetes」は、Azure Kubernetes Service を利用して Visual Studio で開発(デバック)することが可能なプロジェクトです。
今回「Container Application for Kubernetes」プロジェクトを使用しない理由は、学習の観点から主に以下のようになります。
  • Azure サブスクリプションが必要
  • Azure Kubernetes Service(Azure Dev Spaces)が必要
  • デプロイ用のマニフェスト等が自動で作成されるが、学習のためマニフェストは手動で作成したい
  • ローカル環境で完結させたい
上記の理由から ASP.NET Core の Docker 有効化したプロジェクトを作成して Kubernetes にデプロイします。Docker イメージ化しておけば、デプロイ先がオンプレ、Azure、AWS、GCP のいづれであろうと動作するはずですし、それが以前紹介した Docker の携帯性のメリットです。
ASP.NET Core プロジェクトを選択
  1. Webアプリケーション(モデル ビュー コントロール)を選択します。
  2. Dockerサポートを有効にするのチェックONにします。
  3. OS:Linux
  4. 認証:個別のユーザアカウントを選択します。
ソリューションエクスプローラーにDockerfileが自動で作成されています。Dockerfile の内容は、こちらの記事で紹介しています。
デバック操作
デフォルトのプロジェクトをデバックします。
デバックの[ Docker ]ボタンクリックします。
下のWebアプリケーションがブラウザに表示されます。
デバック出力コンソール
Visual Studio のデバック出力コンソールを見てみます。
出力元をビルドに切り替えます。切り替えるとDocker イメージのビルドとデプロイの実行ログが出力されています。
oker イメージのビルド
Docker イメージを確認します。
Docker コンテナを確認します。

Kubernetes にデプロイ
Visual Studio の「発行」機能で Docker イメージを作成することは可能ですが、今回は学習も兼ね CLI で実行します。
因みに Visual Studio の「発行」で選択できるコンテナレジストリは以下です。
Visual Studio の発行先
  • Azure Container Registry
  • Docker Hub
  • カスタム(プライベート Docker Registry)
Dockerイメージをビルド
マったこと
先ほどのデバックで Visual Studio がビルドした Docker イメージあるのに、なぜもう一度ビルドするのと思った方がいらっしゃるかもしれません。実際、僕も「 frontaspnetcoreapp:dev 」でデプロイしようと試みましたが、ハマりました・・・。「 frontaspnetcoreapp:dev 」を指定して何度 run コマンドを実行しても Docker コンテナが起動しないのです(正しくはコンテナは起動したが完了状態に移行)そこで、もう一度 Visual Studio でデバックした時のビルドコマンドをよく見ると —target がついてる・・・。せっかくなので、Docker イメージの詳細を見てみます。
Docker イメージの詳細
はい、”Cmd”が違いますね。そりゃエラーなく完了します。。。
Kubernetes にデプロイ
マニフェストファイルを作成します。
Kubernetes にデプロイします。
公開ポートを確認します。
デプロイしたコンテナにアクセスしてみます。
http:localhost:30385
Visual Studio のデバック時にブラウザに表示されたページが同じように表示すればデプロイ成功です。
まとめ
Visual Studio 2017 Community を使って ASP.NET Core の Dockerアプリケーションを Kubernetes にデプロイしました。
  • ASP.NET Core のアプリケーションを Docker イメージとしてビルド
  • マニフェストファイルを作成して、Kubernetesにデプロイ
次回以降では ASP.NET Core アプリケーションを題材に、Web アプリケーションに必要なミドルウェアを Kubernetes 上にデプロイして連携させたいと思います。
Kubernetes完全ガイド (impress top gear)

Kubernetes完全ガイド (impress top gear)

青山 真也
4,104円(01/18 01:30時点)
発売日: 2018/09/21
Amazonの情報を掲載しています
Docker 実践ガイド (impress top gear)

Docker 実践ガイド (impress top gear)

古賀 政純
3,240円(01/18 01:30時点)
発売日: 2015/12/17
Amazonの情報を掲載しています



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA