k8s代理外部https服务

背景

由于项目要和第三方对接,调用第三方接口,且接口前端直接调用即可,没有必要后端再包装一层,但前端无法直接调用第三方接口,因为不同域名,有跨域问题,需要后端代理。

解决方案

项目部署在k8s环境,不能像以前nginx代理下即可,需要分成两步完成代理: 1. 创建k8s外部service; 2. 创建ingress路由到该service;

1. 创建外部service

yml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: ir-service  #service名称
  namespace: compass #命名空间
spec:
  type: ExternalName # service类型
  externalName: ir.xxx.com.cn  #代理的第三方域名
  ports:
    - name: https-443
      port: 443        #service端口
      targetPort: 443  # 端口
      protocol: TCP

2. 创建ingress路由

yml 复制代码
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: compass-ir-ingress #ingress名称
  namespace: compass  #命名空间
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /ir_api/$1  #重定向规则,没有可以不配置,$1为捕获组 
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 使用https协议,根据自身情况设置,代理的https就用,不是就不用
spec:
  rules:
    - host: compass.xxx.cn  # 自己的域名
      http:
        paths:
        - path: /compass/ir/(.*)
          pathType: Prefix
          backend:
            service:
                name: ir-service #上面创建的service name
                port:
                  number: 443
  • 重定向规则根据自身情况配置,没有的可以不配置,其中的$1,和正则表达式中的意思完全一样,代表第一个捕获组,即第一个括号中匹配到的内容。
  • 代理的外部接口是https协议的需要加上backend-protocol:"HTTPS", 不是的不能加
  • $0 为零号捕获组,代表整个表达式匹配到的内容
相关推荐
方渐鸿1 小时前
【2024】k8s集群 图文详细 部署安装使用(两万字)
java·运维·容器·kubernetes·k8s·运维开发·持续部署
明明跟你说过2 小时前
【k8s】资源限制管理:Namespace、Deployment与Pod的实践
运维·docker·云原生·容器·kubernetes·k8s
赴前尘1 天前
k8s 部署 redis
k8s
zyplanke2 天前
Kubernetes(四):Service
云原生·容器·kubernetes·k8s
Nazi63 天前
sealos部署k8s
运维·kubernetes·k8s
伟大的大威5 天前
K8s基于节点软亲和的高 CPU Pod 扩容与优先调度方案
k8s·cpu
听说唐僧不吃肉6 天前
DevOps篇之通过GitLab CI 流水线实现k8s集群中helm应用发布
k8s·devops
java资料站10 天前
k8s集群1.20.9
k8s·kubelet
退役小学生呀13 天前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
久绊A13 天前
Minikube win安装步骤
k8s