我尝试在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名
广告
将在 10 秒后关闭
bannerAds