使用Helm部署Harbor
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
现在我们可以正常登录harbor了,接下来我们来创建项目,进行push/pull等操作。
创建用户:test01
创建项目:test,将上述创建的test01加入成员中并赋予项目管理员角色
不重启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项目
- 打赏
- 1赞
- 收藏
- 评论
- 分享
- 举报
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK