このページは、まだ日本語ではご利用いただけません。翻訳中です。
External Service
Expose a service located outside the Kubernetes cluster using an Ingress.
Prerequisites: Install Kong Ingress Controller with Gateway API support in your Kubernetes cluster and connect to Kong.
Prerequisites
Install the Gateway APIs
- 
      Install the Gateway API CRDs before installing Kong Ingress Controller. kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
- 
      Create a GatewayandGatewayClassinstance to use.echo " --- apiVersion: gateway.networking.k8s.io/v1 kind: GatewayClass metadata: name: kong annotations: konghq.com/gatewayclass-unmanaged: 'true' spec: controllerName: konghq.com/kic-gateway-controller --- apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: kong spec: gatewayClassName: kong listeners: - name: proxy port: 80 protocol: HTTP allowedRoutes: namespaces: from: All " | kubectl apply -f -The results should look like this: gatewayclass.gateway.networking.k8s.io/kong created gateway.gateway.networking.k8s.io/kong created
Install Kong
You can install Kong in your Kubernetes cluster using Helm.
- 
      Add the Kong Helm charts: helm repo add kong https://charts.konghq.com helm repo update
- 
      Install Kong Ingress Controller and Kong Gateway with Helm: helm install kong kong/ingress -n kong --create-namespace
Test connectivity to Kong
Kubernetes exposes the proxy through a Kubernetes service. Run the following commands to store the load balancer IP address in a variable named PROXY_IP:
- 
      Populate $PROXY_IPfor future commands:export PROXY_IP=$(kubectl get svc --namespace kong kong-gateway-proxy -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo $PROXY_IP
- 
      Ensure that you can call the proxy IP: curl -i $PROXY_IPThe results should look like this: HTTP/1.1 404 Not Found Content-Type: application/json; charset=utf-8 Connection: keep-alive Content-Length: 48 X-Kong-Response-Latency: 0 Server: kong/3.0.0 {"message":"no Route matched with those values"}
Create a Kubernetes Service
- 
    Deploy a Kubernetes Service type=ExternalName using the hostname of the application you want to expose. echo " kind: Service apiVersion: v1 metadata: name: proxy-to-httpbin spec: ports: - protocol: TCP port: 80 type: ExternalName externalName: httpbin.konghq.com " | kubectl apply -f -The results should look like this: service/proxy-to-httpbin created
- 
    Create an Ingress to expose the service at the path /httpbin
The results should look like this:
Test the Service
curl -i $PROXY_IP/httpbin/anything
The results should look like this:
HTTP/1.1 200 OK
Date: Thu, 15 Dec 2022 21:31:47 GMT
Content-Type: application/json
Content-Length: 341
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
X-Kong-Upstream-Latency: 2
X-Kong-Proxy-Latency: 1
Via: kong/3.1.1
{
  "args": {},
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.konghq.com",
    "User-Agent": "curl/7.86.0",
    "X-Amzn-Trace-Id": "Root=1-639b9243-7cdb670008b8189a5948d619"
  },
  "json": null,
  "method": "GET",
  "origin": "136.25.153.9",
  "url": "https://httpbin.konghq.com/anything"
}
