在 Kubernetes 集群上搭建 Harbor
在 Kubernetes 集群上搭建 Harbor
helm 搭建
github仓库: https://github.com/goharbor/harbor-helm
修改yaml ,以 ingress 的形式访问
ingress:
hosts:
core: core.harbor.172.16.20.63.nip.io
notary: notary.harbor.172.16.20.63.nip.io
externalURL: https://core.harbor.172.16.20.63.nip.io
helm 部署完成后,通过 https://core.harbor.172.16.20.63.nip.io 就可以访问了,172.16.20.63 是 Kubernetes 集群 master 的 ip。
访问 Harbor 镜像仓库
节点上 push/pull 镜像
在同一内网下 push/pull 镜像。
解决 pushing: denied: requested access to the resource is denied 和 x509: certificate signed by unknown authority 的问题。
配置仓库
本机服务器和docker仓库服务器都要加上docker 配置 vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"insecure-registries": ["core.harbor.172.16.20.63.nip.io"]
}
然后重启 docker 守护进程 service docker restart
CA证书
需要从 Harbor 访问页中拿到 CA 证书
mkdir -p /etc/docker/certs.d/core.harbor.172.16.20.63.nip.io/
文件夹名和域名相同
然后将下载的 ca.crt
放进去
登陆
docker login
docker login core.harbor.172.16.20.63.nip.io
username: admin
password: Harbor12345
或者
修改文件 /root/.docker/config.json
{
"auths": {
"core.harbor.172.16.20.63.nip.io": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.1-ce (linux)"
}
}
这两步不需要重启 docker 的守护进程
push 镜像
docker tag SOURCE_IMAGE[:TAG] core.harbor.172.16.20.63.nip.io/library/IMAGE[:TAG]
docker push core.harbor.172.16.20.63.nip.io/library/IMAGE[:TAG]
Jenkins-X 上的配置
配置 Jenkins-X 将镜像 pull/push 到 Harbor 仓库,实现对镜像的管理。
解决 saving credentials: open /home/jenkins/.docker/config.json: read-only file system 的问题。
在每一个node节点上配置CA证书
mkdir -p /etc/docker/certs.d/core.harbor.172.16.20.63.nip.io/
文件夹名和域名相同
然后将下载的 ca.crt
放进去
修改 Kubernetes secrets
修改 secrets 的 data.config.json
kubectl edit -n jx secrets jenkins-docker-cfg -o yaml
将下面的数据 base64 加密后覆盖 data.config.json 节点
{
"auths": {
"core.harbor.172.16.20.63.nip.io": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.1-ce (linux)"
}
}