확장 API 서버 설정하기
확장 API 서버 설정하기 (Set up an Extension API Server)
애그리게이션 레이어와 함께 동작하도록 확장 API 서버를 설정하면, 핵심 쿠버네티스 API의 일부가 아닌 추가 API로 쿠버네티스 apiserver를 확장할 수 있어요.
출처: 문서
본문
시작하기 전에
- 애그리게이션 레이어를 구성하고 apiserver 플래그를 활성화해야 합니다.
애그리게이션 레이어와 함께 동작하도록 확장 api-server 설정하기
다음 단계는 확장 apiserver를 개략적으로 설정하는 방법을 설명해요. 이 단계는 YAML 구성이나 API를 사용하는지와 무관하게 적용됩니다. 둘 사이의 차이점을 구체적으로 식별하려고 노력합니다. YAML 구성으로 구현하는 방법의 구체적인 예시는 쿠버네티스 저장소의 sample-apiserver를 볼 수 있습니다.
또는 스켈레톤을 생성하고 아래의 모든 단계를 자동화해 주는 apiserver-builder 같은 기존 타사 솔루션을 사용할 수 있습니다.
- APIService API가 활성화되어 있는지 확인한다 (
--runtime-config확인). 클러스터에서 의도적으로 꺼두지 않는 한 기본적으로 켜져 있어야 합니다. - APIService 객체를 추가할 수 있게 해주는 RBAC 규칙을 직접 만들거나, 클러스터 관리자에게 만들어 달라고 요청해야 할 수 있습니다. (API 확장은 전체 클러스터에 영향을 주므로, 라이브 클러스터에서 API 확장을 테스트/개발/디버깅하는 것은 권장되지 않습니다.)
- 확장 api-service를 실행할 쿠버네티스 네임스페이스를 만든다.
- 확장 api-server가 HTTPS에 사용하는 서버 인증서를 서명하는 데 사용할 CA 인증서를 만들거나 가져온다.
- api-server가 HTTPS에 사용할 서버 인증서/키를 만든다. 이 인증서는 위 CA로 서명되어야 합니다. 또한 Kube DNS 이름의 CN을 가져야 합니다. 이는 쿠버네티스 서비스에서 파생되며
<service name>.<service name namespace>.svc형태입니다. - 네임스페이스에 서버 인증서/키가 있는 쿠버네티스 시크릿을 만든다.
- 확장 api-server용 쿠버네티스 deployment를 만들고 시크릿을 볼륨으로 로드하고 있는지 확인한다. 확장 api-server의 동작하는 이미지에 대한 참조를 포함해야 합니다. deployment도 네임스페이스에 있어야 합니다.
- 확장-apiserver가 해당 볼륨에서 그 인증서들을 로드하고 HTTPS 핸드셰이크에서 사용되는지 확인한다.
- 네임스페이스에 쿠버네티스 서비스 계정을 만든다.
- 리소스에서 허용하려는 작업에 대한 쿠버네티스 클러스터 역할을 만든다.
- 네임스페이스의 서비스 계정에서 만든 클러스터 역할로의 쿠버네티스 클러스터 역할 바인딩을 만든다.
- 인증 결정을 쿠버네티스 핵심 API 서버에 위임하도록, 네임스페이스의 서비스 계정에서
system:auth-delegator클러스터 역할로의 쿠버네티스 클러스터 역할 바인딩을 만든다. - 네임스페이스의 서비스 계정에서
extension-apiserver-authentication-reader역할로의 쿠버네티스 역할 바인딩을 만든다. 이는 확장 api-server가extension-apiserver-authenticationconfigmap에 접근할 수 있게 해줍니다. - 쿠버네티스 apiservice를 만든다. 위 CA 인증서는 base64로 인코딩하고 줄바꿈을 제거해 apiservice의 spec.caBundle로 사용해야 합니다. 이것은 네임스페이스를 가지면 안 됩니다. kube-aggregator API를 사용한다면 base64 인코딩이 자동으로 되므로 PEM 인코딩된 CA 번들만 전달하세요.
- kubectl을 사용해 리소스를 가져온다. 실행하면 kubectl이 "No resources found."를 반환해야 합니다. 이 메시지는 모든 것이 동작했지만 현재 그 리소스 유형의 객체가 생성되지 않았음을 나타냅니다.
더 알아보기 (Learn more)
- API 애그리게이션 레이어 구성 단계를 진행하고 apiserver 플래그를 활성화한다.
- 개략적인 개요는 애그리게이션 레이어로 쿠버네티스 API 확장을 참조한다.
- 커스텀 리소스 정의로 쿠버네티스 API 확장 방법 배우기.