ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • clusterRole, clusterRoleBinding
    DevOps/Kubernetes 2021. 10. 29. 08:59

    롤과 롤바인딩은 네임스페이스가 지정된 리소스로, 하나의 네임스페이스상에 상주하며 해당 네임스페이스의 리소스에 적용된다는 것을 의미한다. 일반 롤은 롤이 위치하고 있는 동일한 네임스페이스의 리소스에만 액세스할 수 있다. 다른 네임스페이스의 리소스에 누군가가 액세스 할 수 있게 하려면 해당 네임스페이스마다 롤과 롤바인딩을 만들어야 한다.

     

     

    클러스터 수준 리소스에 액세스 권한을 부여하려면 클러스터롤바인딩과 클러스터롤을 사용해야 한다. 예를 들어 어떤 리소스들은 전혀 네임스페이스를 지정하지 않는데 노드, 퍼시스턴트 볼륨 등이 있다. 클러스터 롤은 네임스페이스가 지정되지 않은 리소스나 리소스가 아닌 URL에 액세스를 허용하는 클러스터 수준의 리소스로 각 네임스페이스에 동일한 롤을 재정의할 필요 없이 개별 네임스페이스에 바인드하여 공통적인 룰로 사용할 수 있다.

     

    kubectl create clusterrole pv-reader --verb=get,list --resource=persistentvolumes

     

     

    쿠버네티스 API 서버는 리소스가 아닌 URL도 노출한다. URL에 관한 액세스 권한 부여 역시 클러스터롤로 가능하다.

    MacBookPro ~ % k get clusterrole system:discovery -o yaml
    
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      annotations:
        rbac.authorization.kubernetes.io/autoupdate: "true"
      creationTimestamp: "2022-02-09T04:06:07Z"
      labels:
        kubernetes.io/bootstrapping: rbac-defaults
      name: system:discovery
      resourceVersion: "47"
      selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/system%3Adiscovery
      uid: 6bdd5ed6-1dbd-48b2-a1c3-7a772b09a5f9
    rules:
    - nonResourceURLs:
      - /api
      - /api/*
      - /apis
      - /apis/*
      - /healthz
      - /livez
      - /openapi
      - /openapi/*
      - /readyz
      - /version
      - /version/
      verbs:
      - get

     

     

    * 기본적으로 생성되는 system:discovery 클러스터롤 예시

     

     

    클러스터롤이 항상 클러스터 수준 클러스터롤바인딩과 바인딩 될 필요는 없다. 일반적인 롤바인딩과 바인딩될 수도 있다.

    클러스터롤은 클러스터롤바인딩과 롤바인딩 중 어디에 바인드되느냐에 따라 다른데 클러스터롤바인딩을 생성하고 클러스터롤을 참조하면, 바인딩에 나열된 주체 ( 사용자, 서비스어카운트, 그룹등 ) 은 모든 네임스페이스에 있는 지정된 리소스를 볼 수 있다. 반면 롤바인딩을 만들면 바인딩에 나열된 주체가 롤바인딩의 네임스페이스에 있는 리소스만 볼 수 있다.

     

     

    특정 룰과 바인딩의 조합을 사용해야 할 경우

    접근 롤 타입 사용할 바인딩 타입
    클러스터 수준 리소스 ( 노드, pv.. ) 클러스터롤 클러스터롤바인딩
    URL 클러스터롤 클러스터롤바인딩
    모든 네임스페이스로 지정된 리소스 클러스터롤 클러스터롤바인딩
    특정 네임스페이스 ( 한번에 ) 클러스터롤 롤바인딩
    특정 네임스페이스 ( 각각 ) 롤바인딩

     

     

     

     

     

    참고


    - 쿠버네티스 인 액션

Designed by Tistory.