2018年4月に、拙著『プログラマのためのDocker教科書 第2版』を刊行しました。2015年の初版では、初めてDockerを利用される読者の皆さんに向けてDockerコンテナを使ったWebアプリケーションのビルド手順や、Dockerfile/Dockerコマンドのリファレンスを中心に説明したのですが、第2版では後半にKubernetesによるDockerコンテナのデプロイ手順についての説明を加えています。
本書をもとに実際に手を動かしながら読み進めていただくには、DockerfileやKubernetesのマニュフェストファイルの編集やコマンド実行が必要になります。
本書ではそのための具体的なKubernetesの実行環境としてGoogle Cloud Platformを中心に解説しました。ですが、コンテナはアプリケーションの可搬性が高く、ほかのクラウドやオンプレミス環境でも動かすことができます。
そこで本記事では、新著のコラムでもご紹介したMicrosoftが提供するエディタ「Visual Studio Code」とパブリッククラウド「Azure」を使ってコンテナアプリケーションをデプロイする方法の概要をご紹介します。
Visual Studio Codeを使ってみよう
Visual Studio Code(以下VS Code)はMicrosoftが提供するオープンソースのソースコードエディタです。無償で利用でき、WindowsだけでなくmacOSやLinuxのクロスプラットフォームで動作します。
また、Visual Studio Marketplaceで提供されている拡張機能を組み込み、カスタマイズして使えるのが特徴です。DockerやKubernetesの設定ファイルの作成を支援する拡張機能もあります。
Visual Studio Codeの機能
VS CodeはElectronと呼ばれるクロスプラットフォームのデスクトップアプリを開発するためのフレームワークで開発されており、Python/Node.js/Ruby/C#などさまざまな開発言語をサポートしている軽量/高機能なテキストエディタです。現在VS Codeが提供する主な機能は次のとおりです。
- デバッグ機能
- 構文ハイライト
- IntelliSense(入力補完機構)
- Gitとの連携
- タスクの自動実行
- 拡張機能の組み込み
- 統合ターミナル機能
統合ターミナル機能はWindows PowerShellだけでなくシェルなども実行でき、アプリケーション開発者だけでなくインフラエンジニアにとっても便利です。
Visual Studio Codeのインストール
それでは、さっそくVS Codeをインストールしてみましょう。インストーラはMicrosoftのVisual Studio Code公式サイトのトップページまたはダウンロードページからダウンロードできます。
お使いの開発PCに合わせてWindows/Linux/macOSを選んでダウンロードしてください(インストール手順と動作環境の詳細については公式サイトを参照のこと)。たとえばWindowsの場合は、Windows7/8/10で動作します。ダウンロードした実行ファイル「VSCodeSetup-x64-1.22.2.exe(執筆時点)」をダブルクリックし、指示に従ってインストールしましょう(Windows用ファイルのダウンロードはこちら)。
Docker/KubernetesのVS Code拡張機能
VS Codeのインストールが完了したら引き続いてDocker/Kubernetesでの開発に便利な拡張機能をインストールします。VS Code内で拡張機能をインストールするときは[表示]―[拡張機能]を選択するか、キーボードでCTRL]+[SHIFT]+[X]を入力します。
拡張機能は「Visual Studio Marketplace」のページでさまざまなものが提供されていますので、キーワード検索してお好みのものを手軽に試してみるとよいでしょう(ページはこちら)。
今回は、Docker/Kubernetesを使ったアプリケーション開発に便利な2つの拡張機能をご紹介します。
Docker Support for Visual Studio Code(Microsoft)
VS Codeの拡張機能の検索バーに「Docker」と入力すると、いくつかの拡張機能が表示されます。ここでは、Microsoftが提供するDocker拡張機能をインストールします(ページはこちら)。
これにより、Dockerfile/docker-compose.ymlファイルの構文ハイライトや、IntelliSense、Dockerコマンドのコマンドパレットが利用できるようになります。またDocker Hub/Azure Container Registriesで公開しているDockerイメージをもとにして、Azureが提供するPaaSであるAzure App Serviceにデプロイもできます。
この拡張機能をインストールするには[インスト―ル]ボタンをクリックします。
インストールが完了したら、VS Codeを再読み込みして拡張機能を有効にします。Dockerfileを開くとIntelliSenseが有効になったり、構文ハイライトされたりしているのが分かります。タイプミスによるエラーを減らすことができ、[F1]キーによるDockerイメージキーボード操作のみのビルドが可能になり便利です。
Visual Studio Code Kubernetes Tools(Microsoft)
これはMicrosoftが提供するKubernetesクラスタへのデプロイやクラスタ操作をサポートするための拡張機能です。執筆時点ではまだプレビュー版のリリースですが、こちらからインストールできます。
また、依存関係でインストールされるYAML Support by Red HatによりKubernetesのマニュフェストファイルの構文サポートや入力補完も有効になります。
なお、この拡張機能を利用するためには、あらかじめお使いの環境に以下のコマンドがインストールされ、環境変数PATHに設定されている必要があります。公式サイトをもとに開発環境のOSに応じて設定してください。
オプションで、Kubernetesのパッケージマネージャである「Helm」やコンテナアプリケーションのビルド/デプロイツールである「Draft」もサポートされています。
Azure Kubernetes Serviceを使ってクラスタを立ち上げよう
『プログラマのためのDocker教科書 第2版』では、Kubernetesクラスタを構築するためのマネージドサービスとして、Google Cloud Platform(以下GCP)が提供する「Google Kubernetes Engine(以下GKE)」を一例として解説していますが、AzureのKubernetesマネージドサービスである「Azure Kubernetes Service(以下AKS)」でもKubernetesクラスタを簡単に構築できます。
執筆時点ではプレビューですが、Kubernetesのco-founderであるソフトウェアエンジニアのBrendan Burns氏をリーダーとして開発が進められています。Microsoftが提供する開発ツール群やHelm/Draft等のオープンソース連携など、プログラマ向けのマネージドサービスであるため、筆者も非常に注目しています。
AKSは執筆時点では、以下のリージョンでプレビューとして利用できます(公式サイトはこちら)。
- 米国東部
- 西ヨーロッパ
- 米国中央部
- カナダ中部
- カナダ東部
Kubernetesクラスタの作成/デプロイ
AKSは公式ドキュメントが充実しており、チュートリアルを見ながらKubernetesクラスタをAzureのコマンドラインツールであるAzure CLI(バージョン2.0.27以降)、またはAzureポータルから作成できます。AzureポータルにはGCPと同様の機能を持つWebブラウザからコマンドが実行できる「Cloud Shell」が提供されています。
それぞれのチュートリアルの公式サイトは以下のとおりです。サイトの手順にしたがってクラスタを作成してください。
数分するとKubernetesクラスタが作成されます。Kubernetesクラスタへのアクセスや操作は、GKEと同じようにkubectlコマンドがそのまま使えます。チュートリアルに従ってサンプルアプリケーションをデプロイすると、WebフロントエンドとRedisからなるコンテナアプリケーションがクラスタ上に展開されます。
Visual Studio CodeからのKubernetesクラスタ操作
VS Codeの統合ターミナルから次のようにkubectlコマンドを実行すると、エディタ上でKubernetesクラスタの状態が確認できます。また、インストールしたKubernetes拡張機能である「Visual Studio Code Kubernetes Tools」を使うと、VS CodeのサイドバーにAKSで構築したKubernetesクラスタの状態がGUIで表示されます。
kubectlコマンドも[F1]ボタンから実行できるため、マニュフェストファイルの作成をしながらすぐに動作確認やデバッグを行うことができます。たとえば、本書でご紹介したサンプルアプリケーションのDeploymentマニュフェスト「webserver-blue」のレプリカ数を3から8に増やすときは次のようなイメージです。
おわりに
本記事ではDocker/Kubernetesを初めて利用する方に向けて、Microsoftが提供するエディタであるVisual Studio Codeと、AzureのKubernetesマネージドサービスであるAzure Kubernetes Service使ってコンテナアプリケーションをデプロイする方法の概要を紹介してきました。
Visual Studio Codeは非常に高機能なエディタであり、ほかにも便利な機能があります。カスタマイズも軟にできますので、ぜひ開発しやすい環境になるよう皆さんもいろいろ試してみてください。