Azure Kubernetes Service のデプロイに挑戦

オウルです。
今回は Azure のKubernetes マネージドサービスである Azure Kubernetes Service のデプロイに挑戦します。
Azure Kubernetes Service をデプロイするためには、Azure サブスクリプションが必要です。この記事でAzure 無料枠の紹介をしています。
また、Azure Cloud Shell を使用します。使用方法は、以下の公式リファレンスを参考にして下さい。

Azure Container Registryのデプロイ

※以降、Azure Container Registry を ACR と記載します。

CR

Azure コンテナー レジストリは、オープンソースの Docker Registry 2.0 に基づいた、管理された Docker レジストリ サービスです。 プライベート Docker コンテナー イメージを保存および管理する Azure コンテナー レジストリを作成および管理します。
Azure CLI を使用して Azure Kubernetes Service をデプロイします。

zure CLI

Azure CLI は、Azure リソースを管理するためのコマンドライン ツールです。

リソースグループの作成

ACR をデプロイするリソースグループを作成します。

ACR をデプロイ

1 で作成したリソースグループを指定してACR をデプロイします。
SKU は学習する開発者向けのオプションである Basic を指定します。
Azure Container Registry (ACR) は、SKU と呼ばれる複数のサービス階層で使用できます。 これらの SKU は、Azure におけるプライベート Docker レジストリの容量と使用パターンに合ったさまざまなオプションと予測可能な価格を提供します。

Azure Kubernetes Service のデプロイ

※以降、Azure Kubernetes Service を AKS と記載します。
まず、AKS Cluster が ACR と対話できるようにするために、Azure Active Directory のサービスプリンシパルを作成します。

ービスプリンシパル

サービス プリンシパルは、リソース/サービス レベルの無人操作を実行する目的でテナント内で作成する Azure Active Directory アプリケーション リソースです。 アプリケーション ID とパスワードまたは証明書が与えられた、独自のユーザー ID です。 サービス プリンシパルには、割り当てられたロールとアクセス許可によって定義されるタスクを実行するために必要な権限のみが与えられます。

サービスプリンシパルを作成

上記を実行すると以下の出力結果が表示されます。
この後の操作で必要となりますので、コピーして保存します。

ACR のリソースIDを取得

ロールを割り当る

ACR のDocker イメージを使用するために適切なロールを割り当てます。
< appId >:
3 の出力結果の”appId”の値を指定します。
< acrId >:
4 の出力結果の値を指定します。

AKS のデプロイ

1 で作成したリソースグループを指定してAKS をデプロイします。
< appId >:
3 の出力結果の”appId”の値を指定します。
< password >:
3 の出力結果の”password”の値を指定します。

Kubernetes CLI のインストール

kubectl でAKS Clusterに接続

インストールした Kubernetes CLI を使ってクラスター ノードの一覧を取得します。

KSのリソース
1 で作成したリソースグループの他に下のリソースグループが自動で作成されています。そして、このリソースグループに、AKS Clusterを動作させるリソースが作成されています。
MC_my-k8s-rg_myAKSCluster_japaneast
  • DNSゾーン
  • ネットワークセキュリティグループ
  • ルートテーブル
  • 仮想マシン
  • OSディスク
  • ネットワークインターフェイス
  • ロードバランサー
  • パブリックIPアドレス
  • 可用性セット

ACR のログインサーバ情報を取得

ACR にイメージプッシュ

プッシュする Docker イメージは前回作成した myapp イメージを使用します。
< acrLoginServer >:
9 の出力結果の値を指定します。

ACR のイメージ一覧

AKS にデプロイ

AKS に 10 でプッシュした Docker イメージをデプロイします。

まとめ

今回は、Azure に ACR と AKS をデプロイしました。どちらもマネージドサービスのため、オンプレ環境に全て自前で構築する場合と比較すると、その手軽さと速度を感じることができたのではないかと思います。それに、コンテナを動作させるホスト側では、エージェントノード(ワーカーノード)のみを管理すればよいという点もクラウド、且つマネージドサービスの恩恵です。近い将来、AWS Fargate のようなフルマネージドサービスの提供もあるかもしれません。今後のクラウドサービスに注目です。
※但し、AWS Fargate は、デプロイしたコンテナにログインできないなどの制約はあります。

おススメ書籍

▼ Azure定番システム設計・実装・運用ガイド
『Azure定番システム設計・実装・運用ガイド オンプレミス資産をクラウド化するためのベストプラクティス』
パブリッククラウドは色々なことができるため(マイクロサービス アーキテクチャ)、知識の整理が難しいというのが僕の悩みです。しかも公式リファレンスは、どうも翻訳が・・・。と思っていた時に、何気に見ていたAzure サポートブログで紹介されていました。著者が全員、現役のマイクロソフトのAzureテクニカルサポートのエンジニアです。
▼ Kubernetesの入門書
『入門 Kubernetes』
1.6,5 のバージョンで解説(リポジトリ、注釈は翻訳時の最新1.9で更新)されています。バージョンは少し古いですが、初心者の入門書(おえるべきポイントはしっかり網羅されてる)としては、途中で挫折しない適度なボリューム(本の厚さ)で、とっかかりとしては良い本になっています。
▼ Kubernetesの入門~応用までをカバー
『Kubernetes完全ガイド (impress top gear)』
僕は「入門 Kubernetes」⇒「Kubernetes完全ガイド」(現在進行形)という進み方をしていますが、より本番環境を想定した方法を学べます。特にWeb 系だと、https で使用する Ingress リソースなどもしっかり説明してくれています。「入門 Kubernetes」には、詳しい説明がなかったので個人的にはすごく助かっています。
▼ Docker / Kubernetesの入門
『Docker/Kubernetes 実践コンテナ開発入門』
コンテナオーケストレーションプラットフォームである Kubernetes を学ぶときには、どうしても Docker の知識が必要となってきます。それをまとめているのが、この本です。途中で挫折しない適度なボリューム(本の厚さ)で、とっかかりとしては良い本になっています。

コメントを残す

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

CAPTCHA