系统环境。
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.4", GitCommit:"224be7bdce5a9dd0c2fd0d46b83865648e2fe0ba", GitTreeState:"clean", BuildDate:"2019-12-11T12:44:45Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
helm version
version.BuildInfo{Version:"v3.0.1", GitCommit:"7c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa", GitTreeState:"clean", GoVersion:"go1.13.4"}
helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
aliyuncs https://apphub.aliyuncs.com
bitnami https://charts.bitnami.com/bitnami
由于需要安装PostgreSQL数据库,需要使用StorageClass动态存储卷,我们采用NFS共享文件系统来搭建共享存储卷。NFS服务器的安装请参见nfs v4安装和使用-CentOS。
NFS服务器安装完成后,为Kong创建共享文件系统。
mkdir /data/kong -p
chmod 777 /data/kong/
vi /etc/exports
/data/kong 192.168.1.0/24(sync,rw,no_root_squash,no_subtree_check)
exportfs -r
showmount -e 192.168.1.80
Export list for nfs:
/data/kong 192.168.1.0/24
在Kubernetes集群所有节点安装nfs客户端。
yum install -y nfs-utils
我们通过helm安装nfs-cleint-provisioner。
helm install nfs-provisioner stable/nfs-client-provisioner --set nfs.server=192.168.1.80 --set nfs.path=/data/kong
kubectl get sc
NAME PROVISIONER AGE
nfs-client cluster.local/nfs-provisioner-nfs-client-provisioner 61m
kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nfs-provisioner-nfs-client-provisioner-77678db49f-xrq6w 1/1 Running 2 84m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 17h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nfs-provisioner-nfs-client-provisioner 1/1 1 1 84m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nfs-provisioner-nfs-client-provisioner-77678db49f 1 1 1 84m
查找Kong Chart,并安装。由于从Kong Chart 0.27.0开始,缺省安装为DB-less方式,此处使用0.26.1版本安装。
helm search repo kong
NAME CHART VERSION APP VERSION DESCRIPTION
aliyuncs/kong 0.27.0 1.3 The Cloud-Native Ingress and Service Mesh for A...
stable/kong 0.28.0 1.3 The Cloud-Native Ingress and Service Mesh for A...
# admin.useTLS=false admin端口不使用tls
# ingressController.enabled-true 0.26.1版本缺省不启用Ingress Controller
# postgresql.persistence.storageClass="nfs-client" 使用nfs创建的动态存储卷,注意此处值为安装nfs-provisioner时的名称。或者kubectl ge sc的名称。
# postgresql.persistence.size=1Gi 缺省的存储卷size太大,此处改小一些。
helm install gateway stable/kong --version 0.26.1 \
--set admin.useTLS=false \
--set admin.nodePort=32444 \
--set proxy.http.nodePort=32080 \
--set proxy.tls.nodePort=32443 \
--set replicaCount=2 \
--set ingressController.enabled=true \
--set postgresql.persistence.storageClass="nfs-client" \
--set postgresql.persistence.size=1Gi
NAME: gateway
LAST DEPLOYED: Sun Dec 15 15:51:37 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Kong Admin can be accessed inside the cluster using:
DNS=gateway-kong-admin.default.svc.cluster.local
PORT=8444
To connect from outside the K8s cluster:
HOST=$(kubectl get nodes --namespace default -o jsonpath='{.items[0].status.addresses[0].address}')
PORT=$(kubectl get svc --namespace default gateway-kong-admin -o jsonpath='{.spec.ports[0].nodePort}')
2. Kong Proxy can be accessed inside the cluster using:
DNS=gateway-kong-proxy.default.svc.cluster.localPORT=443To connect from outside the K8s cluster:
HOST=$(kubectl get nodes --namespace default -o jsonpath='{.items[0].status.addresses[0].address}')
PORT=$(kubectl get svc --namespace de