我尝试在RHEL8上运行kong
首先
由于某种情况,我决定在RHEL8上构建Kong。
据说RHEL8没有官方支持的Docker,看起来必须使用podman,我遇到了一些困难,所以我将其记录下来。
Podman的想法在这里非常易懂。
https://www.designet.co.jp/faq/term/?id=UG9k
在这里查看 Kong 的安装步骤:https://docs.konghq.com/install/docker/
简言之/com/wp-content/uploads/2022/02/gpt-3-chinese-summary
我自己亲身实践过,我觉得这是最好的方式。
-
- podをAP用、DB用作る。
DBはAPから呼ばれるため、固定IPを付与。APから呼ばれるためポートをexposeしておく。
APは特にIP付与が不要なため、つけない。ただし、ポートはexposeしておく。
各podでDB、APを起動する。これはマニュアルどおり。
Podman是什么?
阅读了各种RHEL手册和尝试了一些操作后的感受。虽然只是一些初步的印象,但是…
-
- dockerの置き換え
-
- とはいえ、随所に違いはある。特にネットワークまわりの考え方の違いに焦る。
-
- kubernetesみたいにpodを作ることができる。ただ、凝ったことはできないようだ。
-
- docker-composeが使えない。(サードパーティではあるようだが)
- > これが困った、、、dockerだとdocker-composeあってこんな困らなくてよかったのに。https://qiita.com/kotauchisunsun/items/ce9e476cb52b8eeffc88
我参考了这一附近。
-
- https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html-single/building_running_and_managing_containers/index
- https://qiita.com/t-kigi/items/a14dfd3c2c1620f54c43
kong是什么?
虽然在AWS中被称为”API Gateway”,但是AWS的使用体验明显更好。不过,考虑到是部署在本地,我不确定它是否方便。
我还没有好好研究过,所以还不太理解。
Excel软件公司将会提供日本语的使用手册,我需要更仔细地研读一下。
- https://www.xlsoft.com/jp/products/kong/docs.html
在内部,似乎是使用Nginx和Cassandra或者Postgres进行运行。这是一种普通的Web应用程序/数据库配置。
这里是使用方法。
https://www.aizulab.com/blog/install-kong/
为难的地方
我在考虑将AP和DB分别放在不同的pod中还是合并在一起的时候,陷入了困惑。
然而,如果将它们合并在一起,就需要按照DB->AP的顺序启动,但是AP的启动比DB快,会出现错误。我不知道该如何添加依赖关系,
所以我决定将它们放在不同的pod中。
因为我不能像Kubernetes那样直接操作,所以我不太理解为什么要使用Pod有什么好处。
如果是要使用Sidecar之类的功能可能会有帮助吧。
实际步骤
制作播客
在DB的pod中设置固定IP地址。网络方面似乎可以使用默认设置。
$ podman pod create --name kong-ap-pod -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 -p 1337:1337
$ podman pod create --name kong-db-pod -p 5432:5432 --ip 10.88.0.30
$ podman pod ps
# 確認結果
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
6cf2f94d97e9 kong-db-pod Created 4 seconds ago 8ee7a9e55579 1
828c47a39971 kong-ap-pod Created 9 seconds ago e05f0103600c 1
启动数据库
$ podman run -d --name kong-database \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
--pod kong-db-pod \
postgres:9.6
引导
这只在第一次执行的东西,所以不放入pod中。
$ podman run \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
--add-host kong-database:10.88.0.30 \
kong:latest kong migrations bootstrap
启动AP
如果不使用–add-host命令并指定DB服务器的IP地址,由于是不同的pod,无法进行名称解析。
$ podman run -d --name kong-ap \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-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, 0.0.0.0:8444 ssl" \
--add-host kong-database:10.88.0.30 \
--pod kong-ap-pod \
kong:latest
运行(GUI)konga管理
由于商业版本似乎没有GUI功能,所以我们需要安装第三方的GUI功能。
然而,这个konga不能在cassandra上运行,只能选择使用postgres。
$ podman run -d --name konga \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kong-database" \
-e "DB_USER=kong" \
-e "DB_PASSWORD=kong" \
--add-host kong-database:10.88.0.30 \
--pod kong-ap-pod pantsel/konga
确认动作
如果能获取返回结果,那么应该没问题。
$ curl http://localhost:8001/
文字解码语言标记
使用 Podman 创建的 Pod 可以生成 YAML 文件。这非常方便。
$ podman generate kube pod名