この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

Kubeconfig群

Kubeconfigリソース

Kubeconfigは、Rancherリソース`kubeconfigs.ext.cattle.io`であり、RancherおよびRancherによって管理されるクラスターと対話するための`v1.Config` kubeconfigファイルを生成することを可能にします。

kubectl api-resources --api-group=ext.cattle.io

Kubeconfigリソースのフィールドと構造の説明を取得するには、次のコマンドを実行してください:

kubectl explain kubeconfigs.ext.cattle.io

Kubeconfigの作成

Rancher v2.13以降、`status.bearerToken`には、Rancher APIに認証するために使用できる、完全に形成され、すぐに使用可能なBearerトークンが含まれています。

有効でアクティブなRancherユーザーのみがKubeconfigを作成できます。例えば、`system:admin`サービスアカウントを使用してKubeconfigを作成しようとすると、エラーが発生します:

kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
EOF
Error from server (Forbidden): error when creating "STDIN": kubeconfigs.ext.cattle.io is forbidden: user system:admin is not a Rancher user

Kubeconfigの内容は、作成されたトークンの秘密値を含むため、Kubeconfigが正常に作成されたときに`.status.value`フィールドにのみ生成され、返されます。したがって、-o jsonpath='{.status.value}'`や-o yaml`などの適切な出力オプションを使用してキャプチャする必要があります。

Kubeconfigは、`spec.clusters`フィールドにクラスター名のリストを指定することにより、同時に複数のクラスターのために作成できます。`clusters.management.cattle.io`リソースをリストすることで、クラスター名を調べることができます。

kubectl get clusters.management.cattle.io -o=jsonpath="{.items[*]['metadata.name', 'spec.displayName']}{'\n'}"
local local
c-m-p66cdvlj downstream1

`metadata.name`および`metadata.generateName`フィールドは無視され、新しいKubeconfigの名前はプレフィックス`kubeconfig-`を使用して自動的に生成されます。

`spec.currentContext`フィールドを使用してクラスター名を設定でき、これはKubeconfigの現在のコンテキストを設定するために使用されます。`spec.currentContext`フィールドを設定しない場合、`spec.clusters`リストの最初のクラスターが現在のコンテキストとして使用されます。FQDNが設定されていないACE対応クラスターの場合、最初のコントロールプレーンノードが現在のコンテキストとして使用されます。

FQDNが設定されているACE対応クラスターの場合、それがKubeconfigのクラスターエントリとして使用されます。そうでない場合、すべてのコントロールプレーンノードのエントリが作成されます。

kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
  clusters: [c-m-p66cdvlj, c-m-fcd3g5h]
  description: My Kubeconfig
  currentContext: c-m-p66cdvlj
EOF

`"*"`が`spec.clusters`フィールドの最初の項目として指定されている場合、ユーザーがアクセスできるすべてのクラスターのためにKubeconfigが作成されます。

kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
  clusters: ["*"]
  description: My Kubeconfig
EOF

`spec.ttl`が指定されていない場合、Kubeconfigのトークンは、デフォルトで30日となる`kubeconfig-default-token-ttl-minutes`設定に定義された有効期限を用いて作成されます。`spec.ttl`が指定されている場合、それは0より大きく、`kubeconfig-default-token-ttl-minutes`設定の値(秒単位)以下である必要があります。

kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
  clusters: [c-m-p66cdvlj] # Downstream cluster
  ttl: 7200 # 2 hours
EOF

Kubeconfigの一覧表示

以前に生成されたKubeconfigの一覧表示は、Kubeconfigがもはや必要ない場合(例えば、一時的に発行された場合)にトークンを整理するのに役立ちます。管理者はすべてのKubeconfigを一覧表示できますが、一般ユーザーは自分のものだけを表示できます。

kubectl get kubeconfig
NAME               TTL   TOKENS   STATUS     AGE
kubeconfig-zp786   30d   2/2      Complete   18d
kubeconfig-7zvzp   30d   1/1      Complete   12d
kubeconfig-jznml   30d   1/1      Complete   12d

詳細を取得するには`-o wide`を使用してください:

kubectl get kubeconfig -o wide
NAME               TTL   TOKENS   STATUS     AGE     USER         CLUSTERS       DESCRIPTION
kubeconfig-zp786   30d   2/2      Complete   18d     user-w5gcf   *              all clusters
kubeconfig-7zvzp   30d   1/1      Complete   12d     u-w7drc      *
kubeconfig-jznml   30d   1/1      Complete   12d     u-w7drc      *

Kubeconfigの表示

管理者は任意のKubeconfigを取得できますが、一般ユーザーは自分のものだけを取得できます。

kubectl get kubeconfig kubeconfig-zp786
NAME               TTL   TOKENS   STATUS     AGE
kubeconfig-zp786   30d   2/2      Complete   18d

詳細を取得するには`-o wide`を使用してください:

kubectl get kubeconfig kubeconfig-zp786 -o wide
NAME               TTL   TOKENS   STATUS     AGE     USER         CLUSTERS       DESCRIPTION
kubeconfig-zp786   30d   2/2      Complete   18d     user-w5gcf   *              all clusters

Kubeconfigの削除

管理者は任意のKubeconfigを削除できますが、一般ユーザーは自分のものだけを削除できます。Kubeconfigが削除されると、Kubeconfigトークンも削除されます。

kubectl delete kubeconfig kubeconfig-zp786
kubeconfig.ext.cattle.io "kubeconfig-zp786" deleted

前提条件を使用してKubeconfigを削除するには:

cat <<EOF | k delete --raw /apis/ext.cattle.io/v1/kubeconfigs/kubeconfig-zp786 -f -
{
  "apiVersion": "v1",
  "kind": "DeleteOptions",
  "preconditions": {
    "uid": "52183e05-d382-47d2-b4b9-d0735823ce90",
    "resourceVersion": "31331505"
  }
}
EOF

Kubeconfigのコレクションを削除する

管理者は任意のKubeconfigを削除できますが、一般ユーザーは自分のものだけを削除できます。

すべてのKubeconfigを削除するには:

kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs

ラベルによってKubeconfigのコレクションを削除するには:

kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs?labelSelector=foo%3Dbar

Kubeconfigを更新する

metadata、例えばラベルや注釈の追加、及び`spec.description`フィールドのみが更新できます。他のすべての`spec`フィールドは不変です。

Kubeconfigを編集するには:

kubectl edit kubeconfig kubeconfig-zp786

Kubeconfigをパッチしてその説明を更新するには:

kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"spec":{"description":"Updated description"}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched

kubectl get kubeconfig kubeconfig-fdcpl -o jsonpath='{.spec.description}'
Updated description

Kubeconfigをパッチしてラベルを追加するには:

kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"metadata":{"labels":{"foo":"bar"}}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched

kubectl get kubeconfig kubeconfig-zp786 -o jsonpath='{.metadata.labels.foo}'
bar