このページは、まだ日本語ではご利用いただけません。翻訳中です。
Configure the Admin API
Kong Gateway is now running on Kubernetes. The Admin API is a NodePort
service, which means it’s not publicly available. The proxy service is a LoadBalancer
which provides a public address.
To make the admin API accessible without using kubectl port-forward
, you can create an internal load balancer on your chosen cloud. This is required to use Kong Manager to view or edit your configuration.
Update your values-cp.yaml
file with the following Ingress configuration.
-
イングレスコントローラを設定します。
EKSでイングレスリソースを構成するには、aws-load-balancer-controller
がクラスタにインストールされている必要があります。
インストール後、クラスターがaws-load-balancer-controller
を実行していることを確認します。
kubectl get deployments.apps -n kube-system aws-load-balancer-controller
AKSでイングレスリソースを構成するには、application-gateway-kubernetes-ingress
がクラスタにインストールされている必要があります。
インストール後、クラスタがingress-appgw-deployment
を実行していることを確認します。
kubectl get deployments.apps -n kube-system ingress-appgw-deployment
GKEバージョン1.18以降を実行するクラスタは、Ingress
リソースの作成に応じてロードバランサーを自動的にプロビジョニングします。
GKEでは、Kongのデプロイメントが正常とマークされるためには BackendConfig
リソースを作成する必要があります。
-
ヘルスチェックを構成するには、BackendConfig
リソースを作成します。
echo "apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: kong-hc
namespace: kong
spec:
healthCheck:
checkIntervalSec: 15
port: 8100
type: HTTP
requestPath: /status" | kubectl apply -f -
-
この BackendConfig
は、次の中にある annotations
キーを使用して admin
サービスにアタッチされますvalues-cp.yaml
GKEは、Ingress
定義ごとにロードバランサを1つプロビジョニングします。このガイドに従うと、複数のロードバランサが作成されます。
Kong Ingress Controller を有効にするには、values-cp.yaml
ファイルで ingressController.enabled
を true
に設定します。イングレスコントローラーを有効にするときは、env.publish_service
を設定して、管理された Ingress
リソースのアドレスフィールドに Kong Ingress Controller が入力されるようにします。
Kong Ingress ControllerとKong Gateway Admin API間の通信を有効にするには、 ingressController.env.kong_admin_token
をenv.password
に保存されている値に設定する必要があります。
ingressController:
enabled: true
env:
publish_service: kong/kong-dp-kong-proxy
kong_admin_token: kong_admin_password
-
values-cp.yaml
でadmin
セクションを設定します。example.com
をカスタムドメイン名に置き換えます。
テスト中に、VPC に VPN が設定されていない場合は、alb.ingress.kubernetes.io/scheme
アノテーションをinternet-facing
に変更してパブリック IP アドレスを追加できます。これは、 デプロイが長期間にわたる場合にはお勧めできません
admin:
enabled: true
http:
enabled: true
tls:
enabled: false
ingress:
enabled: true
hostname: admin.example.com
path: /
pathType: Prefix
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/load-balancer-name: kong-alb-private
alb.ingress.kubernetes.io/group.name: demo.kong-alb-private
alb.ingress.kubernetes.io/target-type: instance
alb.ingress.kubernetes.io/scheme: internal
alb.ingress.kubernetes.io/healthcheck-path: /
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
テスト中でVPNを設定していない場合は、パブリック IP アドレスを追加するには、 false
にappgw.ingress.kubernetes.io/use-private-ip
アノテーションを追加します。
これは 長期にわたるデプロイメントにはお勧めできません
admin:
enabled: true
http:
enabled: true
tls:
enabled: false
ingress:
enabled: true
hostname: admin.example.com
path: /
pathType: Prefix
ingressClassName: azure-application-gateway
annotations:
appgw.ingress.kubernetes.io/use-private-ip: "true"
テスト中でVPNを設定していない場合は、
パブリック IP アドレスを追加するには、 gce
にkubernetes.io/ingress.class
アノテーションを追加します。
これは 長期にわたるデプロイメントにはお勧めできません
admin:
enabled: true
http:
enabled: true
tls:
enabled: false
annotations:
beta.cloud.google.com/backend-config: '{"default":"kong-hc"}'
ingress:
enabled: true
hostname: admin.example.com
path: /
pathType: Prefix
annotations:
kubernetes.io/ingress.class: gce-internal
Kong Ingress Controllerによってプロキシされるすべてのエンドポイントはパブリックにアクセス可能になります。認証プラグインを使用してAPIを保護してください。
admin:
enabled: true
http:
enabled: true
tls:
enabled: false
ingress:
enabled: true
hostname: admin.example.com
path: /
pathType: Prefix
ingressClassName: kong
-
helm upgrade
を実行してリリースを作成します。
helm upgrade kong-cp kong/kong -n kong --values ./values-cp.yaml
-
Ingress
IPアドレスを取得し、イングレスアドレスを指すようにDNSレコードを更新します。DNSを手動で構成することも、external-dnsなどのツールを使用してDNS構成を自動化することもできます。
kubectl get ingress -n kong kong-cp-kong-admin -o jsonpath='{.spec.rules[0].host}{": "}{range .status.loadBalancer.ingress[0]}{@.ip}{@.hostname}{end}'