首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Ingress实现黑白名单

Ingress实现黑白名单

原创
作者头像
玖叁叁
发布2023-05-05 10:04:36
发布2023-05-05 10:04:36
3.1K0
举报
文章被收录于专栏:玖叁叁玖叁叁

在Kubernetes集群中,Ingress是用于暴露HTTP和HTTPS服务的一种资源类型。它可以根据域名、路径和端口将流量路由到不同的服务,为开发人员提供了便利。Ingress控制器支持通过配置黑白名单来控制哪些IP地址可以访问服务。

创建Deployment和Service

首先,我们需要创建一个Deployment和一个Service,用于提供一个HTTP服务。这里我们创建一个名为“my-service”的Deployment和一个Service,并将它们暴露在80端口上。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-service
spec:
  selector:
    matchLabels:
      app: my-service
  replicas: 2
  template:
    metadata:
      labels:
        app: my-service
    spec:
      containers:
      - name: my-service
        image: nginx:1.19.10
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-service
  ports:
  - name: http
    port: 80
    targetPort: 80
  type: ClusterIP

创建Ingress规则

接下来,我们创建一个Ingress规则,用于将流量路由到“my-service”服务上。这里我们使用一个名为“example.com”的域名,并将流量路由到“/”路径。

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.0.0/16,10.0.0.0/8"
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: my-service
          servicePort: http

在上面的代码中,我们使用了一个名为“nginx.ingress.kubernetes.io/whitelist-source-range”的注释来实现黑白名单。该注释允许您配置允许或拒绝的IP地址范围。在本例中,我们允许IP地址以“192.168.0.0/16”和“10.0.0.0/8”开头的请求访问服务。

验证

现在我们已经创建了Ingress规则,可以测试它是否工作。我们可以使用curl命令模拟一个HTTP请求,并通过指定一个不在允许列表中的IP地址来测试黑白名单。

代码语言:javascript
复制
$ curl -H "Host: example.com" http://<ingress-ip-address>/ --header "X-Forwarded-For: 172.16.0.1"

在上面的命令中,我们使用了“X-Forwarded-For”标头来模拟一个不在允许列表中的IP地址。在实际环境中,该标头将由Ingress控制器自动添加。如果一切正常,您将看到一个类似于“403 Forbidden”的响应。

另外,您也可以通过使用允许的IP地址来测试黑白名单。在这种情况下,您将收到一个HTTP 200响应。

代码语言:javascript
复制
$ curl -H "Host: example.com" http://<ingress-ip-address>/ --header "X-Forwarded-For: 192.168.0.1"

在上面的命令中,我们使用了一个在允许列表中的IP地址,您应该能够看到服务的输出。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Deployment和Service
  • 创建Ingress规则
  • 验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档