11.2. 볼륨 프로젝션을 사용한 바인딩된 서비스 계정 토큰 구성
볼륨 프로젝션을 통해 바인딩된 서비스 계정 토큰을 요청하도록 pod를 구성할 수 있습니다.
사전 요구 사항
-
dedicated-admin
역할의 사용자로 클러스터에 액세스할 수 있습니다. -
서비스 계정을 생성했습니다. 이 절차에서는 서비스 계정의 이름이
build-robot
이라고 가정합니다.
프로세스
볼륨 프로젝션을 통해 바인딩된 서비스 계정 토큰을 사용하도록 pod를 구성합니다.
다음 콘텐츠를 사용하여
pod-projected-svc-token.yaml
이라는 파일을 생성합니다.apiVersion: v1 kind: Pod metadata: name: nginx spec: securityContext: runAsNonRoot: true 1 seccompProfile: type: RuntimeDefault 2 containers: - image: nginx name: nginx volumeMounts: - mountPath: /var/run/secrets/tokens name: vault-token securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL] serviceAccountName: build-robot 3 volumes: - name: vault-token projected: sources: - serviceAccountToken: path: vault-token 4 expirationSeconds: 7200 5 audience: vault 6
- 1
- 컨테이너가 root로 실행되도록 하여 위험 저하를 최소화합니다.
- 2
- 위험을 줄이기 위해 필수 시스템 호출으로 제한되는 기본 seccomp 프로필을 설정합니다.
- 3
- 기존 서비스 계정에 대한 참조입니다.
- 4
- 토큰을 프로젝션할 파일의 마운트 지점을 기준으로 하는 경로입니다.
- 5
- 필요한 경우 서비스 계정 토큰 만료 시간을 초 단위로 설정합니다. 기본값은 3600초(1시간)이며 이 값은 600초(10분) 이상이어야 합니다. 토큰이 수명의 80% 이상을 경과했거나 24시간 이상된 경우 kubelet에서 토큰을 순환하기 시작합니다.
- 6
- 필요한 경우 의도된 토큰 오디언스를 설정합니다. 토큰 수신자는 수신자 ID가 토큰의 오디언스 클레임과 일치하는지 확인하고 일치하지 않는 경우 토큰을 거부해야 합니다. 오디언스는 기본적으로 API 서버의 식별자입니다.
참고예기치 않은 실패를 방지하기 위해 OpenShift Dedicated는
--service-account-extend-token-expiration
기본값이true
인 초기 토큰 생성에서 1년으로expirationSeconds
값을 덮어씁니다. 이 설정은 변경할 수 없습니다.Pod를 생성합니다.
$ oc create -f pod-projected-svc-token.yaml
kubelet은 pod를 대신하여 토큰을 요청 및 저장하고, 구성 가능한 파일 경로에 있는 pod에서 토큰을 사용할 수 있도록 설정하고, 토큰이 만료되면 토큰을 갱신합니다.
바인딩된 토큰을 사용하는 애플리케이션에서는 토큰이 회전할 때 다시 로드하는 작업을 처리해야 합니다.
kubelet은 토큰이 수명의 80% 이상을 경과했거나 24시간 이상된 경우, 토큰을 회전합니다.