KubeSphere 如何集成基于 HTTPS 的 Harbor 仓库


Configure HTTPS Access to Harbor
参考官方文档 [https://kubesphere.com.cn/docs/project-user-guide/configuration/image-registry/#使用镜像仓库) 实操记实

1.快速部署 Harbor v2.3.1 https 访问

请查阅,快速部署 Harbor v2.3.1 https 访问

2.KubeSphere 对接镜像仓库-docker registry

KubeSphere 对接镜像仓库-docker registry

3. 承上启下

上面两篇文章讲了如何部署https harbor和对接 http的 harbor;接下来详细介绍一下,如何添加基于 https 的harbor 镜像仓库对接使用说明。

4. KubeSphere 对接Harbor

因为 KubeSphere 无法直接解析 harbor 域名,需要在 coredns 添加解析记录,否则会报 no such host

4.1.NodeLocal DNSCache

NodeLocal DNSCache 通过在集群上运行一个dnsCache daemonset来提高clusterDNS性能和可靠性。相比于纯coredns方案,nodelocaldns + coredns方案能够大幅降低DNS查询timeout的频次,提升服务稳定性。

nodelocaldns通过添加iptables规则能够接收节点上所有发往xxx.xxx.xx.xx的dns查询请求,把针对集群内部域名查询请求路由到coredns;把集群外部域名请求直接通过host网络发往集群外部dns服务器。

4.2 将nodelocaldns解析都转发给 coredns

#forward ./etc/resolv.conf指向coredns service ip
#search coredns service ip
ubuntu@master1:~$ kubectl get svc coredns -n kube-system
NAME      TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
coredns   ClusterIP   10.233.0.3   <none>        53/UDP,53/TCP,9153/TCP   28d
#修改nodelocaldns的配置configmap的值
kubectl edit cm nodelocaldns -n kube-system
# 将 forward ./etc/resolv.conf 调整为:forward . 10.233.0.3
apiVersion: v1
data:
  Corefile: |
    cluster.local:53 {
        errors
        cache {
            success 9984 30
            denial 9984 5
        }
        reload
        loop
        bind 169.254.25.10
        forward . 10.233.0.3 {
            force_tcp
        }
        prometheus :9253
        health 169.254.25.10:9254
    }
    ...
# 保存、重启、或者手动重启,效果一样

在这里插入图片描述

4.3 在coredns中添加主机记录

#修改 coredns configmap 文件,添加主机记录
kubectl edit cm coredns -n kube-system

....
    }
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
       ttl 30
    }
    hosts  {
         192.168.100.2  dockerhub.kubekey.local
         fallthrough
    }
    prometheus :9153
....
# 保存或者重启coredns一下进行验证

在这里插入图片描述
如果此时添加harbor对接信息,会提示 证书问题, x509的错误提示

Get"https://dockerhub.kubekey.local/v2/":x509:certificate signed by unknown authority

4.4 x509

在kubepshere中的 ks-apiserver 中添加镜像仓库 ca 证书

4.4.1 通过 configmap 加载 CA 证书

查看CA证书的位置,在Harbor部署时,查看证书生成的位置及值

