AKS에는 2개의 포트가 정의된 LoadBalancer 유형의 서비스가 있습니다. 하나는 일반 액세스(및 양방향 인증)용이고 다른 하나는 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
가능한 해결 방법은 여기에서 권장하는 대로 LoadBalancer 개체에 허용된 IP를 추가하는 것입니다.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은 서비스 태그에 대한 액세스를 거부합니다. 서비스 태그 인터넷.
규칙은 500, 401 및 400 순서로 평가되므로 최종적으로 Service Fabric만 해당 포트에 액세스할 수 있습니다. 규칙 400 및 401은 Azure에서 생성되지 않으므로 변경되지 않습니다.