Istio 인그레스에 TLS 및 mTLS 구성

이 주제에서는 Istio 인그레스에서 단방향 TLS와 mTLS를 사용 설정하는 방법을 설명합니다.

단방향 TLS 구성

단방향 TLS를 사용하여 Istio 인그레스의 API 프록시 엔드포인트를 보호합니다. 단방향 TLS를 사용 설정하려면 다음 옵션의 설명대로 TLS 인증서/키 쌍 또는 Kubernetes 보안 비밀을 사용하여 인그레스를 구성합니다.

옵션 1: 키/인증서 쌍

재정의 파일의 virtualhosts 속성에 SSL 인증서와 키 파일을 제공합니다.

virtualhosts:
  - name: $ENVIRONMENT_GROUP_NAME
    sslCertPath: "$CERT_FILE"
    sslKeyPath: "$KEY_FILE"

여기서 $ENVIRONMENT_GROUP_NAME은 해당 호스트 별칭이 있는 환경 그룹의 이름이고 $CERT_FILE$KEY_FILE은 TLS 키와 인증서 파일입니다. TLS 인증서 만들기를 참조하세요.

옵션 2: Kubernetes 보안 비밀

istio-system 네임스페이스에 Kubernetes 보안 비밀을 만들고 재정의 파일에 보안 비밀 이름을 추가합니다.

  1. 보안 비밀을 만듭니다.
    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. 재정의 파일의 virtualhosts 속성을 구성합니다.
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

mTLS 구성

단방향 TLS 대신 Istio 인그레스에서 mTLS를 구성할 수 있습니다. 다음 설명처럼 mTLS를 구성하는 옵션에는 두 가지가 있습니다.

옵션 1: 키/인증서 쌍 및 CA 파일

재정의 파일의 virtualhosts 속성에 SSL 인증서와 키 파일이 포함된 인증 기관(CA) 인증서를 제공합니다.

virtualhosts:
  - name: $ENVIRONMENT_GROUP_NAME
    tlsMode: MUTUAL
    caCertPath: "$CA_FILE"
    sslCertPath: "$CERT_FILE"
    sslKeyPath: "$KEY_FILE"

여기서 $ENVIRONMENT_GROUP_NAME은 해당 호스트 별칭이 있는 환경 그룹의 이름이고 $CA_FILE은 승인된 인증서이며 $CERT_FILE$KEY_FILE은 TLS 키와 인증서입니다. TLS 인증서 만들기를 참조하세요.

옵션 2: Kubernetes 보안 비밀

istio-system 네임스페이스에 Kubernetes 보안 비밀 두 개를 만듭니다. 첫 번째 보안 비밀은 CA용이고 두 번째 보안 비밀은 SSL 인증서/키 쌍용입니다. 그런 다음 재정의 파일에 추가합니다.
  1. istio-system 네임스페이스에 Kubernetes 보안 비밀 두 개를 만듭니다. 첫 번째 보안 비밀은 CA용이고 두 번째 보안 비밀은 SSL 인증서/키 쌍용입니다.
    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. CA의 비밀번호를 만듭니다.
    kubectl create -n istio-system secret generic $SECRET_NAME-cacert  \
    --from-file=cacert=$CA_FILE
  3. 재정의 파일의 virtualhosts 속성을 구성합니다.
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: MUTUAL  # Note: Be sure to specify MUTUAL
        sslSecret: $SECRET_NAME