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 为零号捕获组,代表整个表达式匹配到的内容
相关推荐
AliCloudROS16 小时前
阿里云ACK+GitLab企业级部署实战教程
k8s·gitlab·helm·ack·计算巢
仇辉攻防20 小时前
【云安全】云原生- K8S 污点横移
web安全·网络安全·云原生·容器·kubernetes·k8s·安全威胁分析
明明跟你说过1 天前
【Kubernetes】常用命令全解析:从入门到实战(下)
运维·云原生·容器·kubernetes·k8s
KubeSphere 云原生5 天前
云原生周刊:KubeEdge 1.20.0版本正式发布
云计算·k8s·容器平台·kubesphere
格桑阿sir5 天前
Kubernetes控制平面组件:Kubernetes如何使用etcd
kubernetes·k8s·etcd·高可用集群·故障分析·etcd集群调优
qq_448941087 天前
8、k8s的pv和pvc
kubernetes·k8s
仇辉攻防7 天前
【云安全】云原生-K8S(四)安全问题分析
安全·web安全·网络安全·云原生·kubernetes·k8s·安全威胁分析
明明跟你说过8 天前
【Kubernetes】常用命令全解析:从入门到实战(中)
运维·docker·云原生·容器·kubernetes·k8s
仇辉攻防9 天前
【云安全】云原生-K8S(三) 安装 Dashboard 面板
web安全·网络安全·云原生·容器·kubernetes·k8s·安全威胁分析
仇辉攻防9 天前
【云安全】云原生- K8S Kubelet 未授权访问
web安全·网络安全·云原生·kubernetes·k8s·安全威胁分析·kubelet