本主題說明如何設定和管理 Tanzu Kubernetes Grid 中的工作負載叢集使用的密碼,包括:
如果您用來存取 vSphere 或 Azure 的認證有所變更,您可以更新叢集,以使用新認證。AWS 是以不同方式來處理認證,因此本節僅適用於 vSphere 和 Azure。
若要更新目前獨立管理叢集及其所有工作負載叢集使用的 vSphere 認證,請使用 tanzu mc credentials update --cascading
命令:
執行 tanzu context use MGMT-CLUSTER
,以登入您要更新的管理叢集。
執行 tanzu mc credentials update
。您可以將值傳遞至下列命令選項,或讓 CLI 提示您輸入:
--vsphere-user
:vSphere 帳戶的名稱。--vsphere-password
:vSphere 帳戶的密碼。--vsphere-thumbprint
:vCenter Server 執行個體的 TLS 指紋。若要更新獨立管理叢集的 vSphere 認證,但不更新其工作負載叢集的認證,請使用上述 tanzu mc credentials update
命令,但不使用 --cascading
選項。
若要更新單一工作負載叢集用於存取 vSphere 的認證,請使用 tanzu cluster credentials update
命令:
執行 tanzu context use MGMT-CLUSTER
,以登入管理叢集 (該管理叢集已建立您要更新的工作負載叢集)。管理叢集可以是主管叢集或獨立管理叢集。
執行 tanzu cluster credentials update CLUSTER-NAME
。您可以將值傳遞至下列命令選項,或讓 CLI 提示您輸入:
--namespace
:您要更新認證的叢集所在命名空間,例如 default
。--vsphere-user
:vSphere 帳戶的名稱。--vsphere-password
:vSphere 帳戶的密碼。--vsphere-thumbprint
:vCenter Server 執行個體的 TLS 指紋。您還可以使用 tanzu mc credentials update --cascading
,來更新管理叢集及其管理的所有工作負載叢集的 vSphere 認證。
重要在開始之前,請從 Azure 入口網站或 Azure 管理員,取得新的 Azure 認證。
若要更新目前獨立管理叢集及其所有工作負載叢集使用的 Azure 認證,請使用 tanzu mc credentials update --cascading
命令:
執行 tanzu context use MGMT-CLUSTER
,以登入您要更新的管理叢集。
執行 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 context use MGMT-CLUSTER
,以登入管理叢集 (該管理叢集已建立您要更新的工作負載叢集)。
執行 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.26.8+vmware.1 <none> prod v1.26.8---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.26.8+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.26.8+vmware.1
workload-slot35rp10-control-plane-ggsmj workload-slot35rp10 workload-slot35rp10-control-plane-ggsmj vsphere://4201a86e-3c15-879a-1b85-78f76a16c27f Running 42h v1.26.8+vmware.1
workload-slot35rp10-control-plane-hxbxb workload-slot35rp10 workload-slot35rp10-control-plane-hxbxb vsphere://42014b2e-07e4-216a-24ef-86e2d52d7bbd Running 42h v1.26.8+vmware.1
workload-slot35rp10-control-plane-sm4nw workload-slot35rp10 workload-slot35rp10-control-plane-sm4nw vsphere://4201cff3-2715-ffe1-c4a6-35fc795995ce Running 42h v1.26.8+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.26.8+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_*
變數,以便 TKG 叢集存取包含啟動載入來源 TKG 系統映像的私人登錄,例如,在 vSphere 上部署離線 Harbor 登錄中所述的 Harbor 虛擬機器。
ADDITIONAL_IMAGE_REGISTRY_*
變數將新叢集設為與使用自我簽署憑證授權機構 (CA) 憑證的其他登錄進行可信任的通訊,例如:
containerd
的自我簽署映像登錄,如 containerd 存放庫中的containerd
中所述。設定叢集以信任這些額外的私人登錄的方式取決於叢集是基於計劃還是基於類別,如下所述。
如要使用信任或額外的自訂映像登錄設定以類別為基礎的工作負載叢集或獨立管理叢集,請為最多三個其他映像登錄設定如下所示的變數:
要設定三個以上的登錄,請在建立以類別為基礎的叢集中所述的兩步驟程序步驟 1 中設定前三個登錄,然後按照下面的讓以類別為基礎的叢集信任自訂登錄在步驟 2 中建立叢集之前,將更多登錄加入產生的清單中。
ADDITIONAL_IMAGE_REGISTRY_1: "OTHER-REGISTRY-1"
ADDITIONAL_IMAGE_REGISTRY_1_SKIP_TLS_VERIFY: false
ADDITIONAL_IMAGE_REGISTRY_1_CA_CERTIFICATE: "CA-BASE64-1"
ADDITIONAL_IMAGE_REGISTRY_2: "OTHER-REGISTRY-2"
ADDITIONAL_IMAGE_REGISTRY_2_SKIP_TLS_VERIFY: false
ADDITIONAL_IMAGE_REGISTRY_2_CA_CERTIFICATE: "CA-BASE64-2"
ADDITIONAL_IMAGE_REGISTRY_3: "OTHER-REGISTRY-3"
ADDITIONAL_IMAGE_REGISTRY_3_SKIP_TLS_VERIFY: false
ADDITIONAL_IMAGE_REGISTRY_3_CA_CERTIFICATE: "CA-BASE64-3"
其中,OTHER-REGISTRY-<n>
是其他私人登錄的 IP 位址或 FQDN,CA-BASE64-<n>
是其 base64 編碼格式的 CA 憑證,不含 http://
前置詞。這是必要的,因為此檔案將寫入磁碟,因此它必須是一個正常的 Unix 檔名。
要啟用新的 TKC 或基於計劃的叢集以從使用自我簽署憑證的容器登錄中提取映像,請使用 ytt
覆蓋檔將自訂憑證加入工作負載叢集節點。
下面的覆蓋程式碼將自訂 CA 憑證加入新叢集中的所有節點。此程式碼可在所有目標平台上運作,適用於 Photon 或 Ubuntu 虛擬機器映像範本型叢集。
如需瞭解會自訂叢集並建立新叢集計劃的覆疊,請參閱 ytt
覆疊。有關如何下載和安裝 ytt
的資訊,請參見安裝 Carvel 工具。
選擇是否將自訂 CA 套用至所有新叢集、僅在一個雲端基礎結構上建立的叢集,或使用特定叢集 API 提供者版本 (例如叢集 API 提供者 vSphere v1.7.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
物件,並在物件規格的 additionalImageRegistries
下新增 topology.variables
設定:
topology:
variables:
- name: additionalImageRegistries
value:
- caCert: "CA-BASE64"
host: OTHER-REGISTRY
skipTlsVerify: false
其中:
OTHER-REGISTRY
是其他私人登錄位置,格式為
10.92.127.192:8443
。
CA-BASE64
是其採用 base64 編碼格式的 CA 憑證,例如 LS0tLS1CRU[...]
。要為多個登錄新增信任,請包含多個 additionalImageRegistries
值區塊。
請注意,topology.variables
和 imageRepository
的 trust
區塊從 TKG_CUSTOM_IMAGE_REPOSITORY_*
和TKG_PROXY_CA_CERT
組態變數設定值。
若要使用自訂自我簽署的 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'