TheKoguryo's 기술 블로그

 Version 2024.04.01

Load Balancer 문제해결

Load Balancer 생성 오류 - The following tag namespaces / keys are not authorized or not found
  • 현상: OKE에서 kubectl로 Load Balancer 타입을 생성했을때 다음과 같은 오류 발생

    $ kubectl describe svc nginx-deployment
    ...
      Normal   EnsuringLoadBalancer    12s (x3 over 34s)  service-controller  Ensuring load balancer
      Warning  SyncLoadBalancerFailed  8s                 service-controller  Error syncing load balancer: failed to ensure load balancer: creating load balancer: Error returned by LoadBalancer Service. Http Status Code: 400. Error Code: RelatedResourceNotAuthorizedOrNotFound. Opc request id: 783ddd1d645bf1efda4918a6ba52ca51/DCC20EA18C4559FD348A8597553FF298/980E1AFAF615507D4AF6F8CE665EF2FD. Message: The following tag namespaces / keys are not authorized or not found: 'cn'.
    Operation Name: CreateLoadBalancer
    
  • 원인:

    terraform-oci-oke로 OKE 클러스터를 만들었을때, 콘솔에서 OKE 클러스터 정보를 보면, Initial load balancer tags에 Defined tags가 설정되어 있음. 그래서 OKE에서 생성된는 Load Balancer는 해당 tag를 기본 설정하려고 한다. 근데, 해당 tag namespace가 cluster가 위치한 compartment와 다를 경우 권한에 없어 위와 같은 에러가 발생함. 아래 그림에서는 상위 compartment에 tagnamespace인 cn을 참조함.

    image-20230220222644068

  • 해결책

    아래 문서를 보고 추가적인 권한 설정이 필요함. 해당 OKE Cluster가 다른 compartment에 위치한 tag-namespace에 대한 권한을 부여함

    https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengtaggingclusterresources.htm#contengtaggingclusterresources_iam-tag-namespace-policy

    Allow any-user to use tag-namespace in compartment <compartment-ocid> where all { request.principal.id = '<cluster-ocid>' }
    

    또는

    Allow any-user to use tag-namespace in tenancy where all {request.principal.type = 'cluster'}
    


이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 20 Feb 2023