0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure LocalでAKSを動かしてみる

Posted at

本記事について

本記事はAzure LocalでAKSを動かしてみた際のメモです。
AKS on Azure Localにはこれまで触れてこなかったのですが、少し前にAKS on Azure LocalでのEdge RAGがプレビューリリースされたのを見て俄然興味が湧いてきた次第です。
当のEdge RAGはそこそこに潤沢なリソースを必要とするため、私の手元の環境では動作させられなかったのですが、今後のために前提となるAKS on Azure Localをデプロイした際の手順をまとめておきます。

AKS on Azure Localのデプロイ

事前準備:論理ネットワークの作成

まずは仮想マシン同様に先に論理ネットワークを作成しておきます。
AKS用途も仮想マシン用途も変わりはありませんので、通常通りに論理ネットワークを作成します。
AKSクラスターである程度のIPを消費することを考えて、広めにアドレス空間を用意しておくとよいでしょう。
lnet-01.png

AKSクラスターの作成

次にAKSクラスターを作成していきます。今回はAzureポータルからGUIで作成しました。
Azure Local VMと同じくカスタムロケーションや論理ネットワークを指定しつつ、通常のAKSクラスターと同様なパラメータを指定していきます。
ポッドのネットワークはcalicoによるオーバーレイネットワークのみのようです。

一点引っかかったのはSSHキーをクラスターを作成しながら新規作成としたところ検証のタイミングでエラーが出ました。
そのため、先にSSHキーだけ作成して既存のものを選ぶ形にしています。
create-aks-01.png
create-aks-02.png

作成が成功するとコントロールプレーン用のノードVMとアプリケーション用のノードVM(今回はどちらも1台ずつ)がAzure Local上で実行されています。
controle-planeノードがkubernetesのAPIサーバ等を実行しており、nodepoolがアプリケーションのデプロイ先になります。
なお、nodepoolはAzure Arcのエージェントも実行しているとのことで、必ず1つはLinuxのnodepoolが必要になるとのことです。
node-vm-01.png

AKS on Azure Localへの接続

アプリケーションをデプロイするためにAKSクラスターに接続していきます。
通常のAKSであればkubeconfigを取得して、それを使ってkubectlで接続しますが、ここが少し違います。

AKS on Azure Localでは以下のコマンドでkubeconfigを取得しつつ、Azure Arc経由でトンネルを開きます。
これはAzure Arc-enabled serversにAzure Arcの機能でSSH接続する方式と同様な仕組みのようです。
インバウンドの穴あけ不要でリモートからオンプレのAKSにアクセスできるので非常に便利です。
kube-proxy-01.png

トンネルを開いたら、別のセッションでkubectlを実行します。
kubeconfigは先ほどのコマンドでダウンロードされているので、それを指定します。
kubectl-01.png

早速podをデプロイしてみます。nginxのpodを1つデプロイしてみました。

nginx-pod.yaml
nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-test
labels:
    app: nginx-test
spec:
containers:
- name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

nginx-pod-01.png

次はこのpodを外部に公開する方法を試していきます。

アプリケーションを公開する

NodePort経由で公開する

AKS on Azure LocalのドキュメントではMetalLB経由で公開する手順が掲載されていますが、とりあえず手っ取りば早くNodePortで公開してpodが動作していることを確認したいと思います。

こんな感じでノードの30007番ポートをpodの80番ポートに向けるNodePortのサービスをデプロイします。

nodeport-service.yaml
nodeport-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nodeport-test
spec:
  type: NodePort
  selector:
    app: nginx-test
  ports:
    - port: 8080
      targetPort: 80
      nodePort: 30007

デプロイに成功すると、このようにノードのIPに30007番ポートでアクセスすることでnginxのpodにアクセスできるようになりました。
access-by-nodeport-01.png

MetalLB経由で公開する

次に同じpodをLoadBalancerサービス経由で公開してみます。
AKS on Azure LocalではLoadBalancerサービスにMetalLBが利用できます。
MetalLBはノードで実行されますが、公開用IPアドレスの外部への公開方法はL2 (ARP)とL3 (BGP)の2通りがあります。
BGPでの公開の方が複数ノード間での負荷分散ができますが、ネットワーク機器側でBGPの設定が必要になるため今回はシンプルなARPの方式を試します。

MetalLBの構築手順はこちらに説明があります。
MS Learn | MetalLBロードバランサーを使用する

  1. MetalLBの拡張機能を有効化
    まずこちらの手順を参考にAzure CLIで拡張機能を有効化します。
    MS Learn | MetalLBのArc拡張機能を有効化する
    enable-metallb-01.png
    なお、AzureポータルからAKSリソースの[ネットワーク]画面でも有効化できるようなのですが、私の環境では失敗したためAzure CLIを利用しました。
    enable-metallb-02.png

  2. MetalLBのデプロイ
    MetalLBのデプロイも同じくAzure CLIから実行しました。
    基本的には手順通りで、一点注意点を上げると"addresses"の引数に指定するMetalLBに割り当てるアドレス(アドレス空間)は、単体IPのみの場合でもCIDR表記にしないとエラーが出ます。
    ×:192.168.10.213
    :192.168.10.213/32
    enable-metallb-03.png
    デプロイに成功するとAzureポータルでMetalLBを確認できます。
    enable-metallb-04.png

  3. LoadBalancerサービスのデプロイ
    最後にLoadBalancerサービスをデプロイして、LoadBalancerサービスにMetalLBのIPが割り当てられていることが確認できました。

    lb-service.yaml
    lb-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: metallb-test
    spec:
    type: LoadBalancer
    selector:
        app: nginx-test
    ports:
        - port: 8080
        targetPort: 80
    

    enable-metallb-05.png
    MetalLBのIPアドレス宛てにアクセスすると、ターゲットに設定したnginxのpodで実行されているアプリケーションが表示されました。
    access-by-metallb-01.png

まとめ

機能自体は22H2以前からプレビューで存在していたものですが、今回初めてAKS on Azure Localを試してみました。
AKSとAzure Arcの知識があれば大きく戸惑うことはなくドキュメントの手順でとりあえず動かすことはできました。
今回は監視サービスは無効化してAKSをデプロイしていますが、通常のAKS同様に監視サービス、管理面でクラウドのAzureサービスが利用できるのはAzure Arcの良い点ですね。

Edge RAGや最近GAし始めている?data service系のAzure ArcのサービスはこのAKS on Azure Localがベースになって動作するようなので、慣れておきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?