# 인증

import { Aside } from '@astrojs/starlight/components';

`kubetail` CLI 도구는 로컬 **kubeconfig** 파일을 사용해 Kubernetes 클러스터에 인증합니다. 클러스터 내부 권한은 Cluster RBAC로 처리됩니다.

---

## Kubeconfig

인증이 필요한 `kubetail` 명령(예: `kubetail serve`, `kubetail logs`)을 실행하면 Kubetail은 로컬 kubeconfig 파일을 읽고, 그 안에 정의된 자격 증명을 사용해 각 클러스터 context에 연결합니다. 표준 kubeconfig 자격 증명 유형은 모두 지원됩니다.

| 자격 증명 유형            | kubeconfig 필드                                            |
|---------------------------|------------------------------------------------------------|
| Client certificate / key  | `client-certificate`, `client-key`                         |
| Bearer token              | `token`, `tokenFile`                                       |
| Exec credential plugin    | `exec` (예: `aws eks get-token`, `gke-gcloud-auth-plugin`) |
| OIDC / auth-provider      | `auth-provider`                                            |

Kubetail은 kubeconfig 파일의 변경을 감시하고, 재시작 없이도 새롭거나 업데이트된 context를 반영합니다.

<Aside type="tip">
다른 kubeconfig 파일을 사용하려면 다음 방법을 쓸 수 있습니다.

* CLI 플래그 `--kubeconfig` 사용
* 로컬 설정 파일의 `general.kubeconfig` 옵션 사용
* 표준 환경 변수 `KUBECONFIG` 사용
</Aside>

---

## RBAC 권한

`kubetail`은 kubeconfig 사용자의 권한을 사용합니다. 최소한, 모니터링하는 리소스에 대한 읽기 권한이 필요합니다.

| 리소스      | API 그룹 | 동사             |
|-------------|----------|------------------|
| cronjobs    | batch    | get, list, watch |
| daemonsets  | apps     | get, list, watch |
| deployments | apps     | get, list, watch |
| jobs        | batch    | get, list, watch |
| namespaces  | core     | get, list, watch |
| nodes       | core     | get, list, watch |
| pods        | core     | get, list, watch |
| pods/log    | core     | get, list, watch |
| replicasets | apps     | get, list, watch |
| statefulsets| apps     | get, list, watch |

`kubetail`은 사용자가 제한된 namespace 집합에만 접근할 수 있는 경우도 자동으로 감지합니다.