スイッチと配線図が置かれたアニメ背景調のネットワーク運用室
制作ノート

Azure Kubernetes Service (AKS) + ​nginx-ingressで​固定IPを使う

2023年9月27日

AKS上の​nginx ingress controllerに​固定の​パブリックIPを​割り当てるための​実装記録。

KubernetesAzureIngress

GCPの経験があったため、GKEでnginx-ingressを使用するクラスターに固定IPを設定する作業は、kubernetes.io/ingress.global-static-ip-nameアノテーションを使えば簡単でした。

一方、Azure Kubernetes Service (AKS)で同じ設定を行う方法は資料が少なかったため、短い手順としてまとめます。

手順

1. Azureポータルで、クラスターのリソースグループを指定してPublic IP Addressを作成します。

クラスターのリソースグループを指定したAzureパブリックIP作成画面

2. nginx-ingressをインストールし、手順1で作成したIPをloadBalancerIPに設定します。

STATIC_IP=<your static IP here>

helm upgrade --install ingress-nginx ingress-nginx \
 --repo https://kubernetes.github.io/ingress-nginx \
 --namespace ingress-nginx \
 --create-namespace \
 --set rbac.create=true \
 --set controller.stats.enabled=true \
 --set controller.metrics.enabled=true \
 --set controller.service.externalTrafficPolicy="Local" \
 --set controller.service.loadBalancerIP=$STATIC_IP

3. 新しいLoadBalancerリソースを監視します。数秒後、手順1の固定IPが表示されます。

新しいLoadBalancerリソースに固定の外部IPが表示されたターミナル画面

その他の注意点

  • kubectlでnginx-ingressをインストールする場合は、ingress-nginx-controller Serviceのspec.loadBalancerIPを更新するだけです。
  • カスタムリソースグループを指定する方法もありますが、ここではパブリックIP側をk8sクラスターに合わせるため、この方法が最も簡単です。

参考資料