[!TIP]
记录安装网关工具kong
以及可视化管理工具konga
并使用postgresql
作为kong
的数据库,并且把postgresql
挂载到nfs
注意:
konga
不能使用最新版的postgresql
,根据网上多人配置,使用的是9.6
版本本次教程所有涉及到的镜像都我个人的阿里镜像仓库。按照本教程需要替换成自己的或者公用的。
转载请注明出处:https://janrs.com
k8s 部署 kong 网关
[!NOTE]
前提: 安装kong
之前先安装nfs
服务,教程地址:(https://janrs.com/?p=79)
1.创建命名空间
先创建好命名空间,后续的部署都是部署到该命名空间下
kubectl create ns kong
2.部署postgresql
2-1.部署postgresql deployment
创建postgres-v9.6-deploy.yaml
vim postgres-v9.6-deploy.yaml
添加内容如下
[!NOTE]
下面的创建deployment
我使用的是自己的阿里镜像仓库,需要换成自己的
创建deployment
已经指定了nfs
挂载的地址,需要预先创建好并且设置777
权限
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgresql
namespace: kong
spec:
replicas: 1
selector:
matchLabels:
app: postgresql
template:
metadata:
labels:
app: postgresql
spec:
imagePullSecrets:
- name: aliimagesecret #指定密钥
containers:
- name: postgresql
image: registry.cn-shenzhen.aliyuncs.com/yjy_k8s/kong-postgres:v9.6 #换成自己的镜像地址
imagePullPolicy: IfNotPresent
env:
- name: POSTGRES_USER
value: "kong"
- name: POSTGRES_DB
value: "kong"
- name: POSTGRES_PASSWORD
value: "kong"
ports:
- containerPort: 5432
protocol: TCP
name: postgresql-port
volumeMounts:
- name: postgresql-db-volume #跟下面的对应
readOnly: false
mountPath: /var/lib/postgresql/data
volumes:
- name: postgresql-db-volume #跟上面的volumeMounts对应,不一样会导致错误
nfs:
path: /nfs/data/kong/postgresql-v12.12 #path要预先创建好并且设置777的权限
server: 172.31.235.112 #此处地址改为自己的
执行创建
[!NOTE]
-n kong
参数指定命名空间
kubectl apply -f postgres-svc.yaml -n kong
查看创建结果
kubectl get pods -n kong
显示
NAME READY STATUS RESTARTS AGE
postgresql-856d6fbc6f-vpltq 1/1 Running 0 13m
2-2.创建postgresql service
创建postgres-svc-v12.12.yaml
vim postgres-svc-v9.6.yaml
添加内容如下
apiVersion: v1
kind: Service
metadata:
name: postgresql
namespace: kong
labels:
app: postgresql
spec:
ports:
- name: postgresql
port: 5432
protocol: TCP
selector:
app: postgresql
执行创建
kubectl apply -f postgresql-svc-v9.6.yaml -n kong
查看创建结果
kubectl get service -n kong
显示
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
postgresql ClusterIP 10.96.134.61 <none> 5432/TCP 20m
2-3.初始化kong数据库
创建kong-v2.8.1-init-db-job.yaml
vim kong-v2.8.1-init-db-job.yaml
添加内容如下
apiVersion: batch/v1
kind: Job
metadata:
name: kong-migrations
namespace: kong
spec:
template:
metadata:
name: kong-migrations
spec:
imagePullSecrets:
- name: aliimagesecret
containers:
- name: kong-migrations
image: registry.cn-shenzhen.aliyuncs.com/yjy_k8s/kong-kong:v2.8.1
env:
- name: KONG_DATABASE
value: 'postgres'
- name: KONG_PG_HOST
value: 'postgresql.kong.svc.cluster.local'
- name: KONG_PG_PASSWORD
value: 'kong'
- name: KONG_PG_USER
value: 'kong'
args:
- /bin/sh
- -c
- kong migrations bootstrap
restartPolicy: Never
3.部署kong
3-1.部署kong deployment
创建kong-v2.8.1-deploy.yaml
vim kong-v2.8.1-deploy.yaml
添加内容如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: kong
namespace: kong
spec:
replicas: 1
selector:
matchLabels:
app: kong
template:
metadata:
labels:
app: kong
spec:
imagePullSecrets:
- name: aliimagesecret
containers:
- name: kong
image: registry.cn-shenzhen.aliyuncs.com/yjy_k8s/kong-kong:v2.8.1
env:
- name: KONG_DATABASE
value: 'postgres'
- name: KONG_PG_HOST
value: 'postgresql.kong.svc.cluster.local'
- name: KONG_PG_PASSWORD
value: 'kong'
- name: KONG_PG_USER
value: 'kong'
- name: KONG_PROXY_ACCESS_LOG
value: '/dev/stdout'
- name: KONG_ADMIN_ACCESS_LOG
value: '/dev/stdout'
- name: KONG_PROXY_ERROR_LOG
value: '/dev/stderr'
- name: KONG_ADMIN_ERROR_LOG
value: '/dev/stderr'
- name: KONG_ADMIN_LISTEN
value: '0.0.0.0:8001, 0.0.0.0:8444 ssl'
ports:
- containerPort: 8000
name: web
- containerPort: 8001
name: admin
- containerPort: 8443
name: ssl
- containerPort: 8444
name: adminssl
livenessProbe:
exec:
command:
- kong
- health
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
successThreshold: 1
failureThreshold: 3
执行创建
kubectl apply -f kong-v2.8.1-deploy.yaml -n kong
查看创建结果
kubectl get pods -n kong
显示
NAME READY STATUS RESTARTS AGE
kong-bcf754d44-kglbr 1/1 Running 0 7m19s
kong-migrations-xchxx 0/1 Completed 0 14m
postgresql-856d6fbc6f-vpltq 1/1 Running 0 49m
3-2.部署kong service
创建kong-v2.8.1-svc.yaml
vim kong-v2.8.1-svc.yaml
添加内容如下
kind: Service
apiVersion: v1
metadata:
name: kong-nodeport
namespace: kong
spec:
type: NodePort
ports:
- name: http
protocol: TCP
port: 8000
targetPort: 8000
nodePort: 30088
- name: https
protocol: TCP
port: 8443
targetPort: 8443
nodePort: 32443
selector:
app: kong
---
kind: Service
apiVersion: v1
metadata:
name: kong-admin
namespace: kong
spec:
ports:
- name: admin
protocol: TCP
port: 8001
targetPort: 8001
selector:
app: kong
执行创建
kubectl apply -f kong-v2.8.1-svc.yaml -n kong
查看创建结果
kubectl get svc -n kong
显示
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kong-admin ClusterIP 10.96.1.239 <none> 8001/TCP 8m8s
kong-nodeport NodePort 10.107.30.175 <none> 8000:30088/TCP,8443:32443/TCP 2m20s
postgresql ClusterIP 10.96.134.61 <none> 5432/TCP 57m
4.部署konga
4-1.部署konga deployment
创建konga-deployment.yaml
vim konga-deploy.yaml
添内容如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: konga
namespace: kong
spec:
replicas: 1
selector:
matchLabels:
app: konga
template:
metadata:
labels:
app: konga
spec:
imagePullSecrets:
- name: aliimagesecret
containers:
- name: konga
image: registry.cn-shenzhen.aliyuncs.com/yjy_k8s/kong-konga:v0.14.9
env:
- name: DB_ADAPTER
value: 'postgres'
- name: DB_HOST
value: 'postgresql.kong.svc.cluster.local'
- name: DB_PORT
value: '5432:5432'
- name: DB_PASSWORD
value: 'kong'
- name: DB_USER
value: 'kong'
- name: DB_DATABASE
value: 'konga'
ports:
- containerPort: 1337
name: web
执行创建
kubectl apply -f konga-deploy.yaml -n kong
查看创建结果
kubectl get pods -n kong
显示
NAME READY STATUS RESTARTS AGE
kong-bcf754d44-kglbr 1/1 Running 0 3h1m
kong-migrations-xchxx 0/1 Completed 0 3h7m
konga-64c5bb74bf-p2jsr 1/1 Running 0 20s
postgresql-7f46c9b847-vnvmh 1/1 Running 0 101s
4-2.部署konga service
创建konga-service.yaml
vim konga-svc.yaml
添加内容如下
kind: Service
apiVersion: v1
metadata:
name: konga-nodeport
namespace: kong
spec:
type: NodePort
ports:
- name: http
protocol: TCP
port: 1337
targetPort: 1337
nodePort: 31337
selector:
app: konga
执行创建
kubectl apply -f konga-svc.yaml -n kong
查看创建结果
kubectl get pods -n kong
显示
NAME READY STATUS RESTARTS AGE
kong-bcf754d44-kglbr 1/1 Running 0 3h44m
kong-migrations-xchxx 0/1 Completed 0 3h51m
konga-64c5bb74bf-p2jsr 1/1 Running 0 44m
postgresql-7f46c9b847-vnvmh 1/1 Running 0 45m
发表回复