Kong API Gateway インストール手順【rpm 版】

9 min 874 views

前提

  • OS:CentOS7 を使用(yum や wget コマンドが利用できる状況にあること)
  • 操作しているユーザーは wheel グループに追加してパスワードなし設定済み(必須の設定ではありません。操作便宜上の前提です)

インストール手順

インストールしたいバージョンの rpm を以下よりダウンロード

https://download.konghq.com/gateway-2.x-centos-7/Packages/k/

外に通信可能なサーバーであれば wget コマンドで直接 rpm を取ることも可能

wget https://download.konghq.com/gateway-2.x-centos-7/Packages/k/kong-enterprise-edition-2.7.0.0.el7.noarch.rpm

yum コマンドでインストール

rpm コマンドでもインストールできますが、yum コマンドであればパッケージの依存関係(zlib-devel パッケージなど)を自動的に解決してインストールすることができます。

yum -y install kong-enterprise-edition-2.7.0.0.el7.noarch.rpm

データーベースをインストール

PostgreSQL グローバル開発グループ(PGDG)のリポジトリを追加

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

PostgreSQL のデータベースをインストール

yum -y install postgresql10-server

データーベースのセットアップ

データーベースを初期化

/usr/pgsql-10/bin/postgresql-10-setup initdb

データーベースを起動

システム起動時にデーターベースが起動するように設定

systemctl enable postgresql-10
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-10.service to /usr/lib/systemd/system/postgresql-10.service.

systemctl list-unit-files -t service | grep postgres
postgresql-10.service                         enabled 

データーベースを起動して、プロセスの起動状況を確認

systemctl start postgresql-10
ps ax | grep [p]ostgres
15416 ?        Ss     0:00 postgres: logger process
15418 ?        Ss     0:00 postgres: checkpointer process
15419 ?        Ss     0:00 postgres: writer process
15420 ?        Ss     0:00 postgres: wal writer process
15421 ?        Ss     0:00 postgres: autovacuum launcher process
15422 ?        Ss     0:00 postgres: stats collector process
15423 ?        Ss     0:00 postgres: bgworker: logical replication launcher
$

データーベースの起動状態確認

systemctl status postgresql-10
● postgresql-10.service - PostgreSQL 10 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-10.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2021-12-13 16:49:24 JST; 1min 32s ago
     Docs: <https://www.postgresql.org/docs/10/static/>
 Main PID: 14786 (postmaster)
   CGroup: /system.slice/postgresql-10.service
           ├─14786 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
           ├─14788 postgres: logger process   
           ├─14790 postgres: checkpointer process   
           ├─14791 postgres: writer process   
           ├─14792 postgres: wal writer process   
           ├─14793 postgres: autovacuum launcher process   
           ├─14794 postgres: stats collector process   
           └─14795 postgres: bgworker: logical replication launcher   

12月 13 16:49:24 kong-dp systemd[1]: Starting PostgreSQL 10 database server...
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.911 JST [14786] LOG:  IPv6アドレス"::1"、ポート543…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.911 JST [14786] LOG:  IPv4アドレス"127.0.0.1"、ポー…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.911 JST [14786] LOG:  Unixソケット"/var/run/postgr…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.912 JST [14786] LOG:  Unixソケット"/tmp/.s.PGSQL.5…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.926 JST [14786] LOG:  ログ出力をログ収集プロセスに…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.926 JST [14786] ヒント:  ここからのログ出力はディレ…ます。
12月 13 16:49:24 kong-dp systemd[1]: Started PostgreSQL 10 database server.
Hint: Some lines were ellipsized, use -l to show in full.
$

Kong のデータベースを作成

データベースに postgres ユーザーでアクセス

su - postgres
最終ログイン: 2021/12/13 (月) 16:52:20 JST日時 pts/0
-bash-4.2$ psql
psql (10.19)
"help" でヘルプを表示します。

kong 用のデーターベースを作成します。kong のデータベースを作成後、alter コマンドで kong ユーザのパスワードを設定しておきます(例では kong)。この設定をしないと、この後の pg_hba.conf ファイルの md5 認証でうまく DB アクセスできなくなるので注意が必要です。

postgres=# create user kong; create database kong owner kong;
CREATE ROLE
CREATE DATABASE
postgres=# alter user kong with password 'kong';
ALTER ROLE
postgres=# \q
-bash-4.2$ exit

PostgreSQL の Ident 認証を変更

pg_hba.conf ファイルをバックしておきます。

cp -p /var/lib/pgsql/10/data/pg_hba.conf  /var/lib/pgsql/10/data/pg_hba.conf.org

pg_hba.conf ファイルを編集してデーターベースの認証方法を変更します。

