[kubernetes]-ingress开启非80或443的tcp端口

需求:部分服务不想通过80端口被访问,网关上对80端口有限制,只允许内网访问80和443,所以外网域名必须带端口号访问。以前是直接映射到服务器的端口号,k8s不想通过label指定机子部署。于是研究一下ingress 开启除80和443以外的端口

创建tcp-service.yaml 暴露tcp端口

# tcp-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
    - name: proxied-tcp-9000
      port: 9000
      targetPort: 9000
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

创建tcp-data.yaml

# tcp-data.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
# <namespace/service name>:<service port>:[PROXY]:[PROXY]
  9000: "test/test-openapi:80"

这个test/test-openapi:80 是namespace 为test下的service name 为test-openapi, service 端口为80的服务

应用2个yaml

kubectl apply -f  tcp-service.yaml
kubectl apply -f  tcp-data.yaml

比较ingress-nginx service应用前后的变化

kubectl get svc -n ingress-nginx

此时在label为ingress的node节点上可以看到端口9000已经开启,测试了80和443服务还是没有问题的。

查看configmap如下

kubectl edit cm/tcp-services -n ingress-nginx

进入ingress的pod查看ingress的生成的nginx配置

访问nodeip+9000端口测试服务是否可用

这里直接域名解析到nginx 再转发给ingress的node的9000端口或者域名直接指向ingress的服务器即可

原外网域名+端口

官方文档

https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值