御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Azure Kubernetes Service (AKS)クラスターをAzure CLIを使ってデプロイしてみた

Azure Kubernetes Service (AKS)とは

AKSを使うと、ホストされている Kubernetes 環境を管理できます。
これにより、コンテナーオーケストレーションの知識がなくてもコンテナー化されたアプリケーションを迅速かつ簡単にデプロイおよび管理できるようになります。

Azure Kubernetes Service の概要 | Microsoft Docs

  • Azure Kubernetes Service (AKS) を使用すると、マネージド Kubernetes クラスターを Azure 内に簡単にデプロイできます。

  • 責任の多くを Azure にオフロードすることで、Kubernetes の管理の複雑さと運用上のオーバーヘッドを軽減します。

  • Kubernetes マスターは、Azure によって管理されます。 ユーザーは、エージェント ノードの管理とメンテナンスだけを行います。

  • AKS は無料のため、マスターではなく、クラスター内のエージェント ノードに対してのみ料金を支払います。

AKSの機能

アクセス、セキュリティ、および監視

AKS では、Azure Active Directory と統合して、Kubernetes のロールベースのアクセス制御を使用することができます。
また、クラスターとリソースの正常性を監視することもできます。

  • ID とセキュリティ管理
  • ログ記録と監視の統合
クラスターとノード

AKS ノードは Azure 仮想マシンで実行されます。 サービスを実行するクラスターノードやポッドの数を自動的にスケールアップ、ダウンすることができます。

開発ツールの統合

Kubernetes には、Helm、Draft、Visual Studio Code 用の Kubernetes 拡張機能など、
これらのツールは、AKS でシームレスに動作します。

Docker イメージのサポートとプライベート コンテナー レジストリ

AKS は Docker イメージ形式をサポートしています。

最初のセットアップ

AzureCloudShell を使うか、WindowsマシンからAzure CLIを実行するかどちらかを選択します。 今回はAzureCLIをAzureCloud Shellから実行してみました。

Azure CloudShell

docs.microsoft.com

Azure CLIのインストール

下記ページを参照
docs.microsoft.com

Azure Kubernetes Service (AKS)クラスターを作成する

リソースグループの作成

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

az group create --name myAKSCluster --location eastus
2.AKSクラスターの作成

AKSクラスターを作成します。
次の例は"myAKSCluster"という名前のクラスターを 1 つのノードで作成する例です。

az aks create --resource-group myAKSCluster --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys
3.Kubernetesコマンドライン クライアントである kubectlのインストール

Azure Cloud Shellの場合は、既にインストールされているので実行しなくて大丈夫です。

az aks install-cli
4.資格情報をダウンロードし、Kubernetes CLI を構成してそれらの資格情報を使用する
az aks get-credentials --resource-group myAKSCluster --name myAKSCluster
5.接続確認として、クラスター ノードの一覧を取得する
kubectl get nodes
6. アプリケーションを定義するyamlファイルを作成する

"azure-vote.yaml"という名前のyamlファイルを下記コードをそのままコピペして作成します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-back
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-front
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front
7.CloudShell上で実行できるように作成したyamlファイル(azure-vote.yaml)をアップロードする

ファイルのアップロードボタンを使用してyamlファイルをアップロードします。 f:id:tt-suzukiit:20181108200109p:plain

8.アプリケーションを実行する

アプリケーションが実行されると、アプリケーション フロントエンドをインターネットに公開する Kubernetes サービスが作成されます。

kubectl apply -f azure-vote.yaml
9.アプリケーションをテストする

Kubernetes サービス作成の進行状況を監視するには下記のコマンドを実行します。

kubectl get service azure-vote-front --watch

azure-vote-front サービスの EXTERNAL-IPが"保留中"から"IPアドレス"に変わったらCtrl + Cで監視を停止します。
取得したEXTERNAL-IPでブラウザにアクセスをすると、下記画像のようなAzure Vote Appが表示されます。

f:id:tt-suzukiit:20181108201231p:plain

10.クラスターを削除する

クラスタが不要になったら下記コマンドを実行して削除します。

az aks delete --resource-group myResourceGroup --name myAKSCluster --no-wait

参考ページ

docs.microsoft.com

docs.microsoft.com