生产环境,K8s有时候需要开Loadbalancer类型的service到公网去,这种情况下为了数据安全问题,一般都会配置下访问的白名单。
但是如果我们是买的K8s托管服务的话,如果直接去改SLB的配置,可能会出现K8s的配置中心的配置把用户手工修改的SLB的配置覆盖掉(生产上出现过人工调大slb规格,被k8s服务自动重置的情况)。
因此,我们一般建议是不要去改K8s的SLB的设置,而是通过修改k8s的service的configmap来实现。
这里以一个带白名单机制的SLB的配置为例:
为负载均衡配置访问控制策略组
- 需要先在负载均衡控制台上创建一个负载均衡访问控制策略组,然后记录该访问控制策略组ID(acl-id),然后使用如下annotation创建一个带有访问控制的负载均衡实例。
- 白名单适合只允许特定IP访问的场景,black黑名单适用于只限制某些特定IP访问的场景。
- 创建带有访问控制的负载均衡,以下三项annotation必选。
apiVersion: v1kind: Servicemetadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: ""
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
name: nginx
namespace: defaultspec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
注意的是: 这里的 YOUR_ACL_ID 是从访问控制界面查询获取的,类似下图: