部署harbor私有仓库
可以通过以下命令部署:
Helm安装
添加harbor仓库并拉取到本地:
helm repo add harbor https://helm.goharbor.io
helm fetch harbor/harbor --untar
确保安装了ingress
,如果没安,可以安装,也可以将其转换成nginx来访问,否则直接访问会报405
:
cd harbor
# sed -i 's/ type: ingress/ type: NodePort/g' values.yaml
# sed -i 's/ commonName: ""/ commonName: "harbor"/g' values.yaml
创建命名空间:
kubectl create ns kube-harbor
安装:
## 安装(名字myharbor,指定命名空间kube-harbor)
helm install myharbor harbor/ --namespace kube-harbor
Kubebiz安装
创建命名空间:
kubectl create ns kube-harbor
应用:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/harbor/v2.7.0/harbor.yaml
如果你需要修改namespace
,或者自定义的域名,可以到 https://www.kubebiz.com/KubeBiz/harbor 直接修改,下载新的yaml安装。
同样,确保安装了ingress
,如果没安,可以安装,也可以将其转换成nginx来访问,否则直接访问会报405
:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/harbor/v2.7.0/nginx-export.yaml
其他更多安装方式
官网文档:https://goharbor.io/docs
安装文档:https://goharbor.io/docs/2.7.0/install-config/download-installer/
访问
获取访问的NodePort
:
kubectl get service harbor -n kube-harbor
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service NodePort 10.97.4.15 <none> 80:32121/TCP,443:30127/TCP,4443:30640/TCP 7h4m
现在,拿到端口,通过游览器就可以访问啦:
https证书设置
当然,如果你需要用自己的域名来定义harbor访问,那么接下来:
按照该文档生成证书:https://goharbor.io/docs/2.7.0/install-config/configure-https/
假设的域名是hub.test.com
,生成后,证书应该是这样。
ca.crt
ca.key
ca.srl
hub.test.com.crt
hub.test.com.csr
hub.test.com.key
v3.ext
替换域名
默认创建的域名是core.harbor.domain
,如果是kubebiz的安装方式,则替换掉你需要的域名。
如果是helm的话,在安装时候执行--set
指定你自己的域名,如:
helm install myharbor harbor/ --namespace kube-harbor --set externalURL=hub.test.com
替换之前的证书:
首先删除默认创建的myharbor-ingress
,这个证书在之前安装没有创建:
kubectl delete secret myharbor-ingress -n kube-harbor
换成新的:
kubectl create secret -n kube-harbor generic myharbor-ingress --from-file=ca.crt=ca.crt --from-file=tls.crt=hub.test.com.crt --from-file=tls.key=hub.test.com.key
重启myharbor-core
和ingress
那么,你就可以用域名访问了。