Azure Kubernetes Service ( AKS ) を使ってみよう|研修コースに参加してみた
今回参加したコースは Azure Kubernetes Service を使ってみよう です。
Microsoft Azure ( 以下、 Azure と言います) をはじめとするクラウドは、 SE カレッジでも人気のあるテーマです。 一方で本番環境でもコンテナで動かすことが増え、クラウド上でコンテナをオーケストレーションできる Kubernetes といったクラウドネイティブ (*) の技術も注目され始めています。
クラウドのようなダイナミックに伸縮できるインフラを活かして自動化、耐障害などを最小限で実行できる技術を指し、例として、コンテナやマイクロサービス、イミュータブルインフラストラクチャなどが挙げられている。
このコースでは、 Azure で Kubernetes の構築・管理ができる Azure Kubernetes Service ( AKS )を使って、ローカルのイメージをプッシュして、 Kubernetes クラスターのデプロイまでをやってみました! コンテナを本番環境で使うことを始めようとしている方にはオススメの内容です !!
では、どのような内容だったのか、レポートします!
もくじ
コース情報
想定している受講者 |
|
---|---|
受講目標 | Docker を使ったローカル環境とクラウドサービスとの連携を学び現場で使うテクニックがわかる |
講師紹介
インフラやクラウドでの登壇が多い 一戸 英男 さんが講師でした。
一戸 英男
「とにかく昔からサーバ構築が大好き」から現場に役立つベストセラーが誕生。研修でも明日から現場で使える技術を教えます
4 つのサービスから始める AWS 入門 (EC2 / IAM / VPC / ECS)|研修コースに参加してみたGCP ( Google Cloud Platform ) と AWS を比較しながら学ぶクラウドサービス入門 研修コースに参加してみたDocker 入門 ~たった 5 つのコマンドで出来る環境構築 研修コースに参加してみた
Azure の準備
Azure の利用に必要なもの
Azure の歴史やグローバルシェアが伸びている状況などを解説いただいた上で、最初に Azure の利用に必要なものを紹介いただきました。
- Azure アカウント (まずは無料アカウント [ 30 日間] )
- クレジットカード
- Azure のサインアップに必要
- 無料枠が終わってもいきなり課金されない
- 超過が近づくと通知が来る
- スマートフォン
- MFA (多要素認証)を使えるように準備 (必須ではない)
Azure 独自の用語
Azure を利用するにあたって独自の用語が頻出するため、事前に用語を押さえます。 これはどのクラウドを使用しても用語が違うので、まとめが欲しいところですね … 。
- Azure ポータル ( Azure Portal )
- Microsoft Azure の Web 上のコンソールパネル
- テナント
- Azure の管理グループ ( Azure の Aictive Directory のようなもの)
- サブスクリプション
- 契約内容、支払方法、サポートプランごとの単位
- 実行・設定権限が決めれている
- リソースグループ
- システム単位で使用する仮想マシンや DB などクラウドサービスをまとめたもの
- アクセス許可やポリシーをグループで共有する
上から大きい順に、階層構造になっています。
Azure Kubernetes Service とは
本来の Azure Kubernetes Service ( AKS ) の解説に移ります。
- Azure でコンテナを実行する方法は 4 つ
- PaaS
- Web App for Containers
- IaaS
- AKS
- Azure Container Instance
- Virutual Machine
- PaaS
どれを選択するかは、規模や用途によります。
- サーバやネットワークは意識しない人は PaaS
- 大規模な場合は AKS
- バッチ処理などをサーバレスで行うには Azure Container Instance
- Virtual Machine は PC で使うものと変わりない
AKS を深堀りしましょう。
- Kubernetes を含むコンテナサービス
- Kubernetes はオーケストレータ (ロードバランスやリソースの増減などを行う)
- ローカルからコンテナイメージを Azure Container Registry ( ACR ) にアップロード
- ACR から AKS にデプロイする
AKS はあくまでコンテナを実行する環境であって、コンテナの構築はローカル PC や仮想マシンで行います。 GitHub を使う際、ローカルにリポジトリがあるのと同じようなイメージですね。
Azure CLI から ACR にコンテナイメージを登録
ここから実際に AKS を使ってコンテナをデプロイしてみましょう!
Azure の操作方法
AKS など Azure を操作するには、次の 3 つの方法があります。
- Azure CLI
- ローカルに導入したコマンドラインツールから操作
- Azure ポータルの Cloud Shell
- Azure ポータルでブラウザ上のターミナルを開いてコマンド操作
- Azure ポータルの GUI
- 初心者や作業数が少ない場合など
ここでは Azure CLI を使います。 今回は Windows 版の Azure CLI をイントールします。
ACR でコンテナレジストリを作成
まず ACR にコンテナの置き場所となるコンテナレジストリを作ります。この作業はここでは Azure ポータルで行います。
「リソースの作成」をクリックし、「 Container Registry 」の「作成」を選んで、以下のように設定します。
- リソースグループを「新規作成」
- ユニークなレジストリ名を入力
- 場所を選択
- SKU を選択
レジストリの情報の「ログインサーバ」に表示されるホスト名 (今回は nginx02.azurecr.io ) は次で使うのでメモしておきます。
ACR にコンテナイメージをアップロード
このレジストリに、 Azure CLI から docker コマンドでコンテナイメージをアップロードします。
- ローカルの Docker 環境で Docker Hub からコンテナイメージをダウンロード
$ docker pull mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
- コンテナを実行して動作確認します。
$ docker run -it --rm -p 8080:80 mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
- Azure CLI の az コマンドで Azure にログイン
- ブラウザが開くのでユーザ認証
$ az login
- ACR にログイン
$ az acr login --name nginx02 #コンテナレジストリ名を入れる
- docker tag でイメージに ACR のレジストリのパスを紐付け
$ docker tag mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine nginx02.azurecr.io/my-nginx:v1
- ACR にコンテナイメージをプッシュ
$ docker push nginx02.azurecr.io/my-nginx:v1
ふたたび Azure ポータルのコンテナレジストリで確認して、「 my-nginx 」が登録されていれば成功です。
AKS で Kubernetes クラスタをデプロイしてみよう
まず Kubernetes と AKS について学びます。
Kubernetes とは
- 分散環境でコンテナの負荷分散などをする
- ゲーム系のサーバではよく Kubernetes が使われる
- 1 日の中でのリソース変動が大きい
- Kubernetes でクラウド間の連携もできる
- サーバのような役割を持つ Node の上で、 1 つのシステムを構成するコンテナをまとめた Pod が動く
- 複数の Node をまとめたものがクラスター
- クラスターはコントロールプレーン ( Control Plane ) と呼ばれるスケジューラなど OS のような役割を果たすものと、データプレーン ( Data Plane ) と呼ばれるコンテナを司るもので構成される
- AKS ではコントロールプレーンを Azure が Manage する ( 自前でやらなくてよい )
Kubernetes クラスターをデプロイ
AKS のデプロイで使えるツールは 5 つあります。
- Azure ポータルの使用
- Azure CLI の利用
- Azure PowerShell の利用
- PowerShell から Azure を操作できる
- Azure Resource Manager テンプレート (インフラ構成を JSON 形式で記述したもの) を使用
- HashiCorp 社製の Terraform を利用
今回は Azure ポータルと Azure CLI を使って Kubernetes クラスターを作成します。
- Azure ポータルで「 Kubernetes サービス」> 「 Kubernetes クラスターの作成」を選ぶ
- リソースグループは ACR と同じ
- クラスター名を作成
- 地域を選択
- スケーリング方法を選択。今回は実験なので「手動」
- ノード数を入力。今回は実験なので 1
- コンテナレジストリの「アクセスキー」を表示
続いて、 Azure CLI からコマンド操作できる kubectl をインストールして AKS を操作できるようにします。
- Azure CLI で Azure にログイン
$ az login
- Kubernetes を操作できるコマンドラインツール kubectl をインストール
$ az aks install-cli
- ACR にログイン
$ az acr login --name nginx02
- コンテナレジストリのクレデンシャル情報を取得
- リソースグループ名と作成したクラスターの名前を指定
$ az aks get-credentials --resource-group MyGroup --name myClust
- kubectl コマンドでクレデンシャル情報を作成
- コンテナレジストリのアクセスキーを使用
$ kubectl create secret docker-registry acr-credential --docker-server=nginx02.azurecr.io \ --docker-username=nginx02 --docker-password=yourpassword --docker-email=yourname@example.jp
これで Kubectl で AKS が使えるようになりました。
では、 AKS に Kubernetes クラスターをデプロイしてみます。
ここでは一戸さんに予め用意いただいた Kubernetes の設定ファイルを使ってデプロイします。
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-nginx
spec:
replicas: 3
selector:
matchLabels:
app: example-nginx
template:
metadata:
labels:
app: example-nginx
spec:
containers:
-name: webapp
image: nginx02.azurecr.io/my-nginx:v1
ports:
-containerPort: 80
imagePullSecrets:
-name: acr-credential
では、デプロイしてみましょう!
$ kubectl apply –f deployment.yml
動いている Pod 一覧を表示すると、デプロイした Pod が動いていることがわかります。
$ kubectl get pods
またブラウザでアクセスして無事動いていることを確認し、コースは修了しました。
まとめ
ローカルからコンテナイメージをプッシュして Azure Kubernetes Service ( AKS ) で Kubernetes クラスターのデプロイをやってみました。
コンテナの本番適用が進む中、 SIer のテックブログでも Kubernetes の記事が発信されるようになり、徐々に普及率が高まってきていることを感じます。
それにしても Kubernetes はこれまでのインフラ用語と異なっているため、かなりイメージがしにくいと感じます。 これは本腰を入れて勉強しないとダメですね。
今回は AKS のサービスを触ってみる、という内容で、そこまで Kubernetes に触れなかったため、これから入門する方にはとてもオススメでした!
Created by modifying “The Kubernetes logo files” (© 2022 The Kubernetes Authors (Licensed under CC BY 4.0))
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 コースをほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。