KongWeb图形化管理工具Konga部署安装

因为kong的社区版不提供dashboard,本文将介绍kong的第三方开源的图形化管理工具konga在Kubernetes集群上的部署安装。 konga是一个非官方的第三方开源的kong的图形化管理工具,konga需要使用kong的Admin API,konga具有如下特性:

创新互联主营克拉玛依区网站建设的网络公司,主营网站建设方案,app软件开发,克拉玛依区h5小程序开发搭建,克拉玛依区网站营销推广欢迎克拉玛依区等地区企业咨询

  • 支持管理所有的Kong Admin API对象
  • 从远程数据源(数据库、文件、api等)导入Consumer
  • 支持管理多个Kong节点
  • 通过快照方式备份、恢复和迁移Kong节点
  • 对Kong节点和API进行健康检查监控

创建Kong Admin API的k8s service

前面在《使用helm在Kubernetes集群中部署Kong》一文中介绍了kong在k8s上的最基本安装,当将kong在k8s上用作ingress controller时,推荐使用配置Ingress和CRDs的方式来配置kong, 而不推荐使用Kong的Admin API,kong官方的helm chart默认安装时也不会把kong的Admin API暴露出来。而由于konga需要使用Admin API,所以我们先修改之前部署ingress-kong的helm relase,在k8s中创建Kong Admin API的service。 kong-values.yml配置文件如下,注意konga容器内部会访问kong Admin API,因此admin api的k8s service只需是ClusterIP类型,在k8s集群内部向konga提供服务即可:

 
 
 
 
  1. admin:
  2.   enabled: true # 开启Admin API
  3.   type: ClusterIP
  4.   annotations:
  5.     konghq.com/protocol: https
  6. ingressController:
  7.   ingressClass: kong
  8. postgresql:
  9.   enabled: false
  10. proxy:
  11.   type: ClusterIP
  12.   http:
  13.     hostPort: 80
  14.   tls:
  15.     hostPort: 443
  16. nodeSelector:
  17.   node-role.kubernetes.io/edge: ''
  18. affinity:
  19.   podAntiAffinity:
  20.       requiredDuringSchedulingIgnoredDuringExecution:
  21.       - labelSelector:
  22.           matchExpressions:
  23.           - key: app.kubernetes.io/instance
  24.             operator: In
  25.             values:
  26.             - kong
  27.           - key: app.kubernetes.io/name
  28.             operator: In
  29.             values:
  30.             - kong
  31.         topologyKey: kubernetes.io/hostname
  32. tolerations:
  33.     - key: node-role.kubernetes.io/master
  34.       operator: Exists
  35.       effect: NoSchedule
  36.     - key: node-role.kubernetes.io/master
  37.       operator: Exists
  38.       effect: PreferNoSchedule

更新ingress-kong的helm release:

 
 
 
 
  1. helm upgrade ingress-kong kong/kong -n ingress-kong -f kong-values.yml

上面对release ingress-kong的更新是在k8s中创建了service ingress-kong-kong-admin:

 
 
 
 
  1. get svc ingress-kong-kong-admin -n ingress-kong
  2. NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
  3. ingress-kong-kong-admin   ClusterIP   10.105.100.17           8444/TCP   27m

部署konga

konga提供了自己的持久化机制来存储它的用户信息和配置信息,支持的数据库包括MySQL、MongoDB、PostgresSQL,可通过DB_ADAPTER等环境变量指定。 这里使用的是外部的MySQL数据库。下面分别在k8s上创建如下konga的deployment、service和ingress。

