Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
3.1、helm下载charts
helm repo add harbor https://helm.goharbor.io
helm pull harbor/harbor
3.2、定制配置
3.2.1、TLS证书
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ${KEY_FILE:tls.key} -out ${CERT_FILE:tls.cert} -subj "/CN=${HOST:lanson.com}/O=${HOST:lanson.com}"
kubectl create secret tls ${CERT_NAME:lanson-tls} --key ${KEY_FILE:tls.key} --cert ${CERT_FILE:tls.cert}
## 示例命令如下
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=*.lanson.com/O=*.lanson.com"
kubectl create secret tls harbor.lanson.com --key tls.key --cert tls.crt -n devops
原来证书是lanson.com 域名 现在用的是harbor.lanson.com 域名的。 单独创建一个
3.2.2、values-overrides.yaml配置
旧版本配置;使用自己的证书。自己的证书要兼容harbor里面的组件很麻烦
expose:
type: ingress
tls:
certSource: "secret"
secret:
secretName: "harbor.lanson.com"
notarySecretName: "harbor.lanson.com"
ingress:
hosts:
core: harbor.lanson.com
notary: notary-harbor.lanson.com
externalURL: https://harbor.lanson.com
internalTLS:
enabled: true
certSource: "secret" #
core:
secretName: "harbor.lanson.com"
jobservice:
secretName: "harbor.lanson.com"
registry:
secretName: "harbor.lanson.com"
portal:
secretName: "harbor.lanson.com"
chartmuseum:
secretName: "harbor.lanson.com"
trivy:
secretName: "harbor.lanson.com"
persistence:
enabled: true
resourcePolicy: "keep"
persistentVolumeClaim:
registry: # 存镜像的
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
chartmuseum: #存helm的chart
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
jobservice: #
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
database: #数据库 pgsql
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
redis: #
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
trivy: # 漏洞扫描
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
metrics:
enabled: true
expose: #web浏览器访问用的证书
type: ingress
tls:
certSource: "secret"
secret:
secretName: "harbor.lanson.com"
notarySecretName: "harbor.lanson.com"
ingress:
hosts:
core: harbor.lanson.com
notary: notary-harbor.lanson.com
externalURL: https://harbor.lanson.com
internalTLS: #harbor内部组件用的证书
enabled: true
certSource: "auto"
persistence:
enabled: true
resourcePolicy: "keep"
persistentVolumeClaim:
registry: # 存镜像的
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
chartmuseum: #存helm的chart
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
jobservice: #
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
database: #数据库 pgsql
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
redis: #
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
trivy: # 漏洞扫描
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
metrics:
enabled: true
3.2.3、安装
#注意,由于配置文件用到secret,所以提前在这个名称空间创建好
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.cert -subj "/CN=*.lanson.com/O=*.lanson.com"
kubectl create secret tls lanson.com --key tls.key --cert tls.cert -n devops
helm install itharbor ./ -f values.yaml -f override.yaml -n devops
3.2.4、卸载
#卸载
helm uninstall itharbor -n devops
1.1、使用https方式访问
由于harbor使用的是https。需要docker信任这个https;
# 把xx.cert文件 复制到 /etc/docker/certs.d/harbor.lanson.com/tls.crt
云上
自定义域名
如下操作: 1、配置每个主机的 /etc/hosts文件。可指定域名地址为公网ip
或者ingress节点所在ip
2、在/etc/docker/certs.d/
下面准备域名文件夹(包含非默认的端口号),并把域名的cert/crt
文件复制进去。并且修改文件名叫xxx.crt
,不能是cert文件 3、建议配置 ingress节点所在ip 。这样我们使用域名来到了ingress节点。ingress节点的nginx监听到了此域名,则转发给指定服务
1.2、不使用https访问
#修改docker配置文件
{"insecure-registries":["https://test.com","192.168.1.13","更多的...."]}
# 拉取docker官方镜像。并缓存起来。harbor.lanson.com/自己的仓库名/ + /library + /镜像名:版本
docker pull harbor.lanson.com/harbor-hub/library/busybox:latest
# 第三方。用第三方全名 harbor.lanson.com/objs + 第三方
docker pull harbor.lanson.com/objs/redislabs/redis
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。