Title

部署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接口+路径就可以调到后端服务了,不过我们的场景是后端服务器启动读取北极星上的配置文件,北极星里也需要设置跨域,才可以

posted @ 2024-06-20 15:30  Esurts~  阅读(57)  评论(0)    收藏  举报