AKS 入站规则定期重置

AKS 入站规则定期重置

在 AKS 上,我有一个 LoadBalancer 类型的服务,定义了 2 个端口,一个用于一般访问(和双向身份验证),另一个用于从 Azure 上的 Service Fabric 群集进行独占访问。为了实现独占访问,我更改了虚拟机上的入站规则,以仅允许 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,但就我而言,这也会限制“公共端口”。

除了创建两个 LoadBalancer 对象(每个端口一个)之外,我想不出其他解决方法。但这不是一个干净的解决方法,因为:服务只是通过两个不同的端口相同,这样我就会为同一个服务获得两个 IP。此外,正如上述链接中提到的,对入站规则的更改应该是持久的。

还有其他解决方法吗?非常感谢您的任何见解。

答案1

我在 StackOverflow 上问了同样的问题并在那里回答了:https://stackoverflow.com/a/61696167/6860266

正如另一个答案所提到的,解决方案是在网络安全组上添加优先级高于现有规则的新规则。

例如,上面的 LoadBalancer 服务将为 TCP 端口 4321 创建一条规则,允许任何互联网源在分配给该服务的公共 IP 上访问该端口。假设该规则的优先级为 500。我可以更改该规则,但稍后将重置

我必须添加另外两个具有更高优先级的规则,假设为 400 和 401。这两条规则的目标都是服务的公共 IP 和端口 4321。规则 400 将允许访问服务标签 ServiceFabric,而规则 401 将拒绝访问服务标签 Internet。

规则将按照 500、401 和 400 的顺序进行评估,因此最终只有 Service Fabric 能够访问该端口。规则 400 和 401 不是由 Azure 创建的,因此它们不会更改。

相关内容