跳至主要内容

Kubernetes 登錄檔與容器映像登錄檔

登錄檔是 Kubernetes secrets,包含用於對私有容器登錄檔進行身份驗證的憑證。

「登錄檔」一詞可能有兩種含義,取決於它是用於容器還是 Kubernetes 登錄檔:

  • 容器映像登錄檔(以前稱為「Docker 登錄檔」)包含您可以拉取和部署的容器映像。登錄檔是一個無狀態、可擴展的伺服器端應用程式,用於儲存和分發容器映像。
  • Kubernetes 登錄檔是您的部署用於對映像登錄檔進行身份驗證的映像拉取 secret。

部署使用 Kubernetes 登錄檔 secret 對私有映像登錄檔進行身份驗證,然後拉取託管在其上的容器映像。

目前,僅當工作負載在 Rancher UI 中建立時,部署才會自動拉取私有登錄檔憑證,而不是透過 kubectl 建立時。

在命名空間中建立登錄檔​

先決條件:

您必須已經部署了可用的私有登錄檔。

如果您需要建立私有登錄檔,請參閱您各自執行時的文件頁面:

  1. 在左上角,點擊 ☰ > Cluster Management。

  2. 前往您想要新增登錄檔的叢集,然後點擊 Explore。

  3. 在左側導航中,點擊 Storage > Secrets 或 More Resources > Core > Secrets。

  4. 點擊 Create。

  5. 點擊 Registry。

  6. 為登錄檔輸入 Name。

    備註

    Kubernetes 將 secrets、憑證和登錄檔都歸類為 secrets,在專案或命名空間中不能有兩個同名的 secrets。因此,為了避免衝突,您的登錄檔在工作區內的所有 secrets 中必須具有唯一的名稱。

  7. 為登錄檔選擇命名空間。

  8. 選擇託管您私有登錄檔的網站。然後輸入對登錄檔進行身份驗證的憑證。例如,如果您使用 Docker Hub,請提供您的 Docker Hub 使用者名稱和密碼。

  9. 點擊 Save。

結果:

  • 您的 secret 已新增到您選擇的命名空間。
  • 您可以在 Rancher UI 中透過點擊 Storage > Secrets 或 More Resources > Core > Secrets 來查看 secret。
  • 如果工作負載在登錄檔的範圍內,您在 Rancher UI 中建立的任何工作負載都將有憑證存取登錄檔。

在專案中建立登錄檔​

先決條件:

您必須已經部署了可用的私有登錄檔。

如果您需要建立私有登錄檔,請參閱您各自執行時的文件頁面:

在 v2.6 之前,secrets 需要在專案範圍內。專案不再是必需的,您可以改用命名空間範圍。因此,Rancher UI 已更新以反映此新功能。但是,如果需要,您仍然可以建立專案範圍的登錄檔。使用以下步驟執行此操作:

  1. 在左上角,在下拉選單中點擊 ☰ > Global Settings。

  2. 點擊 Feature Flags。

  3. 前往 legacy 功能標誌,然後點擊 Activate。

  4. 在左上角,點擊 ☰ > Cluster Management。

  5. 前往您想要新增登錄檔的叢集,然後點擊 Explore。

  6. 在左側導航中,點擊 Storage > Secrets 或 More Resources > Core > Secrets。

  7. 點擊 Create。

  8. 點擊 Registry。

  9. 在頂部導航列中,篩選以僅查看一個專案。

  10. 為登錄檔輸入 Name。

    備註

    Kubernetes 將 secrets、憑證和登錄檔都歸類為 secrets,在專案或命名空間中不能有兩個同名的 secrets。因此,為了避免衝突,您的登錄檔在工作區內的所有 secrets 中必須具有唯一的名稱。

  11. 為登錄檔選擇命名空間。

  12. 選擇託管您私有登錄檔的網站。然後輸入對登錄檔進行身份驗證的憑證。例如,如果您使用 Docker Hub,請提供您的 Docker Hub 使用者名稱和密碼。

  13. 點擊 Save。

結果:

  • 您的 secret 已新增到您選擇的個別專案。
  • 您可以在 Rancher UI 中透過點擊 Storage > Secrets 或 More Resources > Core > Secrets 來查看 secret。
  • 如果工作負載在登錄檔的範圍內,您在 Rancher UI 中建立的任何工作負載都將有憑證存取登錄檔。
備註

只有在選擇單一專案時,本機叢集上的專案範圍登錄檔才可見。

使用私有登錄檔​

您可以透過 Rancher UI 或使用 kubectl 部署來自私有登錄檔的映像的工作負載。

使用 Rancher UI 使用私有登錄檔​

要部署來自私有登錄檔的映像的工作負載:

  1. 在左上角,點擊 ☰ > Cluster Management。
  2. 前往您想要部署工作負載的叢集,然後點擊 Explore。
  3. 點擊 Workload。
  4. 點擊 Create。
  5. 選擇您想要建立的工作負載類型。
  6. 為工作負載輸入唯一名稱並選擇命名空間。
  7. 在 Container Image 欄位中,輸入私有登錄檔中映像路徑的 URL。例如,如果您的私有登錄檔在 Quay.io 上,您可以使用 quay.io/<Quay profile name>/<Image name>。
  8. 點擊 Create。

結果: 您的部署應該啟動,使用您在 Rancher UI 中新增的私有登錄檔憑證進行身份驗證,並拉取您指定的容器映像。

使用 kubectl 使用私有登錄檔​

使用 kubectl 建立工作負載時,您需要配置 pod,使其 YAML 具有私有登錄檔中映像的路徑。您還必須建立並引用登錄檔 secret,因為只有在 Rancher UI 中建立 pod 時,pod 才會自動取得私有登錄檔憑證的存取權。

secret 必須在部署工作負載的同一命名空間中建立。

以下是使用來自私有登錄檔的映像的工作負載的 pod.yml 範例。在此範例中,pod 使用來自 Quay.io 的映像,.yml 指定映像的路徑。pod 使用儲存在名為 testquay 的 Kubernetes secret 中的憑證對登錄檔進行身份驗證,該憑證在 spec.imagePullSecrets 的 name 欄位中指定:

apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: quay.io/<Quay profile name>/<image name>
imagePullSecrets:
- name: testquay

在此範例中,名為 testquay 的 secret 位於 default 命名空間中。

您可以使用 kubectl 建立包含私有登錄檔憑證的 secret。此命令建立名為 testquay 的 secret:

kubectl create secret docker-registry testquay \
--docker-server=quay.io \
--docker-username=<Profile name> \
--docker-password=<password>

要查看 secret 在 Kubernetes 中的儲存方式,您可以使用此命令:

kubectl get secret testquay --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

結果如下所示:

{"auths":{"quay.io":{"username":"<Profile name>","password":"<password>","auth":"c291bXlhbGo6dGVzdGFiYzEyMw=="}}}

部署工作負載後,您可以檢查映像是否成功拉取:

kubectl get events

結果應該如下所示:

14s         Normal    Scheduled          Pod    Successfully assigned default/private-reg2 to minikube
11s Normal Pulling Pod pulling image "quay.io/<Profile name>/<image name>"
10s Normal Pulled Pod Successfully pulled image "quay.io/<Profile name>/<image name>"

有關更多資訊,請參閱 Kubernetes 文件中關於建立使用您的 secret 的 pod。