【openeuler部署安装Kong Gateway实践】
购买的华为云ECS机器,ECS机器架构是aarch64,操作系统是集成的openEuler 22.03-lts-sp3.
·
虚拟机介绍
购买的华为云ECS机器,ECS机器架构是aarch64,操作系统是集成的openEuler 22.03-lts-sp3.
安装方式
Kong安装的方式有两种:
- 使用数据库: 使用数据库存储 Kong 实体配置,可以使用 Admin API 或配置文件配置 Kong。
- 不使用数据库:将 Kong 配置存储在节点的内存中,Admin API 是只读的,必须使用配置文件配置 Kong。
使用数据库安装 Kong Gateway
启动一个 Kong Gateway 容器和一个 PostgreSQL 数据库来存储 Kong 配置。
数据库部署
- 创建自定义 Docker 网络,随意命名
docker network create kong-net
- 启动 PostgreSQL 容器
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kongpass" \
postgres:13
- POSTGRES_USER: Kong Gateway默认值是kong
- POSTGRES_DB: Kong Gateway默认值是kong
- POSTGRES_PASSWORD:设置数据库密码为任意字符串
- 准备 Kong 数据库
docker run --rm --network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kongpass" \
-e "KONG_PASSWORD=test" \
kong/kong-gateway:3.7.1.1 kong migrations bootstrap
- KONG_DATABASE:指定 Kong 使用的数据库类型
- KONG_PG_HOSTkong-net:上一步中通过网络通信的 Postgres Docker 容器的名称
- KONG_PG_PASSWORD:上一步启动 Postgres 容器时设置的密码
- KONG_PASSWORD(仅限企业版):Kong Gateway 管理员超级用户的默认密码
- {IMAGE-NAME:TAG} kong migrations bootstrap:按顺序,这是 Kong Gateway 容器名称和标签,后面是给 Kong 准备 Postgres 数据库的命令
启动 Kong Gateway
-
(可选)如果拥有 Kong Gateway 的企业许可证,请将许可证密钥导出到变量: 许可证数据必须包含直引号才被视为有效的 JSON('and ",而不是’or “)。
注意: 以下许可证仅为示例,必须使用以下格式,配置自己的内容。
export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
-
运行以下命令使用 Kong Gateway 启动容器:
docker run -d --name kong-gateway \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kongpass" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \ -e "KONG_ADMIN_GUI_URL=http://localhost:8002" \ -e KONG_LICENSE_DATA \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ -p 8002:8002 \ -p 8445:8445 \ -p 8003:8003 \ -p 8004:8004 \ kong/kong-gateway:3.7.1.1 postgres:13
- –name和–network:要创建的容器的名称以及它所通信的 Docker 网络。
- KONG_DATABASE:指定 Kong 使用的数据库类型。
- KONG_PG_HOST:通过网络通信的 Postgres Docker 容器的名称 kong-net。
- KONG_PG_USER和KONG_PG_PASSWORD:Postgres 用户名和密码。Kong Gateway 需要登录信息来将配置数据存储在KONG_PG_HOST数据库中。
- 所有_LOG 参数:设置日志输出到的文件路径,或者使用示例中的值将消息和错误打印到stdout和stderr。
- KONG_ADMIN_LISTEN:Kong Admin API 监听请求的端口。
- KONG_ADMIN_GUI_URL:访问 Kong Manager 的 URL,前面带有协议(例如http://)。
- KONG_LICENSE_DATA:(仅限企业)如果您有许可证文件并将其保存为环境变量,则此参数将从您的环境中提取许可证。
-
安装验证
拉起的两个容器:
访问管理节点 API:/services,返回200即OK。curl -i -X GET --url http://localhost:8001/services
-
通过使用以下指定的 URL 访问 Kong Manager 来验证它是否正在运行
http://localhost:8002
不使用数据库安装 Kong Gateway
-
创建自定义 Docker 网络,随意命名
docker network create kong-net
-
准备配置文件
kong.yml简单配置示例,本地保存,记录文件路径
_format_version: "3.0" _transform: true services: - host: httpbin.org name: example_service port: 80 protocol: http routes: - name: example_route paths: - /mock strip_path: true
-
无 DB 模式启动 Kong Gateway
3.1 (可选)如果拥有 Kong Gateway 的企业许可证,请将许可证密钥导出到变量: 许可证数据必须包含直引号才被视为有效的 JSON('and ",而不是’or “)。
注意: 以下许可证仅为示例,必须使用以下格式,配置自己的内容。
export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
3.2 从刚刚创建kong.yml文件的同一目录中,运行以下命令以使用 Kong Gateway 启动容器:
docker run -d --name kong-dbless \ --network=kong-net \ -v "$(pwd):/kong/declarative/" \ -e "KONG_DATABASE=off" \ -e "KONG_DECLARATIVE_CONFIG=/kong/declarative/kong.yml" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \ -e "KONG_ADMIN_GUI_URL=http://localhost:8002" \ -e KONG_LICENSE_DATA \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ -p 8002:8002 \ -p 8445:8445 \ -p 8003:8003 \ -p 8004:8004 \ kong/kong-gateway:3.7.1.1
- –name和–network:创建的容器的名称以及通信的 Docker 网络
- -v $(pwd):/path/to/target/:将当前目录挂载到 Docker 容器中
- KONG_DATABASE:将数据库设置为off, 不使用任何数据库存储配置
- KONG_DECLARATIVE_CONFIG:声明配置文件路径
- 所有LOG 参数:设置日志输出到的文件路径
- KONG_ADMIN_LISTEN:Kong Admin API 监听请求的端口
- KONG_ADMIN_GUI_URL:访问 Kong Manager 的 URL,前面带有协议(例如http://)
- KONG_LICENSE_DATA:(仅限企业)如果您有许可证文件环境变量
3.3 验证 Kong Gateway 运行状态
curl -i http://localhost:8001
测试端点获取服务列表
curl -i http://localhost:8001/services
更多推荐
已为社区贡献1条内容
所有评论(0)