Google Kubernetes Engine에서 워크로드 아이덴티티를 방해하는 네트워크 정책을 방지하는 방법

오늘 우리는 디버깅 여정에 도움이 될 수 있는 흥미로운 사례를 발견하여 공유하고 싶습니다.

다음과 같은 인프라 설정이 있다고 가정해 보겠습니다.
  • Google Kubernetes Engine의 Kubernetes 클러스터

  • Workload Identity 활성화.
  • egress Network Policies 사용 중입니다.

  • 문제



    모든 것이 정상이라고 생각할 수 있지만 Google API와 통신하는 서비스(예: Google Cloud Storage 클라이언트 라이브러리 등)는 다음과 같은 불만을 표시합니다.

    Could not load the default credentials.
    Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
    


    첫 번째 반응은 다음과 같습니다. 워크로드 아이덴티티를 권장대로 구성했는데 어떻게 이럴 수 있나요? 커튼 뒤를 보면 여기서 범인은 워크로드 아이덴티티가 전혀 아닐 가능성이 높습니다.

    원인



    우리의 경우 근본 원인은 GKE metadata server에 대한 egress 트래픽을 차단하는 제한적인 네트워크 정책이었습니다.

    해결책



    솔루션은 운영 중인 Kubernetes 버전에 따라 약간 다릅니다.

    1.21.0-gke.1000 이상

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: your-network-policy
      namespace: default
    spec:
      egress:
      - ports:
        - port: 988
          protocol: TCP
        to:
        - ipBlock:
            cidr: 169.254.169.252/32
      policyTypes:
      - Egress
    


    이전 버전

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: your-network-policy
      namespace: default
    spec:
      egress:
      - ports:
        - port: 988
          protocol: TCP
        to:
        - ipBlock:
            cidr: 127.0.0.1/32
      policyTypes:
      - Egress
    

    좋은 웹페이지 즐겨찾기