嗨,读者朋友们,在这篇博客中,我们将看到如何使用Traefik入口控制器对IP进行白名单。在这篇博客中,我们使用Traefik ingress控制器的第二版,将服务暴露在互联网上,被白名单的IP只有这些IP能够访问你的域名。
什么是IP白名单?
IP白名单允许你创建IP地址或IP范围的列表,你的用户可以从这些地址访问你的域名。它提供了一个安全功能,通常用于控制和限制只有受信任的用户才能访问。
什么是Traefik?
Traefik是一个开源的最受欢迎的入口控制器,用于将服务暴露在互联网上。它接收请求,并找到该请求所需的服务。Traefik与所有主要的集群技术兼容,如Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathon等。
创建一个部署
现在,我们首先要用一个简单的网络应用程序镜像创建一个部署对象。我将在一个名为traefik的命名空间中进行部署,你可以在默认命名空间中进行部署。要创建一个命名空间,请使用以下命令
$ kubectl create namespace <namespace_name>
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: traefik
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: my-app
replicas: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: ahmad33/maintenance:1.02
ports:
- containerPort: 80
现在首先使用kubectl命令部署。
$ kubectl create -f <deployment-file-name>
创建一个用于部署的服务
现在我们将创建一个服务,由traefik ingress控制器为我的Web应用提供服务。
apiVersion: v1
kind: Service
metadata:
name: my-app-service
namespace: traefik
labels:
app: my-app
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: my-app
type: ClusterIP
现在使用kubectl命令创建服务。
$ kubectl create -f <service-file-name>
创建一个中间件对象
因此,为了白名单IP,我们将使用Kubernetes中间件对象,我们将在其中定义SourceRange IPs用于白名单。
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: test-ipwhitelist
namespace: traefik
spec:
ipWhiteList:
sourceRange:
- 192.168.43.203
- 172.28.0.1/32
使用Kubectl命令来创建基于上述配置的中间件。
$ kubectl create -f <middleware-file-name>
创建Ingress对象
现在我们将创建一个Kubernetes入口对象,其中我们将添加两个注释, 第一个是将traefik的入口类,第二个将是我们已经创建的中间件。此外,我们还将为我们的服务定义一些路由规则。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ip-whitelist
namespace: traefik
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/router.middlewares: traefik-test-ipwhitelist@kubernetescrd
spec:
rules:
- host: test.whitelist.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
现在使用kubectl命令创建ingress对象。
$ kubectl create -f <ingress-file-name>
等待地址,并在 /etc/hosts 文件中将IP地址映射为URL。
现在去你的浏览器,点击你的域名。通过在SourceRange部分的中间件对象中改变IP,你可以进行测试。
结语
在这篇博客中,我们看到了如何在使用traefik ingress控制器时对IP进行白名单。