Centos7にKongを構築する

  • 作成日 2019.10.09
  • 更新日 2020.07.20
  • kong
  • ,
Centos7にKongを構築する

APIを実装することになったので、OSS のAPI Gateway 「Kong」を構築した際の手順。お役に立てれば幸いです。

Centos7バージョン

# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

Kongインストール

こちらの公式手順に従う

sudo yum update -y

## wgetはすでに入っているのでインストールはしない
sudo yum install -y wget

wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo
export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1`
sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo
sudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/
sudo yum update -y
sudo yum install -y kong

DB作成

## PostgreSQLはインストール済み
su - postgres
bash$ psql

## ユーザーとテーブル作成とパスワード設定 設定しないと後述してるがエラーになる
postgres=#CREATE USER kong; CREATE DATABASE kong OWNER kong;
postgres=# ALTER USER kong WITH PASSWORD 'パスワード設定';
## 抜ける
\q

## 確認
bash$ psql -l

<出力結果>
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限      
-----------+----------+------------------+----------+-------------------+-----------------------
 kong      | kong     | UTF8             | C        | C                 | 

Kong起動

先にDBの設定を行っておかないと後述の通りエラーになる

## 設定ファイル作成
cd /etc/kong
cp kong.conf.default kong.conf

<設定>
database = postgres             # Determines which of PostgreSQL or Cassandra
                                 # this node will use as its datastore.
                                 # Accepted values are `postgres`,
                                 # `cassandra`, and `off`.

pg_host = 127.0.0.1             # Host of the Postgres server.
pg_port = 5432                  # Port of the Postgres server.
pg_timeout = 5000               # Defines the timeout (in ms), for connecting,
                                 # reading and writing.

pg_user = kong                  # Postgres user.
pg_password = 設定したパスワード   # Postgres user's password.
pg_database = kong              # The database name to connect to.

起動します。

## migrations
kong migrations bootstrap

## 警告がでるので設定しておく
ulimit -n 4096

## 起動
kong start

## 確認
curl -i http://localhost:8001/

JSONが取得できれていれば完了

migrations実行時にエラー「Error: missing password, required for connect」が出た場合は下記を参考にして下さい。

## 公式手順に従う
sudo yum install epel-release
sudo yum install kong-1.3.0.*.noarch.rpm --nogpgcheck

sudo yum update -y
sudo yum install -y wget
wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo
export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1`
sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo
sudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/
sudo yum update -y
sudo yum install -y kong

## postgres
CREATE USER kong; CREATE DATABASE kong OWNER kong;

kong migrations bootstrap
Error: missing password, required for connect
エラー発生

## デバック
kong migrations bootstrap -v

## ユーザーkongにパスワードがないからっぽい
su - postgres

-bash-4.2$ psql
psql (11.5)
"help" でヘルプを表示します。

postgres=# ALTER USER kong WITH PASSWORD 'パスワード設定';

## 設定ファイル作成
cd /etc/kong
cp kong.conf.default kong.conf

<設定>
database = postgres             # Determines which of PostgreSQL or Cassandra
                                 # this node will use as its datastore.
                                 # Accepted values are `postgres`,
                                 # `cassandra`, and `off`.

pg_host = 127.0.0.1             # Host of the Postgres server.
pg_port = 5432                  # Port of the Postgres server.
pg_timeout = 5000               # Defines the timeout (in ms), for connecting,
                                 # reading and writing.

pg_user = kong                  # Postgres user.
pg_password = 設定したパスワード   # Postgres user's password.
pg_database = kong              # The database name to connect to.

以上で問題なし