Kong gateway暴露内部服务的方法

   随着微服务越来越火,对于如何管理和暴露微服务,也出现了很多成熟的解决方案。本文以其中应用较多的Kong gateway为例,详细讲述如何通过gateway暴露内部服务。

   如何暴露一个部署于k8s cluser里的微服务?LoadBalancer,Nodeport以及ClusterIP这三种都是比较常用的方式,而可以暴露到公网上让用户使用,则还需要配置ingress。但是如果对于需要暴露多个微服务到公网的场景,这种配置方式的缺点就比较突出:
    1.配置多个ingress,不便于运维。
    2.针对不同微服务,不便于进行网络控制。

   Kong gateway其实就是将k8s内部的微服务api接口统一管理,统一由Kong gateway暴露,来供用户访问的方式。
   对于Kong gateway的安装和add service,add route已经有很多文章都分享了。但是对于如何暴露k8s内部的服务却少有文章解析。接下来,我以prometheus服务为例,实现通过Kong gateway暴露服务。
  1. prometheus cluster安装:
helm install prometheus bitnami/prometheus
  1. kong gateway cluster安装:
helm install kong bitnami/kong
  1. 暴露kong gateway的admin url:
kubectl port-forward svc/kong 8080:80 &

4.配置prometheus ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: apollo-config-portal
  annotations:
    kubernetes.io/ingress.class: "kong"
spec:
  rules:
  - http:
      paths:
      - path: /api/alert #路径
        backend:
          serviceName: prometheus-kube-prometheus-prometheus   #apollo的service name
          servicePort: 9090

5.通过kong gateway访问prometheus服务:

curl -i -X GET http://127.0.0.1:8080/api/alert

返回如下图


image.png

最后,再配置kong gateway的ingress(省略),便可以通过公网访问kong gateway来访问prometheus cluster了。
这里最重要的是第四步,如果给微服务的ingress配置了host,之后通过add service和add route则需要将service的host解析记录配置到dns服务中,如果不配置,则kong gateway无法正确解析url。

本文原创,引用请标明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容