#目录位置: ls /etc/docker/certs.d/
ubuntu@master1:~$ cat /etc/docker/certs.d/dockerhub.kubekey.local/ca.crt
-----BEGIN CERTIFICATE-----
MIIDATCCAemgAwIBAgIBADANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtyZWdp
c3RyeS1jYTAeFw0yMjA0MjExNjUzNTJaFw0zMjA0MTgxNjUzNTJaMBYxFDASBgNV
BAMTC3JlZ2lzdHJ5LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
vs0k1cS3S4L9tvTvJomlMwNN8eGSk8hujGKm6SQHAYicFsNmfYevfthJsufuikIq
ggxwyL9nExr470l4hN31PN/ztIKZh/57IKF6XZrF5Ld3fBxOvVGSTarZraIkxkPe
/N5HfJdAWh5CTKtdsOpal3CmP+6tbRQ6qQN5D9lO97Tid79W8a58jI7FHyeYS08D
VlBjDCip81mI4YsgMaXmatS0HjtLtCvQNsL5Py2KKAhHb+Rd0iepICUT2uUwR1Cu
RpO+FkiAxM8WXF/6IndiIsoC2XCh6pELadcKCNNy5IREC/+JbjveNZOuYU4KPJn5
TYZxzalJ8nWRHpi6neFHAQIDAQABo1owWDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUtcd+vBgIbcmB8O7ZeSBwFOCPj/QwFgYDVR0R
BA8wDYILcmVnaXN0cnktY2EwDQYJKoZIhvcNAQELBQADggEBABxAVx3Wkfic/SWY
Z1T0kv+zq8NW1YyHDw13mRwcjV+lRI0/WtANEBAbAejmZJkhhz7uc/N9egXF6cOY
PLoxvLXQJGxQKfBqrGkFhAlFt4FWJm0g7fXq/a6Fo/EStRmW9Oio0dFJHQ/F6Lon
DK/1bx0s27JJqBmU4WnmGF1U2prYuJ3/C8mwxWb49K+z1s1sDQQOCp/jt8gabc2R
GAZgcYhIj+HUXAEl14+GhpoLqJbJ5ngVLxz08YDMTGp1pQ8uYeE1m29yTOThMGrC
owVM1fSSHs5UtKQ2/tVcxi5Mf+WUWZr2D2km0dI9BJyXwtQwGKhp3lwJX5e0NTZi
+6a/23U=
-----END CERTIFICATE-----
#界面创建configmap:工作台>企业空间>System-workspace>项目>kubesphere-system>配置>配置字典,新建harbor4shl-ca

在这里插入图片描述
挂载 configmap harbor4shl-ca

编辑 ks-apiserver deployment 文件,进行 configmap 的挂载
在这里插入图片描述
在这里插入图片描述

保存更新

4.5 验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以下是在 KubeSphere 中安装 Harbor 的步骤: 1. 创建 Harbor 的命名空间 ``` kubectl create namespace harbor ``` 2. 创建 Harbor 所需的 PVC 使用以下 YAML 文件创建 PVC: ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: harbor-pvc namespace: harbor spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi ``` 然后执行以下命令: ``` kubectl apply -f <PVC_YAML_FILE> ``` 3. 下载并安装 Harbor 下载最新版本的 Harbor 并进行解压缩: ``` wget https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-online-installer-v2.2.0.tgz tar xvf harbor-online-installer-v2.2.0.tgz cd harbor ``` 4. 修改 Harbor 配置文件 使用以下命令打开 `harbor.yml` 文件: ``` vi harbor.yml ``` 根据您的需求修改配置文件中的参数。例如,您需要将 Harbor 的域名设置为 `harbor.example.com`,则需要将 `hostname` 参数设置为该值。 5. 安装 Harbor 使用以下命令安装 Harbor: ``` ./install.sh --with-notary --with-trivy --with-chartmuseum ``` 6. 配置 Ingress 使用以下 YAML 文件创建 Ingress: ``` apiVersion: extensions/v1beta1 kind: Ingress metadata: name: harbor-ingress namespace: harbor annotations: nginx.ingress.kubernetes.io/proxy-body-size: "0" spec: rules: - host: harbor.example.com # 修改为您的域名 http: paths: - backend: serviceName: harbor servicePort: 80 ``` 然后执行以下命令: ``` kubectl apply -f <INGRESS_YAML_FILE> ``` 7. 配置 DNS 将 Harbor 的域名解析到 Ingress 的 IP 地址。您可以使用 `nslookup` 命令来查找 Ingress 的 IP 地址: ``` nslookup harbor.example.com ``` 8. 访问 Harbor 在浏览器中输入 `https://harbor.example.com`(修改为您的域名),然后登录即可访问 Harbor。默认的用户名为 `admin`,密码为 `Harbor12345`。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[shenhonglei]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值