Amazon EKS 추가 기능에서 사용자 지정할 수 있는 필드 결정
Amazon EKS 추가 기능에서 사용자 지정할 수 있는 필드 결정
Amazon EKS 추가 기능은 표준 모범 사례 구성으로 클러스터에 설치됩니다. Amazon EKS 추가 기능을 클러스터에 추가하는 방법은 Amazon EKS 추가 기능을 참조하세요.
Amazon EKS 추가 기능의 구성을 사용자 지정해 고급 기능을 활성화할 수 있습니다. Amazon EKS는 Kubernetes 서버 측 적용(server-side apply) 기능을 사용하여, Amazon EKS가 관리하지 않는 설정에 대한 구성을 덮어쓰지 않고도 추가 기능을 Amazon EKS가 관리할 수 있게 합니다. 자세한 내용은 Kubernetes 문서의 Server-Side Apply를 참조하세요. 이를 위해 Amazon EKS는 설치하는 모든 추가 기능에 대해 최소한의 필드 집합을 관리합니다. Amazon EKS나 kube-controller-manager 같은 다른 Kubernetes 컨트롤 플레인 프로세스가 관리하지 않는 모든 필드를 문제없이 수정할 수 있습니다.
중요
Amazon EKS가 관리하는 필드를 수정하면 Amazon EKS가 추가 기능을 더 이상 관리할 수 없게 되며, 추가 기능이 업데이트될 때 변경 사항이 덮어써질 수 있습니다.
출처: 문서
본문
필드 관리 구문
Kubernetes 객체의 세부 정보를 볼 때 관리되는 필드와 관리되지 않는 필드가 모두 출력에 반환됩니다. 관리되는 필드는 다음 유형 중 하나일 수 있습니다.
- 완전 관리(Fully managed) – 필드의 모든 키가 Amazon EKS에 의해 관리됩니다. 어떤 값에 대한 수정도 충돌을 일으킵니다.
- 부분 관리(Partially managed) – 필드의 일부 키가 Amazon EKS에 의해 관리됩니다. Amazon EKS가 명시적으로 관리하는 키에 대한 수정만 충돌을 일으킵니다.
두 유형의 필드 모두 manager: eks로 태그됩니다.
각 키는 필드 자체를 나타내는 .(항상 빈 집합에 매핑됨)이거나 하위 필드 또는 항목을 나타내는 문자열입니다. 필드 관리 출력은 다음 유형의 선언으로 구성됩니다.
f:name– 여기서name은 목록에 있는 필드의 이름입니다.k:keys– 여기서keys는 목록 항목의 필드 맵입니다.v:value– 여기서value는 목록 항목의 정확한 JSON 형식 값입니다.i:index– 여기서index는 목록에서 항목의 위치입니다.
CoreDNS 추가 기능에 대한 다음 출력 부분은 앞선 선언을 설명합니다.
완전 관리 필드 – 관리 필드에 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
[...]
절차
kubectl을 사용해 어떤 Amazon EKS 추가 기능에 대해 Amazon EKS가 관리하는 필드를 볼 수 있습니다.
Amazon EKS나 kube-controller-manager 같은 다른 Kubernetes 컨트롤 플레인 프로세스가 관리하지 않는 모든 필드를 문제없이 수정할 수 있습니다.
검사하려는 추가 기능을 결정합니다. 클러스터에 배포된 모든 deployments와 DaemonSets를 보려면 AWS Management Console에서 Kubernetes 리소스 보기를 참조하세요.
다음 명령을 실행해 추가 기능의 관리 필드를 봅니다.
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버전이 관리 필드를 기본적으로 반환하는지 여부를 결정합니다.
다음 단계
추가 기능에서 AWS가 소유하지 않은 필드를 사용자 지정합니다.