AKS の受信ルールは定期的にリセットされます

AKS の受信ルールは定期的にリセットされます

AKS には LoadBalancer タイプのサービスがあり、2 つのポートが定義されています。1 つは一般的なアクセス (および双方向認証) 用で、もう 1 つは Azure 上の Service Fabric クラスターからの排他的アクセス用です。排他的アクセスを実現するために、VM の受信ルールを変更して、SF クラスターからのアクセスのみを許可しました。問題は、Azure DevOps から AKS サービスを変更する展開が原因で、ルールが既定値にリセットされることがよくあることです (LoadBalancer オブジェクトは変更されませんが)。

LoadBalancer の構成は次のようになります。

apiVersion: v1
kind: Service
metadata:
  name: myservice-loadbalancer
spec:
  ports:
  - name: public-port
    port: 1234
    targetPort: public-port
  - name: service-fabric-port
    port: 4321
    targetPort: service-fabric-port
  selector:
    app: myservice
  type: LoadBalancer

回避策としては、ここで推奨されているように、許可された IP を LoadBalancer オブジェクトに追加することが考えられます。https://github.com/Azure/AKS/issues/570#issuecomment-413299212ただし、私の場合は「パブリック ポート」も制限されます。

ポートごとに 1 つずつ、2 つの LoadBalancer オブジェクトを作成する以外の方法は思いつきません。ただし、これはクリーンな回避策ではありません。サービスは 2 つの異なるポートを介してのみ同じであり、この方法では同じサービスに対して 2 つの IP が存在することになります。また、上記のリンクで述べたように、受信ルールへの変更は永続的である必要があります。

他に回避策はありますか? ご意見をいただければ幸いです。

答え1

私は StackOverflow でも同じ質問をし、そこでも回答しました:https://stackoverflow.com/a/61696167/6860266

他の回答で述べられているように、解決策は、既存のルールよりも優先度の高い新しいルールをネットワーク セキュリティ グループに追加することでした。

たとえば、上記の LoadBalancer サービスは、TCP ポート 4321 に 1 つのルールを作成し、サービスに割り当てられたパブリック IP 上のそのポートにインターネット ソースがアクセスできるようにします。このルールに割り当てられた優先度が 500 であるとします。このルールは変更できますが、後でリセットされます

優先度の高いルールを 2 つ追加する必要があります (400 と 401 とします)。両方のルールの宛先はサービスのパブリック IP とポート 4321 です。ルール 400 はサービス タグ ServiceFabric へのアクセスを許可し、ルール 401 はサービス タグ Internet へのアクセスを拒否します。

ルールは 500、401、400 の順に評価されるため、最終的には Service Fabric のみがそのポートにアクセスできるようになります。ルール 400 と 401 は Azure によって作成されないため、変更されません。

関連情報