vi /var/lib/pgsql/10/data/pg_hba.conf

IPv4 の認証 METHOD を md5 にしておきます。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer

# IPv4 local connections:
#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 ident

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

編集してファイルを保存したら、PostgreSQL を再起動します。

systemctl restart postgresql-10

テンプレートの kong.conf.default をコピーして kong.conf ファイルを作成し、編集します。

cp -p /etc/kong/kong.conf.default /etc/kong/kong.conf
vi /etc/kong/kong.conf

下記パラメーターを有効にして以下のように編集しておきます。

pg_user = kong
pg_password = kong
pg_database = kong

limits.conf でファイルディスクリプタの値を変更

limits.conf ファイルのバックアップを取ったあと、値を変更します。

cp -p /etc/security/limits.conf /etc/security/limits.conf.org
echo "* hard nofile 4096" >> /etc/security/limits.conf
echo "* soft nofile 4096" >> /etc/security/limits.conf
reboot

再起動後に値が更新されているか以下で確認。上記で設定した 4096 が出力されればOK。

ulimit -n

bootstrap を実行

# su - kong
最終ログイン: 2021/12/13 (月) 17:50:19 JST日時 pts/0
-sh-4.2$ export KONG_PASSWORD=kong
-sh-4.2$ echo $KONG_PASSWORD
kong
-sh-4.2$ kong migrations bootstrap -c /etc/kong/kong.conf
Bootstrapping database...
migrating core on database 'kong'...
core migrated up to: 000_base (executed)
core migrated up to: 003_100_to_110 (executed)

(途中省略)

80 migrations processed
80 executed
Database is up-to-date
-sh-4.2$

ライセンスの適用(持っている場合のみ。それ以外はスキップ)

Kong の有償ユーザーでライセンスを持っている場合は以下の手順でライセンスを適用します。なお、下記ライセンスファイルの内容はダミーとなっているため機能しません。

# cat kong-se-license.json 
{"license":{"version":1,"signature":"","payload":{}}}
# cp kong-se-license.json /etc/kong/license.json
# ll /etc/kong/license.json 
-rw-r--r-- 1 root root 450 Dec  9 14:41 /etc/kong/license.json
# chown kong.kong /etc/kong/license.json 
#

Kong 起動

kong start -c /etc/kong/kong.conf

動作チェック

AdminAPI で以下のように :8001/services エンドポイントなどにアクセスし、HTTP ステータスコード 200 が返れば Kong は動作しています。

# curl -i -X GET --url http://localhost:8001/services
HTTP/1.1 200 OK
Date: Mon, 13 Dec 2021 09:05:47 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
X-Kong-Admin-Request-ID: oFor2SaXeZZehXI1jI3Gk7YmVP83tTIA
vary: Origin
Content-Length: 23
X-Kong-Admin-Latency: 12
Server: kong/2.4.1.1-enterprise-edition

{"data":[],"next":null}
#

よくあるエラー

kong migrations bootstrap でエラーが出る場合(1)

エラーメッセージ内容のとおりですが、この例では オープンできるファイル数(ulimit -n)が現在の設定値(1024)では低いことを示しています。該当する場合はメッセージのとおり、少なくとも 4096 以上に設定しましょう。また、PostgreSQL で Ident 認証(md5 設定時)に失敗したこのケースでは、PostgreSQL の kong ユーザのパスワードを設定していなかったため生じていました。 詳細は後述する(2)のケースを参照ください。

kong migrations bootstrap
2021/12/13 16:54:08 [warn] ulimit is currently set to "1024". For better performance set it to at least "4096" using "ulimit -n"
Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: FATAL: ユーザ"kong"のIdent認証に失敗しました

  Run with --v (verbose) or --vv (debug) for more details

また、ここで Permission denied などが出る人はメッセージ内容をよく確認してください。よくあるケースとして、root 相当の権限がなく、必要なディレクトリが作成できていない場合があります。

kong migrations bootstrap でエラーが出る場合(2)

pg_hba.conf で md5 を設定しても以下のようなエラーが出る場合は、kong データーベース作成時に kong ユーザーのパスワードを設定(alter user kong with password ‘kong’;)していない可能性があります。postgres ユーザーで psql -U kong kong を実行し、kong ユーザーで kong データーベースにアクセスできるか確認してください。アクセスできない場合は、alter コマンドで kong ユーザーのパスワードを設定し直してみてください。

-sh-4.2$ kong migrations bootstrap -c /etc/kong/kong.conf
Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: FATAL: ユーザ"kong"のパスワード認証に失敗しまし
た
カテゴリー:
タグ:
関連記事