

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# Amazon EKS 추가 기능에 대해 사용자 지정할 수 있는 필드 확인
<a name="kubernetes-field-management"></a>

Amazon EKS 추가 기능은 표준 모범 사례 구성을 사용하여 클러스터에 설치됩니다. Amazon EKS 추가 기능을 클러스터에 추가하는 방법에 대한 자세한 내용은 [Amazon EKS 추가 기능](eks-add-ons.md) 섹션을 참조하세요.

고급 기능을 사용하도록 Amazon EKS 추가 기능의 구성을 사용자 지정하려 할 수 있습니다. Amazon EKS는 Kubernetes 서버 측 적용 기능을 사용하여 Amazon EKS가 관리하지 않는 설정에 대한 구성을 덮어쓰지 않고도 Amazon EKS의 추가 기능을 관리할 수 있습니다. 자세한 내용은 Kubernetes 문서의 [서버 측 적용](https://kubernetes.io/docs/reference/using-api/server-side-apply/)을 참조하세요. 이를 위해 Amazon EKS는 설치하는 모든 추가 기능에 대해 최소한의 필드 세트를 관리합니다. Amazon EKS가 관리하지 않는 모든 필드 또는 다른 Kubernetes 컨트롤 플레인 프로세스(예: `kube-controller-manager`)를 문제없이 수정할 수 있습니다.

**중요**  
Amazon EKS가 관리하는 필드를 수정하면 Amazon EKS가 추가 기능을 관리할 수 없으며, 추가 기능이 업데이트될 때 변경 내용이 덮어써질 수 있습니다.

## 필드 관리 구문
<a name="add-on-config-management-understanding-field-management"></a>

Kubernetes 객체에 대한 세부 정보를 볼 때 관리형 및 비관리형 필드 모두 출력에 반환됩니다. 관리형 필드는 다음 유형 중 하나일 수 있습니다.
+  **완전 관리형** - 필드의 모든 키를 Amazon EKS에서 관리합니다. 어떤 값이든 수정하면 충돌이 발생합니다.
+  **부분 관리형** - 필드의 일부 키를 Amazon EKS에서 관리합니다. Amazon EKS에서 명시적으로 관리하는 키를 수정하면 충돌이 발생합니다.

두 유형의 필드 모두 `manager: eks`를 사용하여 태그가 지정됩니다.

각 키는 항상 빈 세트에 매핑되는 필드 자체를 나타내는 `.`이거나, 하위 필드 또는 항목을 나타내는 문자열입니다. 필드 관리에 대한 출력은 다음과 같은 유형의 선언으로 구성됩니다.
+  `f:name `, 여기서 *이름*은 목록의 필드 이름입니다.
+  `k:keys `, 여기서 *키*는 목록 항목의 필드 맵입니다.
+  `v:value `, 여기서 *값*은 목록 항목의 정확한 JSON 형식 값입니다.
+  `i:index `, 여기서 *인덱스*는 목록에서 항목의 위치입니다.

CoreDNS 추가 기능에 대한 다음 출력 부분은 이전 선언을 보여줍니다.
+  **완전관리형 필드(Fully managed fields)** - 관리형 필드에 `f:`(필드)가 지정되고 `k:`(키)가 지정되지 않은 경우 전체 필드가 관리됩니다. 이 필드의 값을 수정하면 충돌이 발생합니다.

  다음 출력에서는 `coredns`라는 컨테이너가 `eks`에 의해 관리되는 것을 확인할 수 있습니다. `args`, `image` 및 `imagePullPolicy` 하위 필드도 `eks`에서 관리합니다. 이러한 필드의 값을 수정하면 충돌이 발생합니다.

  ```
  [...]
  f:containers:
    k:{"name":"coredns"}:
    .: {}
    f:args: {}
    f:image: {}
    f:imagePullPolicy: {}
  [...]
  manager: eks
  [...]
  ```
+  **부분 관리형 필드** - 관리형 키에 값이 지정되면 해당 필드에 대해 선언된 키가 관리됩니다. 지정된 키를 수정하면 충돌이 발생합니다.

  다음 출력에서는 `eks`가 `name` 키로 설정된 `config-volume` 및 `tmp` 볼륨을 관리하는 것을 확인할 수 있습니다.

  ```
  [...]
  f:volumes:
    k:{"name":"config-volume"}:
      .: {}
      f:configMap:
        f:items: {}
        f:name: {}
      f:name: {}
    k:{"name":"tmp"}:
      .: {}
      f:name: {}
  [...]
  manager: eks
  [...]
  ```
+  **부분 관리형 필드에 키 추가** - 특정 키 값만 관리되는 경우, 충돌을 일으키지 않고 인수와 같은 추가 키를 필드에 안전하게 추가할 수 있습니다. 다른 키를 추가하는 경우 먼저 필드가 관리되지 않는지 확인합니다. 관리되는 값을 추가하거나 수정하면 충돌이 발생합니다.

  다음 출력에서는 `name` 키와 `name` 필드가 모두 관리되는 것을 알 수 있습니다. 컨테이너 이름을 추가하거나 수정하면 이 관리 키와 충돌이 발생합니다.

  ```
  [...]
  f:containers:
    k:{"name":"coredns"}:
  [...]
      f:name: {}
  [...]
  manager: eks
  [...]
  ```

## 절차
<a name="view-field-management"></a>

`kubectl`을 사용하여 Amazon EKS 추가 기능을 위해 Amazon EKS가 관리하는 필드를 볼 수 있습니다.

Amazon EKS가 관리하지 않는 모든 필드 또는 다른 Kubernetes 컨트롤 플레인 프로세스(예: `kube-controller-manager`)를 문제없이 수정할 수 있습니다.

1. 조사할 추가 기능을 확인합니다. 클러스터에 배포된 모든 `deployments`와 DaemonSet을 보려면 [AWS Management Console에서 Kubernetes 리소스 보기](view-kubernetes-resources.md) 섹션을 참조하세요.

1. 다음 명령을 실행하여 추가 기능에 대한 관리형 필드를 확인합니다.

   ```
   kubectl get type/add-on-name -n add-on-namespace -o yaml
   ```

   예를 들어 다음 명령을 사용하여 CoreDNS 추가 기능에 대한 관리형 필드를 볼 수 있습니다.

   ```
   kubectl get deployment/coredns -n kube-system -o yaml
   ```

   필드 관리는 반환된 출력의 다음 섹션에 나열되어 있습니다.

   ```
   [...]
   managedFields:
     - apiVersion: apps/v1
       fieldsType: FieldsV1
       fieldsV1:
   [...]
   ```
**참고**  
출력에 `managedFields`가 표시되지 않으면 명령에 `--show-managed-fields`를 추가하고 다시 실행합니다. 사용 중인 `kubectl` 버전에 따라 관리형 필드가 기본적으로 반환되는지 여부가 결정됩니다.

## 다음 단계
<a name="view-field-management-next-steps"></a>

AWS가 소유하지 않은 필드를 추가 기능에 맞도록 사용자 지정하세요.