systemdによるKongゲートウェイの制御
このドキュメントんいは、DebianのsystemdとRPMベースのパッケージでKong Gatewayを統合するための手順が記載されています。
Kong Gatewayでサポートされている GNU/Linux ディストリビューションの一部には、 systemdをデフォルトのinitシステムとして採用していない可能性があります (例: CentOS 6 および RHEL 6)。次の説明では Kong Gateway は、すでにシステムでサポートされる GNU/Linuxディストリビューションに インストールされ、設定済み であると仮定されています。
Kong Gatewayを操作するためのsystemdコマンド
Kong Gatewayの起動
# For Kong Gateway
sudo systemctl start kong-enterprise-edition
# For Kong Gateway (OSS)
sudo systemctl start kong
停止Kong Gateway
# For Kong Gateway
sudo systemctl stop kong-enterprise-edition
# For Kong Gateway (OSS)
sudo systemctl stop kong
システム起動時にKong Gateway起動する
システム起動時にKong Gatewayの自動開始を有効にします
# For Kong Gateway
sudo systemctl enable kong-enterprise-edition
# For Kong Gateway (OSS)
sudo systemctl enable kong
システム起動時にKong Gatewayを自動的に開始しないようにします
# For Kong Gateway
sudo systemctl disable kong-enterprise-edition
# For Kong Gateway (OSS)
sudo systemctl disable kong
Restart Kong Gateway
# For Kong Gateway
sudo systemctl restart kong-enterprise-edition
# For Kong Gateway (OSS)
sudo systemctl restart kong
Query Kong Gateway status
# For Kong Gateway
sudo systemctl status kong-enterprise-edition
# For Kong Gateway (OSS)
sudo systemctl status kong
Kong Gatewayユニットファイルをカスタマイズ
公式のsystemdサービスは
Kong Gateway用は/lib/systemd/system/kong-enterprise-edition.service
に、
Kong Gateway (OSS)の場合は/lib/systemd/system/kong.service
にあります。
公式のKong systemdサービスでは、user
またはgroup
をroot
として設定しませんが、システムファイルの実行には設定が必要です。user
とgroup
の両方が、root
に設定されている以下の例を参照してください。
[Unit]
Description=Kong Gateway
Documentation=https://docs.konghq.com/gateway/
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
User=root
Group=root
ExecStartPre=/usr/local/bin/kong prepare -p /usr/local/kong -c /home/ec2-user/kong.conf
ExecStart=/usr/local/openresty/nginx/sbin/nginx -p /usr/local/kong -c nginx.conf
ExecReload=/usr/local/bin/kong prepare -p /usr/local/kong
ExecReload=/usr/local/openresty/nginx/sbin/nginx -p /usr/local/kong -c nginx.conf -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
# All environment variables prefixed with KONG_ and capitalized will override
# the settings specified in the /etc/kong/kong.conf.default file.
#
# For example:
# log_level = debug in the .conf file -> KONG_LOG_LEVEL=debug env var.
Environment=KONG_NGINX_DAEMON=off
# You can control this limit through /etc/security/limits.conf
LimitNOFILE=infinity
[Install]
WantedBy=multi-user.target
カスタマイズが必要なシナリオ(たとえば、Kong の構成やサービスファイルの動作の変更)では、Kong の再インストールまたはアップグレード時の競合を避けるために、
Kong Gateway の場合は /etc/systemd/system/kong-enterprise-edition.service
、
Kong Gateway (OSS) の場合は /etc/systemd/system/kong.service
で別のサービスを作成することをお勧めします。
接頭辞が大文字のKONG_
であるすべての環境変数は、/etc/kong/kong.conf.default
ファイルで指定されている設定を上書きします。例:.confのlog_level = debug
ファイルは、KONG_LOG_LEVEL=debug
環境変数に変換されます。
環境変数の代わりに構成ファイルを使用することも選択できます。この場合、ExecStartPre
systemdディレクティブを変更して、-c
引数で構成ファイルを指してkong prepare
を実行します。たとえば、/etc/kong/kong.conf
にカスタム構成ファイルがある場合は、ExecStartPre
ディレクティブを次のように変更します。
ExecStartPre=/usr/local/bin/kong prepare -p /usr/local/kong -c /etc/kong/kong.conf
EnvironmentFile
systemdディレクティブを使用して非環境ファイルをリンクする場合、systemdパーサーは環境変数の割り当てのみを認識することに注意してください。たとえば、Kong のデフォルト設定ファイルの1つ( /etc/kong/kong.conf.default
と/etc/kong.conf
)がリンクされている場合、ファイル内の環境変数以外の割り当てによってsystemdエラーが発生する可能性があります。この場合、systemdはKongサービスの起動を許可しません。このため、デフォルト以外のEnvironmentFile
を指定することをお勧めします。
EnvironmentFile=/etc/kong/kong_env.conf
syslogとjournaldへのロギング
この場合は、/etc/systemd/system/kong-enterprise-edition.service
にあるカスタマイズされた systemd サービスファイルに、次の Environment
systemd ディレクティブを追加することで対応できます。
Environment=KONG_PROXY_ACCESS_LOG=syslog:server=unix:/dev/log
Environment=KONG_PROXY_ERROR_LOG=syslog:server=unix:/dev/log
Environment=KONG_ADMIN_ACCESS_LOG=syslog:server=unix:/dev/log
Environment=KONG_ADMIN_ERROR_LOG=syslog:server=unix:/dev/log
journald ログを表示するには、次のようにします。
# For Kong Gateway
journalctl -u kong-enterprise-edition
# For Kong Gateway (OSS)
journalctl -u kong
以下の方法で、syslogログを表示します。
tail -F /var/log/syslog
Nginx ディレクティブ インジェクション システムを使用して Kong の Nginx インスタンスをカスタマイズする
環境変数でインジェクションシステムを使用するには、以下のEnvironment
systemdディレクティブを/etc/systemd/system/kong-enterprise-edition.service
( Kong Gateway)または/etc/systemd/system/kong.service
( Kong Gateway (OSS))のカスタマーサービスに追加します。スペースを含む環境変数を指定するには、systemdによって定義された引用符ルールに注意してください。
Environment="KONG_NGINX_HTTP_OUTPUT_BUFFERS=4 64k"
––nginx-confを使用してKongのNginxインスタンスをカスタマイズ
--nginx-conf
引数を使用するには、ExecStartPre
systemdディレクティブを変更して、--nginx-conf
引数を指定して kong prepare
を実行します。たとえば、/usr/local/kong/custom-nginx.template
にカスタムテンプレートがある場合は、ExecStartPre
ディレクティブを次のように変更します。
ExecStartPre=/usr/local/bin/kong prepare -p /usr/local/kong --nginx-conf /usr/local/kong/custom-nginx.template
注入されたNginxディレクティブを介して、ファイルを含むKongのNginxインスタンスをカスタマイズ
環境変数で注入されたNginxディレクティブ経由でファイルを含めるには、以下のEnvironment
systemdディレクティブを/etc/systemd/system/kong-enterprise-edition.service
(Kong Gateway)または/etc/systemd/system/kong.service
(Kong Gateway (OSS))にあるカスタムサービスに追加します。
Environment=KONG_NGINX_HTTP_INCLUDE=/path/to/your/my-server.kong.conf