基于kubernetes的kong网关实战

时间:2022-07-22
本文章向大家介绍基于kubernetes的kong网关实战,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Kong

在k8s安装Kong-ingress

安装Kong:

# using YAMLs
$ kubectl apply -f https://bit.ly/k4k8s

# or using Helm
$ helm repo add kong https://charts.konghq.com
$ helm repo update

# Helm 2
$ helm install kong/kong

# Helm 3
$ helm install kong/kong --generate-name --set ingressController.installCRDs=false

部署一个应用

部署一个应用:

(1)构建一个deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
    name: app-server
    labels: 
        name: app-server
spec:
    replicas: 1
    selector:
        matchLabels:
            name: app-server
    template:
        metadata:
            labels: 
                name: app-server
        spec:
            containers:
                - name: app-server
                  image: registry.cn-shenzhen.aliyuncs.com/shikanon/ambassador-auth-demo:serverv0.1
                  imagePullPolicy: IfNotPresent
                  ports:
                    - containerPort: 8080

构建一个service:

apiVersion: v1
kind: Service
metadata:
    name: app-server
spec:
    ports:
        - name: http
          port: 8000
          protocol: TCP
          targetPort: 8080
    selector:
        name: app-server

构建一个ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo
  annotations:
    kubernetes.io/ingress.class: "kong"
spec:
  rules:
  - http:
      paths:
      - path: /open/
        backend:
          serviceName: app-server
          servicePort: 8000

如果集群中存在多个 ingress controller,需要通过在annotations中指定kubernetes.io/ingress.class,如果是1.18及以上版本的k8s,ingressClassName字段代替annotations

测试接口:

$ curl -i http://$KongService_IP/open/
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 6
Connection: keep-alive
Date: Sun, 24 May 2020 10:49:07 GMT
X-Kong-Upstream-Latency: 1
X-Kong-Proxy-Latency: 0
Via: kong/2.0.4

/open/

插件试验

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: request-id
config:
  header_name: my-request-id
plugin: correlation-id