##harbo部署使用helm自己百度很简单。
#坑1:helm中有个secret 选择是auto 即自动生成,但这个证书不被操作系统信任!!!
即会爆 x509!!
#坑2:containerd的配置文件修改!!!跳过证书认证是无效的!!!!
解决步骤:
1.确保你的hosts或DNS能解析到你的harbor域名!!!
2.修改containerd配置文件:
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.k8s.local".tls]
ca_file = "/etc/containerd/ca/ca.crt" #自己用openssl生成ca.crt,是CA机构的证书
cert_file = "/etc/containerd/ca/harbor.k8s.local.crt" #自己用openssl生成的harbor.crt
key_file = "/etc/containerd/ca/harbor.com.key" #自己用openssl生成的harbor.私钥文件
##必须配置,注意一个是CA机构的证书,是harbor服务器自己的证书和私钥不要搞混了!!!!这里配置跳过证书检查没有用!!!!
##不懂怎么openssl生成,百度!!!需要一个ca机构的证书和harbor的证书!!!!
##配置完重启containerd服务!!!必须 systemctl daemon-reload !!!
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.k8s.local".auth]
username = "admin"
password = "Harbor12345"
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://mnt026bf.mirror.aliyuncs.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["https://registry.aliyuncs.com/k8sxio"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.k8s.local"]
endpoint = ["https://harbor.k8s.local"]
3.请你使用openssl生成证书替换掉harbor部署时自己生成的证书!!!!
不懂k8s通过secret怎么生成tls证书,百度!!!
默认harbor生成的这个secrete为 harbor-ingress 可以看到有个属性值为 k8s/tls!!!
替换就是名字改一样即可!!!先删后改!!
4.最重要的!!!!配置自己操作系统对自己签名openssl证书的信任!!!!!!!
centos:
cp 你的harbor.crt /etc/pki/ca-trust/source/anchors/yourdomain.com.crt
cp 你的ca.crt /etc/pki/ca-trust/source/anchors/yourdomain.com.crt
update-ca-trust
5. 给一个测试pod.demo
apiVersion: v1
kind: Pod
metadata:
name: harbor-registry-test
namespace: jenkins
spec:
containers:
- name: test
image: harbor.k8s.local/demo/nginx:v1.0.0
imagePullSecrets:
- name: harbor1
nodeName: k8s-node04
##注意这个secret是你拿去harbor的登录密码!!
加nodeName是因为我只在node04上做了如上操作,并用master成功拉取并runing.