Kubernetes 서비스 계정
Kubernetes 서비스 계정은 Pod에서 실행되는 프로세스의 ID를 제공합니다. 자세한 내용을 알아보려면 Kubernetes 설명서의 서비스 계정 관리
서비스 계정 토큰
BoundServiceAccountTokenVolume
1.21
이상에서 사용 설정됩니다. 이 기능은 Kubernetes에서 실행되는 워크로드가 대상, 시간 및 키 바인딩인 JSON 웹 토큰을 요청하도록 허용하여 서비스 계정 토큰의 보안을 향상시킵니다. 서비스 계정 토큰에는 1시간 만료 기간이 있습니다. 이전 Kubernetes 버전에는 토큰에 만료 기간이 없었습니다. 즉, 이러한 토큰에 의존하는 클라이언트는 1시간 이내에 토큰을 새로 고쳐야 합니다. 다음 Kubernetes 클라이언트 SDK
Go 버전
0.15.7
이상Python 버전
12.0.0
이상Java 버전
9.0.0
이상JavaScript 버전
0.10.3
이상Ruby
master
브랜치Haskell 버전
0.3.0.0
C# 버전
7.0.5
이상
워크로드가 이전 클라이언트 버전을 사용하는 경우 업데이트해야 합니다. 클라이언트를 최신 시간 바운드 서비스 계정 토큰으로 원활하게 마이그레이션하도록 사용 설정하려면 Kubernetes 버전 1.21
이상은 기본 1시간 서비스 계정 토큰의 만료 기간을 추가로 연장합니다. Amazon EKS 클러스터의 경우 연장 만료 기간은 90일입니다. Amazon EKS 클러스터 Kubernetes API 서버는 90일이 지난 토큰을 사용한 요청을 거부합니다. 애플리케이션 및 해당 종속성을 확인하여 Kubernetes 클라이언트 SDK가 이전에 나열된 버전과 동일하거나 이후 버전인지 확인하는 것이 좋습니다.
API 서버가 1시간 이상 된 토큰으로 요청을 수신하면 API 감사 로그 이벤트에 annotations.authentication.k8s.io/stale-token
으로 주석을 추가합니다. 주석의 값은 다음 예와 유사합니다.
subject: system:serviceaccount:common:fluent-bit, seconds after warning threshold: 4185802.
클러스터에 컨트롤 플레인 로깅이 사용 설정되어 있는 경우 주석은 감사 로그에 있습니다. 다음과 같은 CloudWatch Logs Insights 쿼리를 사용하여 Amazon EKS 클러스터에서 오래된 토큰을 사용하는 모든 Pods를 식별할 수 있습니다.
fields @timestamp | filter @logStream like /kube-apiserver-audit/ | filter @message like /seconds after warning threshold/ | parse @message "subject: *, seconds after warning threshold:*\"" as subject, elapsedtime
subject
는 Pod가 사용한 서비스 계정을 참조합니다. elapsedtime
은 최신 토큰을 읽은 후 경과 시간(초)을 표시합니다. API 서버에 대한 요청은 elapsedtime
이 90일(7,776,000 초)을 초과하는 경우 거부됩니다. 이전에 나열된 버전 중 하나를 사용하여 토큰을 자동으로 새로 고치도록 하려면 애플리케이션의 Kubernetes 클라이언트 SDK를 적극적으로 업데이트해야 합니다. 사용된 서비스 계정 토큰이 90일에 가까우며 토큰 만료 전에 클라이언트 SDK 버전을 업데이트할 시간이 충분하지 않은 경우 기존 Pods를 종료하고 새 포드를 생성할 수 있습니다. 이로 인해 서비스 계정 토큰을 다시 가져와서 클라이언트 버전 SDK를 업데이트하는 데 추가로 90일이 제공됩니다.
Pod가 배포의 일부인 경우 고가용성을 유지하면서 Pods를 종료하라고 제안된 방법은 다음 명령으로 롤아웃을 수행하는 것입니다.
를 배포 이름으로 바꿉니다.my-deployment
kubectl rollout restart deployment/
my-deployment
클러스터 추가 기능
다음 클러스터 추가 기능은 Kubernetes 클라이언트 SDK를 사용하여 서비스 계정 토큰을 자동으로 다시 가져오도록 업데이트되었습니다. 나열된 버전 또는 이후 버전이 1.21
이상의 클러스터에 설치되었는지 확인하는 것이 좋습니다.
-
Amazon VPC CNI plugin for Kubernetes 및 CNI 지표 헬퍼 플러그인 버전
1.8.0
이상. 현재 버전을 확인하거나 업데이트하려면 Amazon VPC CNI plugin for Kubernetes Amazon EKS 추가 기능을 사용한 작업 및 cni-metrics-helper부분을 참조하세요. -
CoreDNS 버전
1.8.4
이상 현재 버전을 확인하거나 업데이트하려면 CoreDNS Amazon EKS 추가 기능을 사용한 작업 섹션을 참조하세요. -
AWS Load Balancer Controller 버전
2.0.0
이상 현재 버전을 확인하거나 업데이트하려면 AWS Load Balancer Controller 추가 기능 설치 섹션을 참조하세요. -
kube-proxy
버전1.21.2-eksbuild.2
이상 현재 버전을 확인하거나 업데이트하려면 Kubernetes kube-proxy 자체 관리형 추가 기능 업데이트 부분을 참조하세요. AWS for Fluent Bit 버전
2.25.0
이상. 현재 버전을 업데이트하려면 GitHub의 릴리스를 참조하세요. Fluentd 이미지 버전 1.14.6-1.2
이상 및 Kubernetes 메타데이터 버전 2.11.1 이상용 Fluentd 필터 플러그인.