|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
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`フィールドにのみ生成され、返されます。したがって、 |
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