7.4.3. ランタイム属性へのアクセス
多くの場合、プラグインをサポートするために作成するバイナリーまたはスクリプトファイルは、プラグインフレームワークで提供される一部のコンテキスト情報にアクセスできる必要があります。たとえば、記述子ファイルでフラグを宣言すると、プラグインは、ランタイムでユーザー提供のフラグ値へのアクセスが必要になります。
これはグローバルフラグの場合も同様です。プラグインフレームワークがこれを実行するので、プラグインの作成側で引数の解析を行う必要はありません。またこれにより、プラグインと通常の oc
コマンド間の一貫性を最適なレベルに保つことができます。
プラグインは環境変数を使ってランタイムのコンテキスト属性にアクセスできます。たとえば、フラグで提供された値にアクセスするには、バイナリーまたはスクリプトの適切な関数呼び出しを使用して適切な環境変数の値を探します。
以下は、サポート対象の環境変数です。
-
KUBECTL_PLUGINS_CALLER
: 現在のコマンド呼び出しで使用されたoc
バイナリーへの完全パスです。プラグイン作成側として、Kubernetes API の認証およびこれにアクセスするためのロジックを実装する必要はありません。代わりに、この環境変数が提供する値を使用してoc
を呼び出し、必要な情報を取得することができます。 たとえば、oc get --raw=/apis
などを使用できます。 -
KUBECTL_PLUGINS_CURRENT_NAMESPACE
: この呼び出しのコンテキストである現在の namespace です。これは namespace を使用する操作で考慮される実際の namespace です。 つまり、これは kubeconfig、--namespace
グローバルフラグ、環境変数などで提供され、優先順位が付けられた内容に従ってすでに処理されていることを意味します。 -
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
などがあります。