간단한 TLS를 HTTPS로 인그레스 게이트웨이를 보호하고 특정 웹페이지에 대해 HTTPS 연결을 사용 설정할 수 있습니다. 또한 HTTP 연결을 HTTPS로 리디렉션할 수 있습니다.
HTTPS는 비보안 네트워크로 보안 채널을 만들어 중간자 공격으로부터 보호하고 클라이언트 및 서버 간 트래픽을 암호화합니다. 웹 서버가 HTTPS 연결을 수락하도록 준비하려면 관리자가 서버에 대해 공개 키 인증서를 만들어야 합니다. 웹브라우저가 이 인증서를 경고 없이 수락할 수 있으려면 신뢰할 수 있는 인증 기관의 서명이 있어야 합니다.
기본 제공되는 Kubernetes 편집기를 사용하여 kf
네임스페이스에서 external-gateway라는 게이트웨이를 수정합니다.
kubectl edit gateway -n kf external-gateway
- 서비스에 대한 인증서 및 키가 있다고 가정하고 인그레스 게이트웨이를 위해 Kubernetes 보안 비밀을 만듭니다. 보안 비밀 이름은
istio
또는prometheus
로 시작하지 않아야 합니다. 이 예시에서 보안 비밀 이름은myapp-https-credential
입니다. servers:
아래에서 다음 안내를 따르세요.- 포트 443에 대한 섹션을 추가합니다.
tls:
아래에서credentialName
을 방금 만든 보안 비밀의 이름으로 설정합니다.hosts:
아래에서 HTTPS로 보호하려는 서비스의 호스트 이름을 추가합니다. 와일드 카드(예:*.example.com
)를 사용하여 전체 도메인으로 설정하거나 단일 호스트 이름(예:myapp.example.com
)으로 범위를 지정할 수 있습니다.
servers:
아래에 포트 80 HTTP에 대한 섹션이 있습니다. 모든 트래픽이 HTTP로 수신되도록 하려면 게이트웨이 정의에 이 섹션을 유지합니다.- HTTP를 HTTPS로 리디렉션하려면 HTTP 서버 섹션의
tls
아래에httpsRedirect: true
값을 추가합니다. 자세한 내용은 Istio 게이트웨이 문서를 참조하세요.hosts
가*
로 설정된 섹션에서 이 값을 추가하면 모든 트래픽이 HTTPS로 리디렉션됩니다. 단일 앱/도메인에 대해서만 HTTP를 HTTPS로 리디렉션하려면 리디렉션을 지정하는 개별 HTTP 섹션을 추가합니다.
다음은 myapp.example.com
에 대해 HTTPS를 설정하고 해당 호스트에 대해 HTTP를 HTTPS로 리디렉션하는 게이트웨이 spec
예시입니다.
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myapp.example.com
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: myapp-https-credential
mode: SIMPLE
- hosts:
- myapp.example.com
port:
name: http-my-app
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP