溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes中怎么部署Harbor

發布時間:2022-01-04 14:24:43 來源:億速云 閱讀:343 作者:iii 欄目:云計算

Kubernetes中怎么部署Harbor

概述

Harbor 是一個開源的企業級 Docker Registry 管理工具,提供了鏡像的存儲、簽名、掃描、復制等功能。在 Kubernetes 集群中部署 Harbor 可以幫助我們更好地管理容器鏡像,提高鏡像的安全性和可用性。本文將詳細介紹如何在 Kubernetes 集群中部署 Harbor。

前提條件

在開始部署之前,確保你已經具備以下條件:

  1. Kubernetes 集群:已經安裝并配置好的 Kubernetes 集群。
  2. Helm:Kubernetes 的包管理工具,用于簡化 Harbor 的部署。
  3. 持久化存儲:Harbor 需要持久化存儲來保存鏡像、數據庫等數據。
  4. 域名和 TLS 證書:Harbor 需要一個域名和相應的 TLS 證書來提供安全的 HTTPS 訪問。

步驟 1: 安裝 Helm

Helm 是 Kubernetes 的包管理工具,可以幫助我們快速部署和管理 Kubernetes 應用。如果你還沒有安裝 Helm,可以按照以下步驟進行安裝。

1.1 下載 Helm

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

1.2 驗證 Helm 安裝

helm version

如果安裝成功,你應該會看到類似以下的輸出:

version.BuildInfo{Version:"v3.7.1", GitCommit:"1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4", GitTreeState:"clean", GoVersion:"go1.16.9"}

步驟 2: 添加 Harbor Helm Chart 倉庫

Harbor 的 Helm Chart 可以通過 Helm 倉庫進行安裝。首先,我們需要添加 Harbor 的 Helm 倉庫。

helm repo add harbor https://helm.goharbor.io
helm repo update

步驟 3: 配置 Harbor

在部署 Harbor 之前,我們需要創建一個配置文件來定制 Harbor 的部署參數。你可以使用 values.yaml 文件來覆蓋默認的配置。

3.1 創建 values.yaml 文件

expose:
  type: ingress
  tls:
    enabled: true
    secretName: "harbor-tls"
  ingress:
    hosts:
      core: harbor.example.com
      notary: notary.example.com
    annotations:
      nginx.ingress.kubernetes.io/proxy-body-size: "0"
      nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
      nginx.ingress.kubernetes.io/proxy-send-timeout: "600"

persistence:
  enabled: true
  resourcePolicy: "keep"
  persistentVolumeClaim:
    registry:
      storageClass: "standard"
      accessMode: ReadWriteOnce
      size: 5Gi
    chartmuseum:
      storageClass: "standard"
      accessMode: ReadWriteOnce
      size: 5Gi
    jobservice:
      storageClass: "standard"
      accessMode: ReadWriteOnce
      size: 1Gi
    database:
      storageClass: "standard"
      accessMode: ReadWriteOnce
      size: 1Gi
    redis:
      storageClass: "standard"
      accessMode: ReadWriteOnce
      size: 1Gi

externalURL: https://harbor.example.com

harborAdminPassword: "Harbor12345"

database:
  password: "dbpassword"

redis:
  password: "redispassword"

chartmuseum:
  enabled: true

clair:
  enabled: true

notary:
  enabled: true

3.2 解釋配置文件

  • expose: 配置 Harbor 的暴露方式,這里我們使用 ingress 并啟用 TLS。
  • persistence: 配置持久化存儲,確保數據在 Pod 重啟后不會丟失。
  • externalURL: Harbor 的外部訪問地址。
  • harborAdminPassword: Harbor 管理員密碼。
  • database: 數據庫配置,包括密碼。
  • redis: Redis 配置,包括密碼。
  • chartmuseum: 啟用 ChartMuseum 服務。
  • clair: 啟用 Clair 鏡像掃描服務。
  • notary: 啟用 Notary 簽名服務。

步驟 4: 部署 Harbor

使用 Helm 部署 Harbor 非常簡單,只需運行以下命令:

helm install harbor harbor/harbor -f values.yaml -n harbor --create-namespace

4.1 解釋命令

  • harbor: Helm 發布的名稱。
  • harbor/harbor: Helm Chart 的名稱。
  • -f values.yaml: 指定自定義的配置文件。
  • -n harbor: 指定部署的命名空間為 harbor,如果命名空間不存在,--create-namespace 會自動創建。

4.2 驗證部署

部署完成后,你可以通過以下命令查看部署狀態:

kubectl get pods -n harbor

如果一切順利,你應該會看到類似以下的輸出:

NAME                                    READY   STATUS    RESTARTS   AGE
harbor-harbor-chartmuseum-0             1/1     Running   0          5m
harbor-harbor-clair-0                   1/1     Running   0          5m
harbor-harbor-core-0                    1/1     Running   0          5m
harbor-harbor-database-0                1/1     Running   0          5m
harbor-harbor-jobservice-0              1/1     Running   0          5m
harbor-harbor-notary-server-0           1/1     Running   0          5m
harbor-harbor-notary-signer-0           1/1     Running   0          5m
harbor-harbor-portal-0                  1/1     Running   0          5m
harbor-harbor-redis-0                   1/1     Running   0          5m
harbor-harbor-registry-0                1/1     Running   0          5m

步驟 5: 訪問 Harbor

部署完成后,你可以通過配置的域名(例如 https://harbor.example.com)訪問 Harbor 的 Web 界面。使用 harborAdminPassword 中配置的密碼登錄。

5.1 登錄 Harbor

打開瀏覽器,訪問 https://harbor.example.com,使用以下憑據登錄:

  • 用戶名: admin
  • 密碼: Harbor12345

5.2 創建項目

登錄后,你可以創建一個新的項目來管理你的 Docker 鏡像。點擊 “Projects” -> “New Project”,填寫項目名稱并保存。

5.3 推送鏡像

你可以使用 Docker CLI 將鏡像推送到 Harbor。首先,登錄到 Harbor:

docker login harbor.example.com

然后,標記并推送鏡像:

docker tag my-image:latest harbor.example.com/my-project/my-image:latest
docker push harbor.example.com/my-project/my-image:latest

步驟 6: 配置 Ingress

如果你使用的是 Kubernetes Ingress 控制器(如 Nginx Ingress Controller),你需要確保 Ingress 資源已經正確配置。

6.1 查看 Ingress 資源

kubectl get ingress -n harbor

你應該會看到類似以下的輸出:

NAME           CLASS    HOSTS                  ADDRESS   PORTS     AGE
harbor-ingress   <none>   harbor.example.com             80, 443   10m

6.2 配置 DNS

確保 harbor.example.com 的 DNS 記錄指向你的 Kubernetes 集群的 Ingress 控制器 IP 地址。

步驟 7: 備份和恢復

為了確保數據的安全性,建議定期備份 Harbor 的數據。你可以通過以下步驟進行備份和恢復。

7.1 備份

kubectl exec -n harbor harbor-harbor-database-0 -- pg_dump -U postgres registry > registry.sql

7.2 恢復

kubectl exec -i -n harbor harbor-harbor-database-0 -- psql -U postgres registry < registry.sql

結論

通過以上步驟,你已經成功在 Kubernetes 集群中部署了 Harbor。Harbor 提供了強大的鏡像管理功能,可以幫助你更好地管理容器鏡像,提高鏡像的安全性和可用性。希望本文對你有所幫助,祝你在 Kubernetes 的世界中玩得愉快!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女