我正在Kubernetes集群中试验SMTP(mailoney)和SSH蜜罐,以使其暴露于严重的WWW中。我似乎无法弄清楚如何使其工作,因为我只是最近才开始了解Kubernetes。
我现在有一些配置,例如我的mailoney.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mailoney
spec:
selector:
matchLabels:
app: mailoney
template:
metadata:
labels:
app: mailoney
spec:
containers:
- name: mailoney
image: dtagdevsec/mailoney:2006
ports:
- containerPort: 25
和服务配置:
apiVersion: v1
kind: Service
metadata:
name: ingress-mailoney
labels:
name: mailoney
spec:
type: LoadBalancer
ports:
- name: smtp
port: 25
targetPort: 25
protocol: TCP
selector:
name: mailoney
但是,配置负载均衡器后,它将在端口> 30000上公开服务,我知道这是Kubernetes的默认行为。但是如何正确配置负载均衡器以分别允许在端口25和22上进行连接,并实际上允许连接通过蜜罐呢?
我能忽略一些明显的东西吗?
感谢您的帮助。
答案 0 :(得分:1)
您可能会在kubectl get service
输出中看到节点端口?这是一条红鲱鱼,最终的LB端口仍将按要求设置为25。您可以在云提供商的系统中确认这一点。节点端口是云LB与内部网络之间的中间中继。
答案 1 :(得分:1)
正如@coderanger所提到的,您的云提供商将处理所有事务,并使原始端口可用。
阅读您的服务清单后,我注意到您的选择器有误,它应该指向app: mailoney
而不是name:
。我测试了它,并且它与正确的选择器一起工作。
这是清单的样子:
apiVersion: v1
kind: Service
metadata:
name: ingress-mailoney
labels:
name: mailoney
spec:
type: LoadBalancer
ports:
- name: smtp
port: 25
targetPort: 25
protocol: TCP
selector:
app: mailoney
将其更改为app: mailoney
后,我得到以下结果:
$ kubectl get service ingress-mailoney -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
ingress-mailoney LoadBalancer 10.31.250.51 104.197.119.16 25:30601/TCP 44m app=mailoney
$ telnet 104.197.119.16 25
Trying 104.197.119.16...
Connected to 104.197.119.16.
Escape character is '^]'.
220 mailrelay.local ESMTP Exim 4.81 #1 Thu, 29 Jul 2010 05:13:48 -0700
如您所见,它正在按设计工作。请让我知道这个答案是否对您有帮助。