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

创新互联主营克拉玛依区网站建设的网络公司,主营网站建设方案,app软件开发,克拉玛依区h5小程序开发搭建,克拉玛依区网站营销推广欢迎克拉玛依区等地区企业咨询
前面在《使用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提供服务即可:
- admin:
 - enabled: true # 开启Admin API
 - type: ClusterIP
 - annotations:
 - konghq.com/protocol: https
 - ingressController:
 - ingressClass: kong
 - postgresql:
 - enabled: false
 - proxy:
 - type: ClusterIP
 - http:
 - hostPort: 80
 - tls:
 - hostPort: 443
 - nodeSelector:
 - node-role.kubernetes.io/edge: ''
 - affinity:
 - podAntiAffinity:
 - requiredDuringSchedulingIgnoredDuringExecution:
 - - labelSelector:
 - matchExpressions:
 - - key: app.kubernetes.io/instance
 - operator: In
 - values:
 - - kong
 - - key: app.kubernetes.io/name
 - operator: In
 - values:
 - - kong
 - topologyKey: kubernetes.io/hostname
 - tolerations:
 - - key: node-role.kubernetes.io/master
 - operator: Exists
 - effect: NoSchedule
 - - key: node-role.kubernetes.io/master
 - operator: Exists
 - effect: PreferNoSchedule
 
更新ingress-kong的helm release:
- helm upgrade ingress-kong kong/kong -n ingress-kong -f kong-values.yml
 
上面对release ingress-kong的更新是在k8s中创建了service ingress-kong-kong-admin:
- get svc ingress-kong-kong-admin -n ingress-kong
 - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 - ingress-kong-kong-admin ClusterIP 10.105.100.17
 8444/TCP 27m 
konga提供了自己的持久化机制来存储它的用户信息和配置信息,支持的数据库包括MySQL、MongoDB、PostgresSQL,可通过DB_ADAPTER等环境变量指定。 这里使用的是外部的MySQL数据库。下面分别在k8s上创建如下konga的deployment、service和ingress。
konga.deploy.yml:
- apiVersion: apps/v1
 - kind: Deployment
 - metadata:
 - labels:
 - app: konga
 - name: konga
 - namespace: ingress-kong
 - spec:
 - replicas: 1
 - selector:
 - matchLabels:
 - app: konga
 - strategy:
 - rollingUpdate:
 - maxSurge: 1
 - maxUnavailable: 1
 - type: RollingUpdate
 - template:
 - metadata:
 - labels:
 - app: konga
 - spec:
 - initContainers:
 - - name: dbmigration
 - image: pantsel/konga
 - command:
 - - node
 - - /app/bin/konga.js
 - - prepare
 - - --adapter
 - - mysql
 - - --uri
 - - mysql://konga:konga147Q=@192.168.100.21:3306/kongadb
 - containers:
 - - name: konga
 - image: pantsel/konga
 - env:
 - - name: DB_ADAPTER
 - value: mysql
 - - name: DB_URI
 - value: mysql://konga:konga147Q=@192.168.100.21:3306/kongadb
 - - name: NODE_ENV
 - value: production
 - - name: NODE_TLS_REJECT_UNAUTHORIZED
 - value: "0"
 - ports:
 - - containerPort: 1337
 - protocol: TCP
 - restartPolicy: Always
 
上面的deployment部署文件中,使用初始化容器在pod启动前完成konga所需mysql数据库schema的migration,第一次启动时在kongadb中创建了下面的数据库表:
- +-------------------------------+
 - | Tables_in_kongadb |
 - +-------------------------------+
 - | konga_api_health_checks |
 - | konga_email_transports |
 - | konga_kong_nodes |
 - | konga_kong_services |
 - | konga_kong_snapshot_schedules |
 - | konga_kong_snapshots |
 - | konga_kong_upstream_alerts |
 - | konga_netdata_connections |
 - | konga_passports |
 - | konga_settings |
 - | konga_users |
 - +-------------------------------+
 
konga.svc.yml:
- apiVersion: v1
 - kind: Service
 - metadata:
 - name: konga
 - namespace: ingress-kong
 - spec:
 - ports:
 - - name: http
 - protocol: TCP
 - port: 1337
 - targetPort: 1337
 - selector:
 - app: konga
 - type: ClusterIP
 
创建存放konga.cdxwcx.com ssl证书的secret:
- kubectl create secret tls example-com-tls-secret \
 - --cert=cert.pem \
 - --key=key.pem \
 - -n ingress-kong
 
konga.ingress.yml:
- apiVersion: networking.k8s.io/v1
 - kind: Ingress
 - metadata:
 - annotations:
 - kubernetes.io/ingress.class: kong
 - konghq.com/protocols: "https"
 - name: konga
 - namespace: ingress-kong
 - spec:
 - rules:
 - - host: konga.cdxwcx.com
 - http:
 - paths:
 - - backend:
 - service:
 - name: konga
 - port:
 - number: 1337
 - path: /
 - pathType: Prefix
 - tls:
 - - hosts:
 - - konga.cdxwcx.com
 - secretName: example-com-tls-secret
 
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.csdahua.cn/qtweb/news33/10683.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网