7.4.3. 런타임 속성 액세스
대부분의 사용 사례에서 플러그인을 지원하도록 작성한 바이너리 또는 스크립트 파일은 플러그인 프레임워크에서 제공하는 일부 컨텍스트 정보에 액세스할 수 있어야 합니다. 예를 들어 설명자 파일에서 플래그를 선언한 경우 플러그인은 런타임 시 사용자 제공 플래그 값에 액세스할 수 있어야 합니다.
이는 global flags에서도 마찬가지입니다. 플러그인 프레임워크는 이를 수행해야 하므로 플러그인 작성자는 인수 구문 분석에 대해 걱정할 필요가 없습니다. 또한 플러그인과 일반 oc
명령 간의 일관성을 극대화합니다.
플러그인은 환경 변수를 통해 런타임 컨텍스트 속성에 액세스할 수 있습니다. 예를 들어 플래그를 통해 제공되는 값에 액세스하려면 바이너리 또는 스크립트에 대한 적절한 함수 호출을 사용하여 적절한 환경 변수의 값을 찾습니다.
지원되는 환경 변수는 다음과 같습니다.
-
KUBECTL_PLUGINS_CALLER
: 현재 명령 호출에 사용된oc
바이너리의 전체 경로입니다. 플러그인 작성자는 Kubernetes API를 인증하고 액세스하기 위한 논리를 구현할 필요가 없습니다. 대신 이 환경 변수에서 제공하는 값을 사용하여 oc를 호출하고oc
get --raw=/apis -
KUBECTL_PLUGINS_CURRENT_NAMESPACE
:이 호출의 컨텍스트인 현재 네임스페이스입니다. 이는 네임스페이스 작업에서 고려해야 할 실제 네임스페이스입니다. 이는 kubeconfig,--namespace
글로벌 플래그, 환경 변수 등을 통해 제공된 우선 순위 측면에서 이미 처리되었습니다. -
KUBECTL_PLUGINS_DESCRIPTOR_*
: plugin.yaml 설명자에 선언된 모든 속성에 대한 환경 변수 1개 예를 들어KUBECTL_PLUGINS_DESCRIPTOR_NAME
,KUBECTL_PLUGINS_DESCRIPTOR_COMMAND
입니다. -
KUBECTL_PLUGINS_GLOBAL_FLAG_*
:oc
에서 지원하는 모든 글로벌 플래그에 대해 하나의 환경 변수 예를 들어,KUBECTL_PLUGINS_GLOBAL_FLAG_NAMESPACE
,KUBECTL_PLUGINS_PLUGINS_LOGLEVEL
입니다. -
KUBECTL_PLUGINS_LOCAL_FLAG_*
: plugin.yaml 설명자에 선언된 모든 로컬 플래그의 환경 변수 1개 예를 들어, 위의great-plugin
예제의KUBECTL_PLUGINS_LOCAL_FLAG_HEAT
입니다.