Kong 인그레스 설치

Kubernetes에 Kong 설정은 다음과 같이 간단합니다.

# using YAMLs
$ kubectl apply -f https://bit.ly/k4k8s

# or using Helm
$ helm repo add kong https://charts.konghq.com
$ helm repo update

# Helm 2
$ helm install kong/kong

# Helm 3
$ helm install kong/kong --generate-name --set ingressController.installCRDs=false

Kong에 연결 테스트

먼저 Kong 인그레스에 IP를 확인 하십시오.

$ kubectl get svc -n kong
NAME                      TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
kong-proxy                LoadBalancer   10.35.251.209   35.XXX.XXX.XX   80:32118/TCP,443:31462/TCP   35d
kong-validation-webhook   ClusterIP      10.35.254.2     <none>          443/TCP                      35d

Kong에 다음처럼 요청하면 HTTP 404 Not Found를 반환해야합니다.

$ curl -i 35.XXX.XXX.XX
HTTP/1.1 404 Not Found
Date: Tue, 02 Jun 2020 01:29:39 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Content-Length: 48
X-Kong-Response-Latency: 0
Server: kong/2.0.4

{"message":"no Route matched with those values"}

echo-server 설정

Kong 인그레스 컨트롤러를 사용하는 방법을 보여주기 위해 echo-server 애플리케이션을 설정하십시오.

$ kubectl apply -f https://bit.ly/echo-service
service/echo created
deployment.apps/echo created

기본 프록시

이전에 작성된 echo-server를 프록시하기 위해 인그레스 규칙을 작성하십시오.

$ echo '
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo
spec:
  rules:
  - http:
      paths:
      - path: /foo
        backend:
          serviceName: echo
          servicePort: 80
' | kubectl apply -f -
ingress.extensions/demo created

인그레스 규칙을 테스트 하십시오.

curl -i 35.XXX.XXX.XX/foo
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Tue, 02 Jun 2020 01:34:01 GMT
Server: echoserver
X-Kong-Upstream-Latency: 7
X-Kong-Proxy-Latency: 0
Via: kong/2.0.4



Hostname: echo-758859bbfb-8xqbp

Pod Information:
        node name:      gke-crawler-1-default-pool-917bc6f9-05nt
        pod name:       echo-758859bbfb-8xqbp
        pod namespace:  default
        pod IP: 10.32.0.132
<-- clipped -->

모든 것이 올바르게 배포되면 위의 응답이 표시됩니다. 이는 Kong이 Kubernetes 내에서 실행중인 응용 프로그램으로 트래픽을 올바르게 라우팅 할 수 있는지 확인합니다.

참고자료