Kong入门学习实践(2)实验环境搭建
最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。
本篇,我们学习如何快速搭建一个Kong实验环境。
搭建方式
目前,我们可以选择多种部署方式,包括:宿主机部署、Docker部署、Kubernetes部署 以及 混合部署。
这里,我们的目的是学习实践,因此选择Docker部署,为了方便,我们选择基于docker compose的一键部署。首先,你需要安装docker engine及docker-compose:
# sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # sudo chmod +x /usr/local/bin/docker-compose # docker-compose --version
All-In-One快速部署
我们需要准备一个yml模板文件:
version: "3.8" volumes: kong_data: {} networks: kong-net: services: ####################################### # Postgres: The database used by Kong ####################################### kong-database: image: postgres:10 container_name: kong-postgres restart: on-failure networks: - kong-net volumes: - kong_data:/var/lib/postgresql/data environment: POSTGRES_USER: kong POSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kong} POSTGRES_DB: kong ports: - "5432:5432" healthcheck: test: ["CMD", "pg_isready", "-U", "kong"] interval: 30s timeout: 30s retries: 3 ####################################### # Kong database migration ####################################### kong-migration: image: ${KONG_DOCKER_TAG:-kong:latest} command: kong migrations bootstrap networks: - kong-net restart: on-failure environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_DATABASE: kong KONG_PG_USER: kong KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong} depends_on: - kong-database ####################################### # Kong: The API Gateway ####################################### kong: image: ${KONG_DOCKER_TAG:-kong:latest} restart: on-failure networks: - kong-net environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_DATABASE: kong KONG_PG_USER: kong KONG_PG_PASSWORD: ${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-database healthcheck: test: ["CMD", "kong", "health"] interval: 10s timeout: 10s retries: 10 ports: - "8000:8000" - "8001:8001" - "8443:8443" - "8444:8444" ####################################### # Konga database prepare ####################################### konga-prepare: image: pantsel/konga:latest command: "-c prepare -a postgres -u postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga" networks: - kong-net restart: on-failure depends_on: - kong-database ####################################### # Konga: Kong GUI ####################################### konga: image: pantsel/konga:latest restart: always networks: - kong-net environment: DB_ADAPTER: postgres DB_URI: postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga NODE_ENV: production depends_on: - kong-database ports: - "1337:1337"
备注:
(1)该yml文件定义了Kong、PostgreSQL 和 Konga 三个核心组成部分
(2)kong-migration会做Kong的数据库数据初始化操作
(3)kong-prepare会做Konga的数据库数据初始化操作
(3)该yml文件支持自定义环境变量替换当中的Kong镜像名字、PostgreSQL的密码
运行以下命令进行部署:
docker-compose up -d
Konga连接Kong
部署完成后,访问服务器的1337端口即可看到Konga的登录注册页面,首次访问需要创建一个Admin账号,随意输入即可,但密码要大于7位字符。
通过Admin账号登录之后,需要指定Kong的Admin URL让Konga能够连接Kong。这里我们绑定的Kong Admin API端口是8001(http),8444(https,但这里我们实验环境,没有配置SSL证书,因此跳过)。
点击CREATE CONNECTION之后,即可看到首页仪表盘了:
这个仪表盘主要展示了五大类的信息:
- 连接信息:有多少活动的客户端连接数等
- 节点信息:Kong的节点名、管理端口等
- 定时器信息:等待运行 和 正在运行 的定时器
- 数据库信息:当前的数据库连接信息及端口等
- 插件信息:开启启用的插件有哪些
看到这里,我们的实验环境就初步完成了。下一篇,我们会尝试配置路由转发,欢迎持续关注。
参考资料
闫观涛,《Kong入门与实践-基于Nginx和OpenRestry的云原生微服务网关》
风起云边,《Kong - Overview》
风一样的程序员,《45张图带你从0玩转Kong Gateway》