Azure Antennaさん主催の「こわくない!今からはじめるAzureコンテナ超入門」セミナーに参加してきました。
※本イベントでは、ご参加者自身のブログにて、Azure Antenna で受講いただいた体験をご紹介いただける方に、優先的に参加いただけるよう、抽選前に指名させていただきます。対象者多数の場合は、申込み先着順に指名させていただきます。 コンテナオーケストレーションツールであるKubernetesは、コンテナをプロダク...
まずはDockerの基本的な概念とサンプルプロジェクトを使ったDockerの操作をハンズオン形式で行いました。Docker for Windows、Visual Studio Code、Docker/Kubernetes用のプラグインをインストールして開始です。
Dockerは、Dockerfileという構成を管理するファイルを作成するところから始まります。chefやpupet、ansibleといった環境構築ツールと同じような概念のようです(ただしDockerはVMよりももっと小さいプロセス単位での動作環境を作成します)。ローカル環境でdockerコマンドを用いて、DockerfileからのDockerイメージの作成、起動を行いました。ここまではAzureを使用していません。
そして、Azureを使用してDockerを使用するとどのようなメリットがあるかの説明と実際の操作の説明がありました。
まず、作成したDockerイメージを共有する方法です。Docker公式のDockerHubというイメージの共有サービスがありますが、機密情報が含まれたイメージの管理には向きません。
Azureでは、Azure Container Repository(ACR)という、プライベートなイメージ保存サービスが用意されています。また、DockerfikeからDockerイメージを作成する際、複雑な構成になるとイメージの作成にマシンパワーと時間を要するようになります。これをAzure上で作成する機能、ACR Builderも用意されています。
リポジトリにpushしたイメージは、そのままだと1つのAzureのリージョンに保管されていますが、Azure Portalから簡単にGeoレプリケーションを設定して、別のリージョンにコピーを保存することも可能です。
そして、Kubernetesの説明がありました。Kubernetesは、Dockerなどのコンテナの動作を総合的に管理するもの、ということでした。コンテナを動作させるノードの管理、コンテナの展開、ロードバランス、監視など、非常に多くの機能を持っています。そのため、Kubernetesが動作するMasterサーバは停止してはいけない重要なサーバとなります。
しかし、Masterサーバを冗長構成にするには相当のノウハウが必要とのことでした。
そこで、Kubernetes環境を自前で構築するのではなく、マネージドで提供するのがAzure Kubernetes Service(AKS)となります。上記のACRとの連携も可能で、複雑なKubernetesの環境を、自前で行うより相当早く堅牢に構築できるとのことでした。
今回、Kubernetesの用語や構成要素、動作概念などをかなり丁寧に解説してもらい概要が見えてきましたが、やはり非常に難解な部分が多く、高度な知識を持った専門のインフラ担当者がいないと導入は難しそうでした。(以前、LINEゲームの基盤でKuberenetesを使用していると聞きましたが、そのような大規模なサービス向きのようでした)
講師の方も仰っていましたが、そこまで大規模でないシステムなら、Kubenetesの前にPaaS(App Serviceなど)を先に検討すべきのようです。
ただ、Azureを使用すると小規模からKubernetes環境が構築できそうなので、トレーニングの用途としても良さそうですね。
自分の仕事上Kubernetesを実際の業務で使うことは暫く無さそうですが、Dockerなどのコンテナはどんどん使っていきたいと思います。(もちろんAzureと一緒にw)