인그레스 사용 설정

이 페이지에서는 GKE On-Prem 클러스터에 인그레스를 사용 설정하는 방법을 보여줍니다.

관리자 워크스테이션에 SSH를 통해 연결

관리자 워크스테이션에 SSH를 통해 연결합니다.

ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]

여기서 [IP_ADDRESS]는 관리자 워크스테이션의 IP 주소입니다.

관리 워크스테이션에서 이 주제의 나머지 단계를 모두 수행합니다.

인그레스 사용 설정

사용자 클러스터가 실행된 후 Istio 게이트웨이 객체를 만들어 인그레스를 사용 설정해야 합니다. 이 Istio 게이트웨이 객체는 네트워크 인그레스 트래픽에 필요하며 승인 정책과 같은 다른 사용 사례에 사용되거나 지원되지 않습니다. 게이트웨이 매니페스트의 첫 번째 부분은 항상 다음과 같습니다.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-autogenerated-k8s-ingress
  namespace: gke-system
spec:
  selector:
    istio: ingress-gke-system

게이트웨이에 필드를 추가하여 클러스터에 입력이 허용되는 트래픽을 지정할 수 있습니다. 게이트웨이를 사용하여 새로 추가되는 요청을 관리하는 방법에 대한 자세한 내용은 트래픽 관리를 참조하세요.

다음 게이트웨이 매니페스트에는 클라이언트가 HTTP/2 프로토콜 및 모든 호스트 이름을 사용해서 포트 80으로 요청을 전송할 수 있도록 지정되어 있습니다.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-autogenerated-k8s-ingress
  namespace: gke-system
spec:
  selector:
    istio: ingress-gke-system
  servers:
  - port:
      number: 80
      protocol: HTTP2
      name: http
    hosts:
    - "*"

인그레스 서비스가 HTTPS 요청을 허용하도록 하려면 인그레스 서비스가 클라이언트에 제공할 수 있는 하나 이상의 인증서를 제공해야 합니다.

인증서를 제공하려면 다음 안내를 따르세요.

  1. 인증서와 키가 포함 된 Kubernetes 보안 비밀를 만듭니다.
  2. 게이트웨이 객체를 만들거나 해당 보안 비밀을 참조하는 기존 게이트웨이 객체를 수정합니다. 게이트웨이 객체 이름은 istio-autogenerated-k8s-ingress여야 합니다.

예를 들어 인증서 파일 ingress-wildcard.crt와 키 파일 ingress-wildcard.key가 이미 생성되었다고 가정합니다.

ingressgateway-wildcard-certs라는 보안 비밀을 만듭니다.

kubectl create secret tls \
    --namespace gke-system \
    ingressgateway-wildcard-certs \
    --cert ./ingress-wildcard.crt \
    --key ./ingress-wildcard.key

다음 게이트웨이 매니페스트에서 내 보안 비밀을 참조합니다. 클라이언트는 HTTPS 프로토콜 및 *.example.com과 일치하는 모든 호스트 이름을 사용하여 포트 443으로 호출을 수행할 수 있습니다. 인증서의 호스트 이름은 매니페스트에 있는 호스트 이름(이 예시의 *.example.com)과 일치해야 합니다.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-autogenerated-k8s-ingress
  namespace: gke-system
spec:
  selector:
    istio: ingress-gke-system
  servers:
  - port:
      number: 80
      protocol: HTTP2
      name: http
    hosts:
    - "*"
  - hosts:
    - "*.example.com"
    port:
      name: https-demo-wildcard
      number: 443
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: ingressgateway-wildcard-certs

게이트웨이 매니페스트를 수정하여 서로 다른 호스트에 TLS 인증서를 여러 개 만들 수 있습니다.

매니페스트를 my-gateway.yaml이라는 파일에 저장하고 게이트웨이를 만듭니다.

kubectl apply -f my-gateway.yaml