워크로드 수준 네트워크 정책 만들기

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭에서 워크로드 수준 네트워크 정책을 구성하는 방법을 설명합니다.

워크로드 수준 네트워크 정책은 프로젝트 내 개별 워크로드 간 통신을 세부적으로 제어할 수 있습니다. 이 세분화된 기능을 사용하면 네트워크 액세스를 더 엄격하게 제어하여 보안과 리소스 사용을 개선할 수 있습니다.

워크로드 수준 네트워크 정책은 단일 영역에서 PNP를 적용할 수 있습니다. 단일 영역 내의 워크로드에 특정 라벨을 추가하여 해당 영역의 프로젝트 내 또는 여러 프로젝트 간 개별 워크로드 간 통신을 제어할 수 있습니다. 자세한 내용은 단일 영역 워크로드 수준 네트워크 정책을 참고하세요.

워크로드 수준 프로젝트 내 트래픽 정책 만들기

워크로드 수준 프로젝트 내 트래픽 정책을 만들어 프로젝트 내 워크로드 간 트래픽의 네트워크 액세스를 사용 설정하거나 중지할 수 있습니다.

인그레스 워크로드 수준 프로젝트 내 트래픽 네트워크 정책

프로젝트를 만들면 모든 워크로드 간의 프로젝트 내 통신을 허용하는 기본 기본 ProjectNetworkPolicy 리소스가 암시적으로 생성됩니다. 이 정책은 동일한 프로젝트의 다른 워크로드로부터의 인바운드 트래픽을 허용합니다.

워크로드 수준 프로젝트 내 트래픽 정책을 만들려면 먼저 기본 기본 정책을 삭제해야 합니다. 그렇지 않으면 예기치 않은 동작이 발생할 수 있습니다.

  1. 기본 기본 정책을 삭제하려면 다음 명령어를 실행합니다.

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. 인그레스 워크로드 수준 프로젝트 내 트래픽 네트워크 정책을 만들려면 다음 커스텀 리소스를 만들고 적용하세요.

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역별 API 서버를 참고하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.
    • PROJECT: 워크로드 수준의 프로젝트 내 인바운드 트래픽을 허용할 프로젝트의 이름입니다.
    • SUBJECT_LABEL_KEY: 소스 워크로드를 선택하는 데 사용되는 라벨의 키입니다. 예를 들면 app, tier, role입니다.
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 소스인 워크로드를 지정합니다. 예를 들어 SUBJECT_LABEL_KEYapp이고 SUBJECT_LABEL_VALUEbackend이면 라벨이 app: backend인 워크로드가 트래픽 소스입니다.
    • TARGET_LABEL_KEY: 대상 워크로드를 선택하는 데 사용되는 라벨의 키입니다.
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 대상이 되는 워크로드를 지정합니다.

워크로드 수준 교차 프로젝트 트래픽 정책 만들기

워크로드 수준 교차 프로젝트 트래픽 정책을 만들어 서로 다른 프로젝트의 워크로드 간 트래픽에 대한 네트워크 액세스를 사용 설정하거나 사용 중지할 수 있습니다.

이그레스 워크로드 수준 교차 프로젝트 트래픽 네트워크 정책

  • 이그레스 워크로드 수준 교차 프로젝트 트래픽 네트워크 정책을 만들려면 다음 커스텀 리소스를 만들고 적용하세요.

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역별 API 서버를 참고하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.
    • PROJECT_1: 워크로드 수준 교차 프로젝트 아웃바운드 트래픽을 허용할 프로젝트의 이름입니다.
    • PROJECT_2: 워크로드 수준 교차 프로젝트 아웃바운드 트래픽을 전송할 프로젝트의 이름입니다.
    • SUBJECT_LABEL_KEY: 소스 워크로드를 선택하는 데 사용되는 라벨의 키입니다. 예를 들면 app, tier, role입니다.
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 소스인 워크로드를 지정합니다. 예를 들어 SUBJECT_LABEL_KEYapp이고 SUBJECT_LABEL_VALUEbackend이면 라벨이 app: backend인 워크로드가 트래픽 소스입니다.
    • TARGET_LABEL_KEY: 대상 워크로드를 선택하는 데 사용되는 라벨의 키입니다.
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 대상이 되는 워크로드를 지정합니다.

단일 영역 워크로드 수준 프로젝트 내 트래픽 정책 만들기

단일 영역 워크로드 수준 프로젝트 내 트래픽 정책을 만들어 특정 영역의 프로젝트 내 워크로드 간 트래픽의 네트워크 액세스를 사용 설정하거나 사용 중지할 수 있습니다.

단일 영역 인그레스 워크로드 수준 프로젝트 내 트래픽 네트워크 정책

프로젝트를 만들면 모든 워크로드 간의 프로젝트 내 통신을 허용하는 기본 기본 ProjectNetworkPolicy 리소스가 암시적으로 생성됩니다. 이 정책은 동일한 프로젝트의 다른 워크로드로부터의 인바운드 트래픽을 허용합니다.

단일 영역 인그레스 워크로드 수준 프로젝트 내 트래픽 네트워크 정책을 만들려면 먼저 기본 기본 정책을 삭제해야 합니다. 그렇지 않으면 예기치 않은 동작이 발생할 수 있습니다.

  1. 기본 기본 정책을 삭제하려면 다음 명령어를 실행합니다.

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. 단일 영역 인그레스 워크로드 수준 프로젝트 내 트래픽 네트워크 정책을 만들려면 다음 커스텀 리소스를 만들어 적용하세요.

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역별 API 서버를 참고하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.
    • PROJECT: 단일 영역 워크로드 수준 프로젝트 내 인바운드 트래픽을 허용할 프로젝트의 이름입니다.
    • SUBJECT_LABEL_KEY: 소스 워크로드를 선택하는 데 사용되는 라벨의 키입니다. 예를 들면 app, tier, role입니다.
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 소스인 워크로드를 지정합니다. 예를 들어 SUBJECT_LABEL_KEYapp이고 SUBJECT_LABEL_VALUEbackend이면 라벨이 app: backend인 워크로드가 트래픽 소스입니다.
    • TARGET_LABEL_KEY: 대상 워크로드를 선택하는 데 사용되는 라벨의 키입니다.
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 대상이 되는 워크로드를 지정합니다.
    • ZONE_SUBJECT_LABEL_KEY: 소스 영역을 선택하는 데 사용되는 라벨의 키입니다. 예를 들면 zone 또는 region입니다.
    • ZONE_SUBJECT_LABEL_VALUE: ZONE_SUBJECT_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 소스 영역을 지정합니다. 예를 들어 ZONE_SUBJECT_LABEL_KEYzone이고 ZONE_SUBJECT_LABEL_VALUEus-central1-a이면 라벨이 zone: us-central1-a인 워크로드가 트래픽 소스입니다.
    • ZONE_TARGET_LABEL_KEY: 대상 영역을 선택하는 데 사용되는 라벨의 키입니다.
    • ZONE_TARGET_LABEL_VALUE: ZONE_TARGET_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 대상이 되는 영역을 지정합니다.

단일 영역 워크로드 수준 교차 프로젝트 트래픽 정책 만들기

단일 영역 워크로드 수준 교차 프로젝트 트래픽 정책을 만들어 특정 영역의 서로 다른 프로젝트 내 워크로드 간 트래픽의 네트워크 액세스를 사용 설정하거나 사용 중지할 수 있습니다.

단일 영역 이그레스 워크로드 수준 교차 프로젝트 트래픽 네트워크 정책

  • 단일 영역 이그레스 워크로드 수준 프로젝트 내 트래픽 네트워크 정책을 만들려면 다음 커스텀 리소스를 만들고 적용하세요.

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-single-zone-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역별 API 서버를 참고하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.
    • PROJECT_1: 단일 영역 워크로드 수준 교차 프로젝트 아웃바운드 트래픽을 허용하려는 프로젝트의 이름입니다.
    • PROJECT_2: 단일 영역 워크로드 수준 교차 프로젝트 아웃바운드 트래픽을 전송할 프로젝트의 이름입니다.
    • SUBJECT_LABEL_KEY: 소스 워크로드를 선택하는 데 사용되는 라벨의 키입니다. 예를 들면 app, tier, role입니다.
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 소스인 워크로드를 지정합니다. 예를 들어 SUBJECT_LABEL_KEYapp이고 SUBJECT_LABEL_VALUEbackend이면 라벨이 app: backend인 워크로드가 트래픽 소스입니다.
    • TARGET_LABEL_KEY: 대상 워크로드를 선택하는 데 사용되는 라벨의 키입니다.
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 대상이 되는 워크로드를 지정합니다.
    • ZONE_SUBJECT_LABEL_KEY: 소스 영역을 선택하는 데 사용되는 라벨의 키입니다. 예를 들면 zone 또는 region입니다.
    • ZONE_SUBJECT_LABEL_VALUE: ZONE_SUBJECT_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 소스 영역을 지정합니다. 예를 들어 ZONE_SUBJECT_LABEL_KEYzone이고 ZONE_SUBJECT_LABEL_VALUEus-central1-a이면 라벨이 zone: us-central1-a인 워크로드가 트래픽 소스입니다.
    • ZONE_TARGET_LABEL_KEY: 대상 영역을 선택하는 데 사용되는 라벨의 키입니다.
    • ZONE_TARGET_LABEL_VALUE: ZONE_TARGET_LABEL_KEY와 연결된 값입니다. 허용된 트래픽의 대상이 되는 영역을 지정합니다.