本主題說明如何設定和管理 Tanzu Kubernetes Grid 中的工作負載叢集使用的密碼,包括:
如果您用來存取 vSphere 或 Azure 的認證有所變更,您可以更新叢集,以使用新認證。AWS 是以不同方式來處理認證,因此本節僅適用於 vSphere 和 Azure。
若要更新目前獨立管理叢集及其所有工作負載叢集使用的 vSphere 認證,請使用 tanzu mc credentials update --cascading
命令:
執行 tanzu login
,以登入您要更新的管理叢集。
執行 tanzu mc credentials update
。您可以將值傳遞至下列命令選項,或讓 CLI 提示您輸入:
--vsphere-user
:vSphere 帳戶的名稱。--vsphere-password
:vSphere 帳戶的密碼。若要更新獨立管理叢集的 vSphere 認證,但不更新其工作負載叢集的認證,請使用上述 tanzu mc credentials update
命令,但不使用 --cascading
選項。
若要更新單一工作負載叢集用於存取 vSphere 的認證,請使用 tanzu cluster credentials update
命令:
執行 tanzu login
,以登入管理叢集 (該管理叢集已建立您要更新的工作負載叢集)。管理叢集可以是主管叢集或獨立管理叢集。
執行 tanzu cluster credentials update CLUSTER-NAME
。您可以將值傳遞至下列命令選項,或讓 CLI 提示您輸入:
--namespace
:您要更新認證的叢集所在命名空間,例如 default
。--vsphere-user
:vSphere 帳戶的名稱。--vsphere-password
:vSphere 帳戶的密碼。您還可以使用 tanzu mc credentials update --cascading
,來更新管理叢集及其管理的所有工作負載叢集的 vSphere 認證。
重要在開始之前,請從 Azure 入口網站或 Azure 管理員,取得新的 Azure 認證。
若要更新目前獨立管理叢集及其所有工作負載叢集使用的 Azure 認證,請使用 tanzu mc credentials update --cascading
命令:
執行 tanzu login
,以登入您要更新的管理叢集。
執行 tanzu mc credentials update
。您可以將值傳遞至下列命令選項,或讓 CLI 提示您輸入:
--azure-client-id
:您向 Azure 登錄的 Tanzu Kubernetes Grid 應用程式的用戶端識別碼。--azure-client-secret
:您登錄在 Azure 中的 Tanzu Kubernetes Grid 應用程式的用戶端密鑰。--azure-tenant-id
:Tanzu Kubernetes Grid 應用程式所在的 Azure Active Directory 的承租人識別碼。若要更新獨立管理叢集的 Azure 認證,但不更新其工作負載叢集的認證,請使用上述 tanzu mc credentials update
命令,但不使用 --cascading
選項。
若要更新單一工作負載叢集用來存取 Azure 的認證,請使用 tanzu cluster credentials update
命令:
執行 tanzu login
,以登入管理叢集 (該管理叢集已建立您要更新的工作負載叢集)。
執行 tanzu cluster credentials update CLUSTER-NAME
。您可以將值傳遞至下列命令選項,或讓 CLI 提示您輸入:
--namespace
:您要更新認證的叢集所在命名空間,例如 default
。--azure-client-id
:您向 Azure 登錄的 Tanzu Kubernetes Grid 應用程式的用戶端識別碼。--azure-client-secret
:您登錄在 Azure 中的 Tanzu Kubernetes Grid 應用程式的用戶端密鑰。--azure-tenant-id
:Tanzu Kubernetes Grid 應用程式所在的 Azure Active Directory 的承租人識別碼。您還可以使用 tanzu mc credentials update --cascading
,來更新管理叢集及其管理的所有工作負載叢集的 Azure 認證。
視組態方法和叢集類型而定,將 TKG 叢集設定為自動更新其控制平面節點虛擬機器憑證,如下所示:
Kubernetes 樣式的物件規格 (以類別為基礎的叢集):
在 Cluster
物件規格中,將下列區塊包含在 spec.topology.variables
下:
- name: controlPlaneCertificateRotation.activate
value: true
- name: controlPlaneCertificateRotation.daysBefore
value: EXPIRY-DAYS
平面叢集組態檔 (以類別為基礎的叢集或舊版叢集):
在叢集組態檔中,包含以下設定:
CONTROLPLANE_CERTIFICATE_ROTATION_ENABLED: true
CONTROLPLANE_CERTIFICATE_ROTATION_DAYS_BEFORE: EXPIRY-DAYS
其中,EXPIRY-DAYS
是選用設定,用來設定要在憑證到期日期的幾天前,就自動更新叢集節點憑證。預設值: 90;最小:7。
獨立管理叢集及其工作負載叢集會使用用戶端憑證來驗證要求。這些憑證的有效期為一年。若要更新憑證,您可以升級叢集,或遵循以下程序。此程序適用於尚未到期且仍然有效的叢集憑證。
識別您要更新其憑證的叢集。例如:
tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
workload-slot35rp10 default running 3/3 3/3 v1.24.10+vmware.1 <none> prod v1.24.10---vmware.2-tkg.1
若要列出叢集節點,請執行:
kubectl get nodes -o wide
檢查憑證的到期日期:
kubectl get nodes \
-o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}' \
-l node-role.kubernetes.io/master= > nodes
for i in `cat nodes`; do
printf "\n######\n"
ssh -o "StrictHostKeyChecking=no" -q capv@$i hostname
ssh -o "StrictHostKeyChecking=no" -q capv@$i sudo kubeadm certs check-expiration
done;
kubectl get nodes \
-o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}' \
-l node-role.kubernetes.io/master= > nodes
for i in `cat nodes`; do
printf "\n######\n"
ssh -i aws-cluster-key.pem -o "StrictHostKeyChecking=no" -q ubuntu@$i hostname
ssh -i aws-cluster-key.pem -o "StrictHostKeyChecking=no" -q ubuntu@$i sudo kubeadm certs check-expiration
done;
kubectl get nodes \
-o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}' \
-l node-role.kubernetes.io/master= > nodes
for i in `cat nodes`; do
printf "\n######\n"
ssh -i azure-cluster-key.pem -o "StrictHostKeyChecking=no" -q capi@$i hostname
ssh -i azure-cluster-key.pem -o "StrictHostKeyChecking=no" -q capi@$i sudo kubeadm certs check-expiration
done;
輸出範例:
######
workload-slot35rp10-control-plane-ggsmj
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
W0923 17:51:03.686273 4172778 utils.go:69] The recommended value for "resolvConf" in "KubeletConfiguration" is: /run/systemd/resolve/resolv.conf; the provided value is: /run/systemd/resolve/resolv.conf
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Sep 21, 2023 23:13 UTC 363d ca no
apiserver Sep 21, 2023 23:13 UTC 363d ca no
apiserver-etcd-client Sep 21, 2023 23:13 UTC 363d etcd-ca no
apiserver-kubelet-client Sep 21, 2023 23:13 UTC 363d ca no
controller-manager.conf Sep 21, 2023 23:13 UTC 363d ca no
etcd-healthcheck-client Sep 21, 2023 23:13 UTC 363d etcd-ca no
etcd-peer Sep 21, 2023 23:13 UTC 363d etcd-ca no
etcd-server Sep 21, 2023 23:13 UTC 363d etcd-ca no
front-proxy-client Sep 21, 2023 23:13 UTC 363d front-proxy-ca no
scheduler.conf Sep 21, 2023 23:13 UTC 363d ca no
CERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
ca Sep 18, 2032 23:09 UTC 9y no
etcd-ca Sep 18, 2032 23:09 UTC 9y no
front-proxy-ca Sep 18, 2032 23:09 UTC 9y no
將 kubectl
內容設定為管理叢集。例如:
kubectl config use-context mgmt-slot35rp10-admin@mgmt-slot35rp10
取得目標叢集的 KCP 物件名稱。例如:
kubectl get kcp
NAME CLUSTER INITIALIZED API SERVER AVAILABLE REPLICAS READY UPDATED UNAVAILABLE AGE VERSION
workload-slot35rp10-control-plane workload-slot35rp10 true true 3 3 3 0 42h v1.24.10+vmware.1
觸發控制平面推出,來更新憑證:
kubectl patch kcp workload-slot35rp10-control-plane --type merge -p "{\"spec\":{\"rolloutAfter\":\"`date +'%Y-%m-%dT%TZ'`\"}}
執行此命令後,Tanzu Kubernetes Grid 會開始重新佈建叢集機器:
kubectl get machines
workload-slot35rp10-control-plane-7z95k workload-slot35rp10 Provisioning 20s v1.24.10+vmware.1
workload-slot35rp10-control-plane-ggsmj workload-slot35rp10 workload-slot35rp10-control-plane-ggsmj vsphere://4201a86e-3c15-879a-1b85-78f76a16c27f Running 42h v1.24.10+vmware.1
workload-slot35rp10-control-plane-hxbxb workload-slot35rp10 workload-slot35rp10-control-plane-hxbxb vsphere://42014b2e-07e4-216a-24ef-86e2d52d7bbd Running 42h v1.24.10+vmware.1
workload-slot35rp10-control-plane-sm4nw workload-slot35rp10 workload-slot35rp10-control-plane-sm4nw vsphere://4201cff3-2715-ffe1-c4a6-35fc795995ce Running 42h v1.24.10+vmware.1
workload-slot35rp10-md-0-667bcd6b57-79br9 workload-slot35rp10 workload-slot35rp10-md-0-667bcd6b57-79br9 vsphere://420142a2-d141-7d6b-b322-9c2afcc47da5 Running 42h v1.24.10+vmware.1
...
當所有機器都處於 Running
狀態時,確認憑證更新已成功完成:
將 kubectl
內容設定為工作負載叢集:
kubectl config use-context workload-slot35rp10-admin@workload-slot35rp10
再次檢查憑證的到期日期:
kubectl get nodes \
-o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}' \
-l node-role.kubernetes.io/master= > nodes
for i in `cat nodes`; do
printf "\n######\n"
ssh -o "StrictHostKeyChecking=no" -q capv@$i hostname
ssh -o "StrictHostKeyChecking=no" -q capv@$i sudo kubeadm certs check-expiration
done;
輸出範例:
######
workload-slot35rp10-control-plane-4xgw8
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
W0923 18:10:02.660438 13427 utils.go:69] The recommended value for "resolvConf" in "KubeletConfiguration" is: /run/systemd/resolve/resolv.conf; the provided value is: /run/systemd/resolve/resolv.conf
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Sep 23, 2023 18:05 UTC 364d ca no
apiserver Sep 23, 2023 18:05 UTC 364d ca no
apiserver-etcd-client Sep 23, 2023 18:05 UTC 364d etcd-ca no
apiserver-kubelet-client Sep 23, 2023 18:05 UTC 364d ca no
controller-manager.conf Sep 23, 2023 18:05 UTC 364d ca no
etcd-healthcheck-client Sep 23, 2023 18:05 UTC 364d etcd-ca no
etcd-peer Sep 23, 2023 18:05 UTC 364d etcd-ca no
etcd-server Sep 23, 2023 18:05 UTC 364d etcd-ca no
front-proxy-client Sep 23, 2023 18:05 UTC 364d front-proxy-ca no
scheduler.conf Sep 23, 2023 18:05 UTC 364d ca no
CERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
ca Sep 18, 2032 23:09 UTC 9y no
etcd-ca Sep 18, 2032 23:09 UTC 9y no
front-proxy-ca Sep 18, 2032 23:09 UTC 9y no
如果憑證更新已成功完成,則 Residual Time
資料行將顯示 364d
。工作節點上的憑證會自動更新。
要將主管部署的 TKG 叢集設為使用 TKG 外部的私人容器登錄 (即具有不在 TKG 叢集中執行的自我簽署憑證的登錄),請參閱 vSphere 說明文件中的以下主題:
TKG_CUSTOM_IMAGE_REPOSITORY_*
變數將新叢集設為與使用自我簽署的憑證授權機構 (CA) 憑證的 Harbor 登錄進行受信任通訊,例如,從網際網路受限環境中的自訂登錄中提取 TKG 映像。
您可以將叢集設為針對 containerd
TLS 和其他用途信任其他私人登錄。如何設定的方式取決於叢集是基於計劃還是基於類別,如下所述。
若要為其他自訂映像登錄建立以信任設定的以類別為基礎的叢集:
按照建立以類別為基礎的叢集中所述的兩個步驟中的步驟 1 產生新的叢集清單。
編輯產生的資訊清單中的 trust
下的 topology.variables
設定以新增 additionalTrustedCAs
區塊:
topology:
variables:
- name: trust
value:
additionalTrustedCAs:
- data: CA-BASE64
- name: proxy
其中,CA-BASE64
是 base64 編碼格式的 CA 憑證。
請注意,trust
變數區塊已包含從 TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE
和 TKG_PROXY_CA_CERT
組態變數設定的值。
使用修改後的清單執行 tanzu cluster create
,作為兩步叢集建立程序的步驟 2。
要啟用新的 TKC 或基於計劃的叢集以從使用自我簽署憑證的容器登錄中提取映像,請使用 ytt
覆蓋檔將自訂憑證加入工作負載叢集節點。
下面的覆蓋程式碼將自訂 CA 憑證加入新叢集中的所有節點。此程式碼可在所有雲端目標平台上運作,適用於 Photon 或 Ubuntu 虛擬機器映像範本型叢集。
如需瞭解會自訂叢集並建立新叢集計劃的覆疊,請參閱 ytt
覆疊。
選擇是否將自訂 CA 套用至所有新叢集、僅在一個雲端基礎結構上建立的叢集,或使用特定叢集 API 提供者版本 (例如叢集 API 提供者 vSphere v1.5.1) 建立的叢集。
在本機 ~/.config/tanzu/tkg/providers/
目錄中,找到涵蓋所選範圍的 ytt
目錄。例如,/ytt/03_customizations/
適用於所有叢集,/infrastructure-vsphere/ytt/
適用於所有 vSphere 叢集。
在您選擇的 ytt
目錄中,建立新的 .yaml
檔案,或使用以下程式碼來擴展現有的覆疊檔:
#@ load("@ytt:overlay", "overlay")
#@ load("@ytt:data", "data")
#! This ytt overlay adds additional custom CA certificates on TKG cluster nodes, so containerd and other tools trust these CA certificates.
#! It works when using Photon or Ubuntu as the TKG node template on all TKG target platforms.
#! Trust your custom CA certificates on all Control Plane nodes.
#@overlay/match by=overlay.subset({"kind":"KubeadmControlPlane"})
---
spec:
kubeadmConfigSpec:
#@overlay/match missing_ok=True
files:
#@overlay/append
- content: #@ data.read("tkg-custom-ca.pem")
owner: root:root
permissions: "0644"
path: /etc/ssl/certs/tkg-custom-ca.pem
#@overlay/match missing_ok=True
preKubeadmCommands:
#! For Photon OS
#@overlay/append
- '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
#! For Ubuntu
#@overlay/append
- '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem /usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'
#! Trust your custom CA certificates on all worker nodes.
#@overlay/match by=overlay.subset({"kind":"KubeadmConfigTemplate"}), expects="1+"
---
spec:
template:
spec:
#@overlay/match missing_ok=True
files:
#@overlay/append
- content: #@ data.read("tkg-custom-ca.pem")
owner: root:root
permissions: "0644"
path: /etc/ssl/certs/tkg-custom-ca.pem
#@overlay/match missing_ok=True
preKubeadmCommands:
#! For Photon OS
#@overlay/append
- '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
#! For Ubuntu
#@overlay/append
- '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem /usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'
在同一個 ytt
目錄中,將憑證授權機構新增至新的或現有的 tkg-custom-ca.pem
檔案中。
在建立叢集之前,請將 allow-legacy-cluster
功能設為 true
,如 (舊版) 建立以計劃為基礎或 TKC 叢集中所述。
除了 TKG_CUSTOM_IMAGE_REPOSITORY_*
組態變數設定的 CA 以外,您還可以在現有叢集和其他具有自我簽署 CA 的自訂 Harbor 登錄之間啟用受信任通訊,以用於 containerd
TLS 和其他用途。如何設定的方式取決於叢集是基於計劃還是基於類別,如下所述。
要將信任的自訂登錄新增至以類別為基礎的現有叢集,請編輯其 Cluster
物件,新增 additionalTrustedCAs
值 (如上文中的以類別為基礎的叢集的受信任登錄中所述),然後套用修改後的 Cluster
規格。
若要使用自訂自我簽署的 CA 在現有叢集與 Harbor 登錄之間啟用信任,請執行以下動作:
擷取 Harbor CA 憑證:
將內容切換至執行 Harbor 的叢集 (例如共用服務叢集):
kubectl config use-context SERVICES-CLUSTER-CONTEXT
其中,SERVICES-CLUSTER-CONTEXT
是叢集的內容。例如,tkg-wld-admin@tkg-wld
。
擷取憑證:
kubectl -n tanzu-system-registry get secret harbor-tls -o=jsonpath="{.data.ca\.crt}" | base64 -d
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIQMfZy08muvIVKdZVDz7/rYzANBgkqhkiG9w0BAQsFADBI
[...]
yiDghW7antzYL9S1CC8sVgVOwFJwfFXpdiir35mQlySG301V4FsRV+Z0cFp4Ni0=
-----END CERTIFICATE-----
將自訂 CA 新增到獨立管理叢集的 kubeadmconfigtemplate
:
將內容切換至管理叢集。
kubectl config use-context MANAGEMENT-CLUSTER-CONTEXT
其中,MANAGEMENT-CLUSTER-CONTEXT
是管理叢集的內容。例如,tkg-mgmt-admin@tkg-mgmt
。
在編輯器中,開啟叢集的 kubeadmconfigtemplate
範本檔案:
kubectl edit kubeadmconfigtemplate CLUSTER-NAME-md-0
其中,CLUSTER-NAME
是必須修改的叢集的名稱。
變更檔案的 spec.template.spec.files
區段以包含憑證,如下所示:
spec:
template:
spec:
files:
- content: |
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIQMfZy08muvIVKdZVDz7/rYzANBgkqhkiG9w0BAQsFADBI
[...]
yiDghW7antzYL9S1CC8sVgVOwFJwfFXpdiir35mQlySG301V4FsRV+Z0cFp4Ni0=
-----END CERTIFICATE-----
owner: root:root
path: /etc/ssl/certs/tkg-custom-ca.pem
permissions: "0644"
在檔案底部,新增 preKubeadmCommands
區塊,如下所示:
preKubeadmCommands:
- '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
- '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem
/usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'
儲存含有您所做變更的 kubeadmconfigtemplate
範本檔案。
修補獨立管理叢集,使其包含您的變更:
kubectl patch machinedeployments.cluster.x-k8s.io tkg-test-md-0 --type merge -p "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
執行此命令時,會觸發叢集節點的輪流更新,且會更新其時間戳記。
您可以新增驗證密碼,讓叢集能夠存取私人容器登錄,這需要使用者驗證才能提取映像。針對叢集存取的私人登錄,也可以檢視、更新或刪除已為其設定的驗證密碼。
可以使用 Tanzu CLI 新增驗證密碼,以從叢集存取私人容器登錄。將登錄密碼新增至叢集中的命名空間後,可以提取私人登錄中裝載的所有套件存放庫、套件和容器映像。之後,可以將套件存放庫和套件資源新增至叢集。
執行此程序之前,請取得私人容器登錄的使用者名稱和密碼。
若要將驗證密碼新增至私人登錄,請執行下列命令:
tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password PASSWORD
其中:
SECRET-NAME
是您要新增的登錄驗證密鑰的名稱。NAMESPACE
是登錄所屬的 Tanzu Kubernetes Grid 命名空間。USERNAME
是用來存取登錄的使用者名稱。如果使用者名稱包含特殊字元,請用單引號括住使用者名稱。PASSWORD
是用於存取登錄的密碼。如果密碼包含特殊字元,請用單引號括住密碼。也可以用下列格式指定密碼:
將命令中的 --password PASSWORD
字串取代為 --password-env-var ENV-VAR
以透過已設定的環境變數指定密碼。命令的格式如下所示:
tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password-env-var ENV-VAR
將命令中的 --password PASSWORD
字串取代為 --password-stdin
字串,以透過標準輸入指定密碼,並在出現提示時輸入密碼。命令的格式如下所示:
tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password-stdin
將命令中的 --password PASSWORD
字串取代為 --password-file PASSWORD-FILE
字串,以透過密碼檔案指定密碼。命令的格式如下所示:
tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password-file PASSWORD-FILE
或者,若要使登錄密鑰可用於叢集中的所有命名空間,請使用 --export-to-all-namespaces
選項,如下列格式所示:
tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password PASSWORD --export-to-all-namespaces
以下是此命令的輸出範例:
tanzu secret registry add tanzu-net -n test-ns --server registry.pivotal.io --username test-user --password-file pass-file --export-to-all-namespaces
Warning: By choosing --export-to-all-namespaces, given secret contents will be available to ALL users in ALL namespaces. Please ensure that included registry credentials allow only read-only access to the registry with minimal necessary scope.
/ Adding registry secret 'test-secret'...
Added registry secret 'test-secret' into namespace 'test-ns'
可以檢視預設命名空間中或叢集的所有命名空間中的登錄驗證密碼。可以用表格、JSON 或 YAML 檔案的形式來檢視密碼。
若要檢視叢集的特定命名空間中的登錄驗證密碼,請執行以下命令:
tanzu secret registry list -n NAMESPACE
其中,NAMESPACE
是登錄所屬的 Tanzu Kubernetes Grid 命名空間。
以下是此命令的範例:
tanzu secret registry list -n test-ns
/ Retrieving registry secrets...
NAME REGISTRY EXPORTED AGE
pkg-dev-reg registry.pivotal.io to all namespaces 15d
若要檢視叢集的所有命名空間中的登錄驗證密碼清單,請執行以下命令:
tanzu secret registry list -A
以下是此命令的範例:
tanzu secret registry list -A
\ Retrieving registry secrets...
NAME REGISTRY EXPORTED AGE NAMESPACE
pkg-dev-reg registry.pivotal.io to all namespaces 15d test-ns
tanzu-standard-fetch-0 registry.pivotal.io not exported 15d tanzu-package-repo-global
private-repo-fetch-0 registry.pivotal.io not exported 15d test-ns
antrea-fetch-0 registry.pivotal.io not exported 15d tkg-system
metrics-server-fetch-0 registry.pivotal.io not exported 15d tkg-system
tanzu-addons-manager-fetch-0 registry.pivotal.io not exported 15d tkg-system
tanzu-core-fetch-0 registry.pivotal.io not exported 15d tkg-system
若要以 JSON 檔案格式來檢視登錄驗證密碼清單,請執行下列命令:
tanzu secret registry list -n kapp-controller-packaging-global -o json
以下是此命令的範例:
tanzu secret registry list -n kapp-controller-packaging-global -o json
[
{
"age": "15d",
"exported": "to all namespaces",
"name": "pkg-dev-reg",
"registry": "us-east4-docker.pkg.dev"
}
]
若要以 YAML 檔案格式來檢視登錄驗證密碼清單,請執行以下命令:
tanzu secret registry list -n kapp-controller-packaging-global -o yaml
以下是此命令的範例:
tanzu secret registry list -n kapp-controller-packaging-global -o yaml
- age: 15d
exported: to all namespaces
name: pkg-dev-reg
registry: us-east4-docker.pkg.dev
若要以表格格式來檢視登錄驗證密碼清單,請執行以下命令:
tanzu secret registry list -n kapp-controller-packaging-global -o table
以下是此命令的範例:
tanzu secret registry list -n kapp-controller-packaging-global -o table
/ Retrieving registry secrets...
NAME REGISTRY EXPORTED AGE
pkg-dev-reg us-east4-docker.pkg.dev to all namespaces 15d
可以更新密碼中的認證、使密碼可用於所有命名空間,或只能在叢集的一個命名空間中使用。
若要建立密碼的命名空間中更新密碼,請執行下列命令:
tanzu secret registry update SECRET-NAME --username USERNAME -n NAMESPACE --password PASSWORD
其中:
SECRET-NAME
是您要更新的登錄密鑰的名稱。NAMESPACE
是您在其中更新登錄驗證密鑰的 Tanzu Kubernetes Grid 命名空間。USERNAME
是用來存取登錄的新使用者名稱 (如果您要更新使用者名稱)。PASSWORD
是登錄的新密碼 (如果您要更新密碼)。附註您可以更新使用者名稱或密碼,或兩者都更新。
以下是此命令的範例:
tanzu secret registry update test-secret --username test-user -n test-ns --password-env-var PASSENV
\ Updating registry secret 'test-secret'...
Updated registry secret 'test-secret' in namespace 'test-ns'
若要更新登錄驗證密碼,並用於叢集的其他命名空間中,請執行下列命令:
tanzu secret registry update SECRET-NAME --username USERNAME -n NAMESPACE --password PASSWORD --export-to-all-namespaces=true
其中:
SECRET-NAME
是您要更新的登錄密鑰的名稱。NAMESPACE
是您在其中更新登錄驗證密鑰的 Tanzu Kubernetes Grid 命名空間。USERNAME
是用來存取登錄的使用者名稱。如果要更新使用者名稱,請輸入新的使用者名稱。PASSWORD
是登錄的密碼。如果要更新密碼,請輸入新密碼。以下是此命令的範例:
tanzu secret registry update test-secret--username test-user -n test-ns --password-env-var PASSENV --export-to-all-namespaces=true
Warning: By specifying --export-to-all-namespaces as true, given secret contents will be available to ALL users in ALL namespaces. Please ensure that included registry credentials allow only read-only access to the registry with minimal necessary scope.
Are you sure you want to proceed? [y/N]: y
\ Updating registry secret 'test-secret'...
Updated registry secret 'test-secret' in namespace 'test-ns'
Exported registry secret 'test-secret' to all namespaces
若要使登錄驗證密碼無法在叢集的其他命名空間中使用,請執行下列命令:
tanzu secret registry update SECRET-NAME --username USERNAME -n NAMESPACE --password PASSWORD --export-to-all-namespaces=false
其中:
SECRET-NAME
是您要更新的登錄密鑰的名稱。NAMESPACE
是您在其中更新登錄驗證密鑰的 Tanzu Kubernetes Grid 命名空間。USERNAME
是用來存取登錄的使用者名稱。PASSWORD
是登錄的密碼。以下是此命令的範例:
tanzu secret registry update test-secret --username test-user -n test-ns --password-env-var PASSENV --export-to-all-namespaces=false
Warning: By specifying --export-to-all-namespaces as false, the secret contents will get unexported from ALL namespaces in which it was previously available to.
Are you sure you want to proceed? [y/N]: y
\ Updating registry secret 'test-secret'...
Updated registry secret 'test-secret' in namespace 'test-ns'
Unexported registry secret 'test-secret' from all namespaces
可以使用 Tanzu CLI 刪除叢集中的登錄驗證密碼。若要刪除特定命名空間中的登錄驗證密碼,請執行下列命令:
tanzu secret registry delete SECRET-NAME -n NAMESPACE
其中:
SECRET-NAME
是您要刪除的登錄密鑰的名稱。NAMESPACE
是您要從中刪除登錄驗證密鑰的 Tanzu Kubernetes Grid 命名空間。如果未指定命名空間,則會從預設命名空間中刪除驗證密碼。如果密碼已匯出至叢集中的其他命名空間,則也會一併刪除。以下是此命令的範例:
tanzu secret registry delete test-secret -n test-ns
Deleting registry secret 'test-secret' from namespace 'test-ns'. Are you sure? [y/N]: y
\ Deleting registry secret 'test-secret'...
Deleted registry secret 'test-secret' from namespace 'test-ns'