温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Kubernetes中怎么部署Harbor

发布时间:2022-01-04 14:24:43 阅读:324 作者:iii 栏目:云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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 的世界中玩得愉快!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/2306127/blog/2055482

AI

开发者交流群×