konga.deploy.yml:

 
 
 
 
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   labels:
  5.     app: konga
  6.   name: konga
  7.   namespace: ingress-kong
  8. spec:
  9.   replicas: 1
  10.   selector:
  11.     matchLabels:
  12.       app: konga
  13.   strategy:
  14.     rollingUpdate:
  15.       maxSurge: 1
  16.       maxUnavailable: 1
  17.     type: RollingUpdate
  18.   template:
  19.     metadata:
  20.       labels:
  21.         app: konga
  22.     spec:
  23.       initContainers:
  24.       - name: dbmigration
  25.         image: pantsel/konga
  26.         command:
  27.         - node
  28.         - /app/bin/konga.js
  29.         - prepare
  30.         - --adapter
  31.         - mysql
  32.         - --uri
  33.         - mysql://konga:konga147Q=@192.168.100.21:3306/kongadb
  34.       containers:
  35.       - name: konga
  36.         image: pantsel/konga
  37.         env:
  38.           - name: DB_ADAPTER
  39.             value: mysql
  40.           - name: DB_URI
  41.             value: mysql://konga:konga147Q=@192.168.100.21:3306/kongadb
  42.           - name: NODE_ENV
  43.             value: production
  44.           - name: NODE_TLS_REJECT_UNAUTHORIZED
  45.             value: "0"
  46.         ports:
  47.         - containerPort: 1337
  48.           protocol: TCP
  49.       restartPolicy: Always

上面的deployment部署文件中,使用初始化容器在pod启动前完成konga所需mysql数据库schema的migration,第一次启动时在kongadb中创建了下面的数据库表:

 
 
 
 
  1. +-------------------------------+
  2. | Tables_in_kongadb             |
  3. +-------------------------------+
  4. | konga_api_health_checks       |
  5. | konga_email_transports        |
  6. | konga_kong_nodes              |
  7. | konga_kong_services           |
  8. | konga_kong_snapshot_schedules |
  9. | konga_kong_snapshots          |
  10. | konga_kong_upstream_alerts    |
  11. | konga_netdata_connections     |
  12. | konga_passports               |
  13. | konga_settings                |
  14. | konga_users                   |
  15. +-------------------------------+

konga.svc.yml:

 
 
 
 
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: konga
  5.   namespace: ingress-kong
  6. spec:
  7.   ports:
  8.     - name: http
  9.       protocol: TCP
  10.       port: 1337
  11.       targetPort: 1337
  12.   selector:
  13.     app: konga
  14.   type: ClusterIP

创建存放konga.cdxwcx.com ssl证书的secret:

 
 
 
 
  1. kubectl create secret tls example-com-tls-secret \
  2.   --cert=cert.pem \
  3.   --key=key.pem \
  4.   -n ingress-kong

konga.ingress.yml:

 
 
 
 
  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4.   annotations:
  5.     kubernetes.io/ingress.class: kong
  6.     konghq.com/protocols: "https"
  7.   name: konga
  8.   namespace: ingress-kong
  9. spec:
  10.   rules:
  11.   - host: konga.cdxwcx.com
  12.     http:
  13.       paths:
  14.       - backend:
  15.           service:
  16.             name: konga
  17.             port:
  18.               number: 1337
  19.         path: /
  20.         pathType: Prefix
  21.   tls:
  22.   - hosts:
  23.     - konga.cdxwcx.com
  24.     secretName: example-com-tls-secret

konga的初始化配置

konga部署成功后,可以使用https://konga.cdxwcx.com访问,第一次打开这个页面时需要按页面的引导完成初始化配置。 首先创建一个konga管理用户,如下图所示:

管理员用户创建完成后,就可以登录到konga中,之后出现创建konga到kong admin api连接的页面,在连接创建页面填入如下图所示内容:

连接创建完成后就可以进入到konga的dashboard页面,此时konga已经和k8s中的kong连接上,并显示相关信息了:

小结

到这里已经完成konga在k8s集群中的部署,需要注意的是前面kong的部署时dbless模式的,也就是kong没有使用数据(postgresql或apache cassandra),而且kong在这里用作k8s的ingress controller。 这种情况是不建议通过kong Admin API(或使用konga的web界面)来管理服务的,同时因为kong是dbless的,如果你使用konga Web界面对服务和kong的配置做相关的更新和删除时也会报类似can't do something when not use a database。 也就是说如果kong是以dbless模式部署的,konga只能作为一个只读的dashboard使用。最后,当将kong在k8s上用作ingress controller时,还是推荐使用配置Ingress和CRDs的方式来配置kong。

当前名称:KongWeb图形化管理工具Konga部署安装
文章出自:http://www.shufengxianlan.com/qtweb/news33/10683.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联