인그레스 게이트웨이에서 TLS 및 mTLS 구성

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

단방향 TLS 구성

단방향 TLS를 사용하여 인그레스 게이트웨이에서 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 보안 비밀

Kubernetes 보안 비밀을 만들고 재정의 파일에 추가합니다.

  1. 다음 두 네임스페이스 중 하나에 보안 비밀을 만듭니다.
    • apigee 네임스페이스(Apigee 인그레스 게이트웨이를 사용하는 경우)
    • istio-system 네임스페이스(고객 설치 Anthos Service Mesh를 사용하는 경우)

    Apigee 인그레스 게이트웨이

    kubectl create -n apigee secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE

    Anthos Service Mesh

    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 대신 인그레스 게이트웨이에서 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 보안 비밀

Kubernetes 보안 비밀 두 개를 만듭니다. 첫 번째 보안 비밀은 SSL 인증서/키 쌍용이고 두 번째 보안 비밀은 CA용입니다. 그런 다음 재정의 파일에 추가합니다.

  1. 다음 두 네임스페이스 중 하나에 Kubernetes 보안 비밀 두 개를 만듭니다.
    • apigee 네임스페이스(Apigee 인그레스 게이트웨이를 사용하는 경우)
    • istio-system 네임스페이스(고객 설치 Anthos Service Mesh를 사용하는 경우)

    Apigee 인그레스 게이트웨이

    kubectl create -n apigee secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE

    Anthos Service Mesh

    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. CA의 보안 비밀을 만듭니다.

    Apigee 인그레스 게이트웨이

    kubectl create -n apigee secret generic $SECRET_NAME-cacert  \
    --from-file=cacert=$CA_FILE

    Anthos Service Mesh

    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