Azure Kubernetes Serviceで最速k8s

こんにちは、サイオステクノロジー技術部 武井です。今回は、Azureで提供されているKubernetesのマネージド・サービス「Azure Kubernetes Service」(以降AKS)で、Kubernetesを動かしてみたいと思います。

Azure Kubernetes Serviceとは?

Kubernetesを構築するにはたくさんのサーバーを構築しなければなりません。クラスタ全体を管理するMaster、コンテナが稼働するNodeなどです。その管理はとても大変なのは容易に想像ができると思いますが、MasterやNodeを構築することなく、さらにその運用管理までやってくれるのが、Azure Kubernetes Serviceです。我々がやることは、kubectlコマンドでyamlなどの設定ファイルを投げるだけです。楽ちん。

早速実践!!

では、早速やってみましょう。

Azure Container Registryの構築

まずはKubernetesがコンテナを作成するためのイメージを持ってくるレジストリを作成します。通常はDockerHubなどの公開レポジトリを使うのではなく、クローズドなレポジトリを使います。Azure Container Registryはそんなクローズドなレポジトリを提供してくれます。

Azureポータルにアクセスして、「リソースの作成」をクリックします。

Screen Shot 2019-11-21 at 21.26.30

 

「container」と入力すると、「Container Registry」が表示されますので、それをクリックします。

Screen Shot 2019-11-21 at 21.28.01

 

「作成」をクリックします。

Screen Shot 2019-11-21 at 21.29.43

 

「レジストリ名」はレジストリを一意に識別する任意の名称を入力します。後ほどこの値は、レジストリのホスト名の一部になりますので、よく考えて変な名前をつけないようにしましょう。「管理者ユーザー」は有効にしておいて下さい。詳細は後ほど説明します。SKUはとりあえず「Standard」にして下さい。後は、環境に合わせて適宜入力して、最後に「作成」をクリックします。

Screen Shot 2019-11-21 at 21.32.15

 

Azure Container Registryのリソースの作成が完了したら、左部メニューの「アクセスキー」をクリックして、「ログインサーバー」「ユーザー名」「パスワード(2つあるうちのいずれか)」をメモして下さい。ちなみにこのユーザーはテスト用に利用する管理用ユーザーです。本番用途では別途サービスプリンシパルを作成して、適切な権限(Azure Container Registryへの読み取り権限のみ)を割り当てて下さい。

Screen Shot 2019-11-21 at 21.37.12

Azure Kubernetes Serviceの構築

では、いよいよAzure Kubernetes Serviceの構築です。

Azureポータルにアクセスして、「リソースの作成」をクリックします。

Screen Shot 2019-11-21 at 21.26.30

 

「Kubernetes」と入力すると「Kubernetes Service」が表示されますので、クリックします。

Screen Shot 2019-11-21 at 21.42.16

 

「作成」をクリックします。

Screen Shot 2019-11-21 at 21.46.10

 

「クラスター名」はKubernetesクラスターを一意に識別する任意の名称を入力して下さい。「ノードサイズ」は、コンテナが稼働するNodeの仮想マシンのサイズです。なるべくサイズの小さいのを選んでおいたほうがお財布に優しいです。検証用ですし。後はご自分の環境に合わせて適宜入力して、最後に「確認および作成」をクリックします。

Screen Shot 2019-11-21 at 21.48.29

 

入力項目を確認して「作成」をクリックします。しばらくかかるので、気長に待ちましょう。

Screen Shot 2019-11-21 at 21.49.25

 

kubectlコマンドをインストールします。その前にまず、Azure CLIをインストールしましょう。Macを想定しております。他の環境はここを参考にインストールしてくらはい。

次にkubectlをインストールします。

kubectlコマンドを動かすための認証情報を作成します。noriaksはAzure Kubernetes Serviceを作成したリソースグループ、norichan-aksはKubernetesクラスター名です。

これで準備は整いました。では、まずKubernetesにデプロイするコンテナを作成します。

アプリケーションとしては、定番のハロワをPHPで表示するWebアプリにします。以下のPHPを作成します。

 

同じディレクトリに以下のDockerfileを作成します。PHPのイメージをpullしてきて、DocumentRootに先程のPHPファイルを入れています。

 

ビルドします。

 

タグ付けをします。noriacr.azurecr.ioはAzure Container Registryを作成したときにメモしたログインサーバーを指定します。その後は、イメージ名:バージョンの形式で記述します。必ずこの形式で記述して下さい。

 

ではAzure Container RegistryにDockerイメージをpushしましょう。その前にAzure Container Registryにログインしましょう。

 

Azure Container RegistryにDockerイメージをpushしましょう。

 

Azure Kubernetes ServiceがAzure Container Registryにアクセスできるようになるために、Azure Container Registryへの認証情報を作成します。docker-reg-credentialは認証情報を一意に識別する任意の名称、noriacr.azurecr.ioはAzure Container Registryを作成したときにメモしたログインサーバー、noriacrは同じくAzure Container Registryを作成したときにメモしたユーザー名、XXXXXXは同じくAzure Container Registryを作成したときにメモしたパスワード、ntakei@exmaple.comは任意のメールアドレスです。

 

成功すると以下のように表示されます。

 

ではいよいよKubernetesにデプロイです。以下の設定ファイルを作成します。

 

お馴染の以下のコマンドでデプロイします。

 

ちゃんとpodが動いているかどうか確認してみます。

 

キターーー。きちんと動いてます。念の為port forwardingで確認してみます。

 

キターーー。きちんと動いてます。

まとめ

とっても簡単にKubernetesを動かすことが出来ました。ServiceとかIngressとか他のリソースは今後試してみることとします。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*