7.4.3. 访问运行时属性
在大多数用例中,您写入的二进制文件或脚本文件必须有权访问插件框架提供的一些上下文信息。例如,如果您在描述符文件中声明了标记,则插件必须在运行时能够访问用户提供的标志值。
全局标志也是如此。插件框架负责执行此操作,因此插件作者不需要担心解析参数。这也确保插件和常规 oc
命令之间的最佳一致性水平。
插件可以通过环境变量访问运行时上下文属性。例如,若要访问通过标志提供的值,例如,使用针对二进制或脚本的适当函数调用查找正确的环境变量值。
支持的环境变量有:
-
KUBECTL_PLUGINS_CALLER
:当前命令调用中使用的oc
二进制文件的完整路径。作为插件作者,您不必实施逻辑来验证和访问 Kubernetes API。您可以使用此环境变量提供的值来调用oc
并获取所需信息,如oc get --raw=/apis
。 -
KUBECTL_PLUGINS_CURRENT_NAMESPACE
:当前的命名空间是此调用的上下文。这是要在命名空间操作中考虑的实际命名空间,这意味着它已经按照 kubeconfig 提供的优先级、--namespace
global 标志、环境变量等之间的优先级处理。 -
KUBECTL_PLUGINS_DESCRIPTOR_*
:用于 plugin.yaml 描述符中声明的每个属性的一个环境变量。例如:KUBECTL_PLUGINS_DESCRIPTOR_NAME
,KUBECTL_PLUGINS_DESCRIPTOR_COMMAND
. -
KUBECTL_PLUGINS_GLOBAL_FLAG_*
:每个oc
支持的全局标志的环境变量。例如:KUBECTL_PLUGINS_GLOBAL_FLAG_NAMESPACE
,KUBECTL_PLUGINS_GLOBAL_FLAG_LOGLEVEL
。 -
KUBECTL_PLUGINS_LOCAL_FLAG_*
:用于 plugin.yaml 描述符中声明的每个本地标记的一个环境变量。例如,以上great-plugin
示例中的KUBECTL_PLUGINS_LOCAL_FLAG_HEAT
。