1

使用Helm部署Harbor

 1 year ago
source link: https://blog.51cto.com/wutengfei/5497399
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用Helm部署Harbor

原创

使用Helm部署Harbor

Harbor支持多种安装方式,之前我部署过使用** docker-compose**的形式运行 Harbor 各个组件,有需要的同学可以参考我之前写的博客。现在我们使用一种更简单的部署方法:Helm

Helm安装harbor

 Harbor官网各版本部署文档有需要的同学可以关注下,本次安装使用 Traefik暴露服务,存储使用nfs动态存储,证书使用自签证书,域名已做解析,当然你也可以使用本地host解析。

添加harbor仓库

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

查看harbor所有版本

$ helm search repo harbor/harbor --versions

拉取指定版本chart包并解压缩

$ helm pull harbor/harbor --version 1.7.2 --untar

自定义wutf-values.yaml文件,内容如下:

expose:
   # 设置暴露服务的方式。这里选择 clusterIP 
  type: clusterIP
  tls:
    # 以secret的形式
    certSource: secret
    secret:
      # 如果你想使用自己的 TLS 证书和私钥,请填写这个 secret 的名称,这个 secret 必须包含名为 tls.crt 和 tls.key 的证书和私钥文件,如果没有设置则会自动生成证书和私钥文件。
      secretName: "tls-harbor"
      # 默认 Notary 服务会使用上面相同的证书和私钥文件,如果你想用一个独立的则填充下面的字段,注意只有类型是 ingress 的时候才需要。
      notarySecretName: "tls-harbor"

  clusterIP:
    # The name of ClusterIP service
    name: harbor
    # Annotations on the ClusterIP service
    annotations: {}
    ports:
      # The service port Harbor listens on when serving with HTTP
      httpPort: 80
      # The service port Harbor listens on when serving with HTTPS
      httpsPort: 443
      # The service port Notary listens on. Only needed when notary.enabled
      # is set to true
      notaryPort: 4443

externalURL: https://harbor.devops.test.com

persistence:
  persistentVolumeClaim:
    registry:
      # 指定"storageClass",或者使用默认的 StorageClass 对象,设置成"-"禁用动态分配挂载卷
      storageClass: "managed-nfs-storage"
      # 存放镜像,根据自身需求设置存储大小,建议500Gi
      size: 10Gi
    chartmuseum:
      storageClass: "managed-nfs-storage"
    jobservice:
      storageClass: "managed-nfs-storage"
    database:
      storageClass: "managed-nfs-storage"
    redis:
      storageClass: "managed-nfs-storage"
    trivy: # 镜像漏扫
      storageClass: "managed-nfs-storage"

关于自签证书生成,具体步骤可参考** 使用docker-compose部署最新版Harbor v2.3.2**证书生成章节,这里不再重复叙述。

说明:如果后面需要更换证书,可直接将要更换的secret资源删除,然后再新创建即可,注意secret名字保持一致。

$ kubectl delete secret tls-harbor -n harbor
$ kubectl create secret tls tls-harbor --cert=tls.crt --key=tls.key -n harbor

部署harbor

创建命名空间

$ kubectl create ns harbor

添加证书到集群secret中

$ kubectl create secret tls tls-harbor --cert=tls.crt --key=tls.key -n harbor

使用上面自定义的 values 文件安装

$ cd harbor
$ helm install harbor -f wutf-values.yaml . -n harbor

耐心等待,查看各项资源状态

# helm harbor
$ helm list -n harbor
# pod status
$ kubectl get pod -n harbor
# svc status
$ kubectl get svc -n harbor
# secret status
$ kubectl get secret -n harbor

访问 Harbor

这里我们使用Traefik来暴露我们的服务,harbor-dashboard-route.yaml 配置如下:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: harbor-dashboard-route
  namespace: harbor
spec:
  entryPoints:
  - websecure 
  routes:
  - match: Host(`harbor.devops.test.com`)  
    kind: Rule
    services:
      - name: harbor
        port: 443
  tls:
    secretName: tls-harbor

部署 route 服务

$ kubectl apply -f harbor-dashboard-route.yaml

浏览器访问 https://harbor.devops.test.com,账号密码:admin/Harbor12345

使用Helm部署Harbor_harbor

现在我们可以正常登录harbor了,接下来我们来创建项目,进行push/pull等操作。

创建用户:test01

使用Helm部署Harbor_k8s_02

创建项目:test,将上述创建的test01加入成员中并赋予项目管理员角色

使用Helm部署Harbor_harbor_03

不重启docker添加证书

在服务器上配置如下:

$ mkdir -p /etc/docker/certs.d/harbor.devops.test.com
$ cp tls.cert /etc/docker/certs.d/harbor.devops.test.com
$ cp tls.key /etc/docker/certs.d/harbor.devops.test.com
$ cp ca.crt /etc/docker/certs.d/harbor.devops.test.com
# 无需重启docker即可生效,无需添加 insecure-registries":["harbor.transsion.com"]
# 登入,账号是自己的域账号
$ docker login harbor.devops.test.com
# 登出
$ docker logout harbor.devops.test.com
# 拉取测试镜像busybox
$ docker pull busybox
# 更改标签
$ docker tag busybox harbor.devops.test.com/test/busybox:202207201642
# push image
$ docker push harbor.devops.test.com/test/busybox:202207201642
# pull image
$ docker pull harbor.devops.test.com/test/busybox:202207201642

查看test项目

使用Helm部署Harbor_k8s_04
  • 打赏
  • 1
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK