k8s集群安装kong和konga

626 阅读5分钟
  1. Helm最快安装——官网提供的脚本——默认获取最新版本

cd /usr/local/src/
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
 
helm search hub wordpress
 
source <(helm completion bash)
helm completion bash > /etc/bash_completion.d/helm
由于国外很多镜像网站国内无法访问,例如gcr.io ,建议使用阿里源,

developer.aliyun.com/hub。

AppHub 是一个托管在国内公有云上、全公益性的 Helm Hub “中国站”,它的后端由阿里云容器平台团队的三位工程师利用 20% 时间开发完成。

而这个站点的一个重要职责,就是把所有 Helm 官方 Hub 托管的应用自动同步到国内;同时,自动将 Charts 文件中的 gcr.io 等所有有网络访问问题的 URL 替换成为稳定的国内镜像 URL。

目前helm3已经不依赖于tiller,Release 名称可在不同 ns 间重用

安装helm

Helm3 不需要安装tiller,下载到 Helm 二进制文件直接解压到 $PATH 下就可以使用了。

[root@master ~]# version=v3.6.0

[root@master ~]# curl -LO https://repo.huaweicloud.com/helm/v3.14.4/helm-v3.14.4-linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 13.5M  100 13.5M    0     0  2636k      0  0:00:05  0:00:05 --:--:-- 2836k

[root@master ~]# tar -zxvf helm-v3.14.4-linux-amd64.tar.gz
linux-amd64/
linux-amd64/helm
linux-amd64/LICENSE
linux-amd64/README.md

[root@master ~]# mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64
  1. kong安装(k8s)

kong新版采用无db模式,将所有的配置,通过k8s资源的形式,存储到etcd里面

  1. 创建命名空间
kubectl create namespace kong
  1. 部署
wget https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/v2.9.3/deploy/single/all-in-one-dbless.yaml
  1. 先修改kong-proxy的service类型为nodeport,当然也可以采用LoadBalancer,修改all-in-one-dbless.yaml,找到kong-proxy的service那一段
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
  name: kong-proxy
  namespace: kong
spec:
  ports:
  - name: proxy
    port: 80
    protocol: TCP
    targetPort: 8000
  - name: proxy-ssl
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    app: proxy-kong
    #  type: LoadBalancer
  type: NodePort

  1. 然后添加9080端口,下载下来的文件默认只支持http和https协议的服务访问,我们要添加grpc访问的端口
  • 找到proxy-kong的deploy,做如下修改
      containers:
      - env:
        - name: KONG_PROXY_LISTEN
          value: 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:9080 http2 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport
            backlog=16384
        - name: KONG_PORT_MAPS
          value: 80:8000, 9080:9080, 443:8443

主要是添加了0.0.0.0:9080 http2 reuseport backlog=16384,这一段和9080:9080, 这一段

  1. 再找到port,做如下修改
        name: proxy
        ports:
        - containerPort: 8000
          name: proxy
          protocol: TCP
        - containerPort: 8443
          name: proxy-ssl
          protocol: TCP
        - containerPort: 8100
          name: metrics
          protocol: TCP
        - containerPort: 9080
          name: grpc
          protocol: TCP

主要是添加了最后三行

  1. 再找到kong-proxy的service,做如下修改
spec:
  ports:
  - name: proxy
    port: 80
    protocol: TCP
    targetPort: 8000
  - name: proxy-ssl
    port: 443
    protocol: TCP
    targetPort: 8443
  - name: grpc
    port: 9080
    protocol: TCP
    targetPort: 9080

也是添加最后四行,这样修改了之后就支持grpc的调用(如果开发那边是用kong做grpc的调用网关,有的不用网关,用注册中心consul、etcd)

  1. 然后创建
kubectl apply -f all-in-one-dbless.yaml
  1. 查看
  2. kong安装(docker)

  1. 简介

官网: docs.konghq.com/gateway/3.2…

Kong Gateway是一个轻量级、快速、灵活的云原生API网关。 API网关是一个反向代理,它允许您管理、配置和路由到API的请求。 Kong Gateway运行在任何RESTful API之前,并且可以通过模块和插件进行扩展。它旨在运行在分散的架构上,包括混合云和多云部署。

  1. 运行方式

Kong Gateway 是一个运行在 Nginx 中的 Lua 应用程序。Kong Gateway 与OpenResty一起分发,OpenResty 是一组扩展lua-nginx-module 的模块。

这为模块化架构奠定了基础,插件可以在运行时启用和执行。Kong Gateway 的核心是实现数据库抽象、路由和插件管理。插件可以存在于单独的代码库中,并可以注入到请求生命周期的任何地方,只需几行代码。

Kong 提供了许多插件供您在网关部署中使用。您还可以创建自己的自定义插件。有关详细信息,请参阅 插件开发指南、PDK 参考以及使用其他语言( JavaScript、Go和Python )创建插件的指南。

  1. Konga

Konga不是官方应用程序,并且和Kong没有隶属关系。 官网: github.com/pantsel/kon…

Konga是一款基于Kong Admin API的GUI图形化管理界面。

  1. docker-compose部署kong和konga
  1. 准备yaml
[root@k8s-harbor01 docker-compose]# cat docker-compose.yaml 
version: '3'
services: 
  kong-database:
    image: postgres:9.6
    restart: always  #每次总是启动
    networks: 
      - kong-net
    environment:
      POSTGRES_USER: kong
      POSTGRES_DB: kong
      POSTGRES_PASSWORD: kong
    ports:
      - "5432:5432"
#######################
# 执行数据库迁移
######################
  kong-migration:
    image: kong:2.5.1-centos
    command: "kong migrations bootstrap"
    networks:
      - kong-net
    restart: on-failure
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_DATABASE=kong
      - KONG_PG_PASSWORD=kong
      - KONG_PG_HOST=kong-database
    links: 
      - kong-database #连接的是kong-database服务的
    depends_on:
      - kong-database #依赖于kong-database服务

#####################
# kong gateway
#####################
  kong:
    image: kong:2.5.1-centos
    restart: always
    networks:
      - kong-net
    environment:
      KONG_DATABASE: postgres
      KONG_PG_HOST: kong-database
      KONG_PG_PASSWORD: kong
      KONG_PROXY_LISTEN: 0.0.0.0:8000
      KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443
      KONG_ADMIN_LISTEN: 0.0.0.0:8001
    depends_on:
      - kong-migration
    links: 
      - kong-database
    healthcheck:
      test: ["CMD", "curl", "-f", "http://kong:8001"]
      interval: 5s
      timeout: 2s
      retries: 15
    ports:
      - "8001:8001"
      - "8000:8000"
      - "8443:8443"
#######################
#以下两个是konga  GUI
#######################
  konga-prepare:
    image: pantsel/konga:0.14.9
    command: "-c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga"  #注意是用户名:密码@数据库服务名称:端口
    networks:
      - kong-net
    restart: on-failure
    links:
      - kong-database
    depends_on:
      - kong        #依赖kong服务
      - kong-database #依赖kong-database服务

  konga:
    image: pantsel/konga:0.14.9
    restart: always
    networks:
      - kong-net
    environment:
      DB_ADAPTER: postgres
      DB_HOST: kong-database
      DB_USER: kong
      DB_DATABASE: konga
      DB_PASSWORD: kong #必须加上密码,不然会失败
    depends_on:
      - kong
      - kong-database
    ports:
      - "1337:1337"
networks:
  kong-net:
    driver: bridge
  1. 部署
docker-compose up -d
docker-compose ps -a
  1. 访问并创建基本用户

云原生API网关-Kong部署与konga基本使用

blog.csdn.net/qq_42515722…