部署kong网关(本地+docker)
我们使用的k8s集群,一开始我是想把kong网关部署在k8s里,但是有问题,我就把它部署在本地了,konga是用docker起的,postgres还是用k8s部署的
部署pg数据库
创建namespace
kubectl create namespace kong
创建pgsql的configmap
vim pg-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pg-config
namespace: kong
labels:
app: postgres
data:
POSTGRES_DB: pgdb
POSTGRES_USER: pgadmin
POSTGRES_PASSWORD: "zwzk@2024"
Apply执行
kubectl apply -f pg-cm.yaml
kubectl get cm -n kong
创建pg的pvc
vim pg-pv.yaml
kind: PersistentVolume
apiVersion: v1
metadata:
name: pg-pv-volume
namespace: kong
labels:
type: local
app: postgres
spec:
storageClassName: managed-nfs-storage
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/nfs/pgsql"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pg-pv-claim
namespace: kong
labels:
app: postgres
spec:
storageClassName: managed-nfs-storage
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
Apply运行
kubectl apply -f pg-pv.yaml
kubectl get pvc -n kong
kubectl get pv -n kong
创建svc
vim pg-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: pg-service
namespace: kong
labels:
app: postgres
spec:
type: NodePort
ports:
- port: 5432
targetPort: 5432
protocol: TCP
nodePort: 30010
selector:
app: postgres
Apply运行
kubectl apply -f pg-svc.yaml
kubectl get svc -n kong
创建pg的deployment
vim pg-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pg-deployment
namespace: kong
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: postgres
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:11.5
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: pg-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: pg-pv-claim
Apply运行
kubectl apply -f pg-deployment.yaml
kubectl get po -n kong
进入pg容器创建kong网关所需要的库
kubectl exec -it -n kong pg-deployment-5f7bc8549f-nr26x /bin/bash
psql -U pgadmin -h localhost -p 5432 pgdb #登录
create database kong;
create database konga;
\l #查询数据库list
部署kong网关
关闭selinux
vi /etc/selinux/config
SELINUX=disabled
关闭防火墙
systemctl stop firewalld
关闭开机启动
systemctl disable firewalld
安装kong网关
sudo yum -y install https://download.konghq.com/gateway-2.x-centos-7/Packages/k/kong-2.8.3.el7.amd64.rpm
如果无法下载的话,可以手动从官网下载rpm包(官网地址访问上面的连接就行)
下载好传到服务器上手动安装
yum -y localinstall kong-2.8.3.el7.amd64.rpm
配置kong网关
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
vim /etc/kong/kong.conf
proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport backlog=16384
admin_listen = 0.0.0.0:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384
pg_host = 127.0.0.1
pg_port = 5432
pg_timeout = 5000
pg_user = kong
pg_password = kong
pg_database = kong
dns_resolver = 127.0.0.1:8600
初始化kong数据库
kong migrations bootstrap
启动kong网关
systemctl start kong.service
systemctl enable kong.service
部署konga管理页面
docker run -d -p 1337:1337 --name konga pantsel/konga
浏览器访问
先注册管理员账户
连接kong网关的api接口
显示如下页面代表完成
kong网关的使用!!!
反正一开始我是不会用,各种百度,少得可怜,还不对,自己整理一下吧
创建后端服务(让流量走网关,实现跨域)
创建services并配置相关参数(对比这图填就可以了)
添加服务的路由信息(对照图填就可以了)
添加cors跨域插件(可以选择在route里添加单项服务的跨域插件或者在plugins直接添加全局的跨域插件)
使用ip+端口+服务路径去访问服务,可以访问的话就代表可以了
ip为kong网关的ip、端口为kong网关的8000端口
踩坑!!!
注意:8000为http端口,假如你的解析的域名或者公网ip是http的协议,那直接按照我上图的方式访问即可
如果协议为https的,需要用8443端口,8443为https端口
以上服务配置好之后,前端代码使用kong网关的api接口+路径就可以调到后端服务了,不过我们的场景是后端服务器启动读取北极星上的配置文件,北极星里也需要设置跨域,才可以



















浙公网安备 33010602011771号