【Harbor Https】Harbor部署https并配置containerd拉取镜像

背景:

新项目,要接手另一个k8s集群,那个集群是kubernates1.24的rke2版本,里面已经不用docker容器了,使用了containerd容器来生成pod,因此需要变化我们以前的docker使用方式。首先第一步需要把harbor的镜像由http更改为https。

开始:

这里我使用harbor安装的ip【10.38.199.203】地址来生成证书,也可以自己定义一个域名,自定义域名后需要在kubernates的worker节点把域名和地址配置到host里面。

一:生成CA证书

使用openssl生成ca证书,ca.key

bash 复制代码
# 生成CA证书私钥
openssl genrsa -out ca.key 4096

# 生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=10.38.199.203" \
 -key ca.key \
 -out ca.crt

二.生成服务器证书

使用openssl生成服务器证书,10.38.199.203.key,10.38.199.203.csr

bash 复制代码
# 生成私钥
openssl genrsa -out 10.38.199.203.key 4096

# 生成证书签名请求(CSR)
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=10.38.199.203m" \
    -key 10.38.199.203.key \
    -out 10.38.199.203.csr

生成一个x509 v3扩展文件

bash 复制代码
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:10.38.199.203
EOF

使用该v3.ext文件为Harbor主机生成证书

bash 复制代码
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 10.38.199.203.csr \
    -out 10.38.199.203.crt

三.生成客户端证书

用10.38.199.203.crt生成客户端证书

bash 复制代码
openssl x509 -inform PEM -in 10.38.199.203.crt -out 10.38.199.203.cert

四.提供证书给docker,harbor启动需要docker

bash 复制代码
#创建证书名称目录
mkdir -p /etc/docker/certs.d/10.38.199.203/

#拷贝证书到该目录
cp 10.38.199.203.cert /etc/docker/certs.d/10.38.199.203/
cp 10.38.199.203.key /etc/docker/certs.d/10.38.199.203/
cp ca.crt /etc/docker/certs.d/10.38.199.203/

重启一下docker服务

bash 复制代码
systemctl restart docker

五.修改harbor的https配置

修改harbor.yml的https配置,这里我修改了默认端口为1443,并引入服务端证书

六.启动harbor,访问URL

bash 复制代码
./install.sh

接下去是配置kubernates容器containerd拉取镜像时的证书导入

七.配置containerd拉取docker镜像

当我们没有配置harbor的https时,拉取镜像会出现如下错误

containerd的镜像仓库配置地址在 /etc/rancher/rke2/registries.yaml,修改该文件,将harbor地址,证书配置进去,具体的配置参数和方法可以参考官方文档

Containerd 镜像仓库配置 | RKE2

bash 复制代码
mirrors:
  docker.io:
    endpoint:
      - "https://10.38.199.203:1443"
configs:
  "10.38.199.203:1443":
    auth:
      username: admin
      password: Harbor12345
    tls:
      cert_file:            /opt/harbor/10.38.199.203.cert
      key_file:             /opt/harbor/10.38.199.203.key
      ca_file:              /opt/harbor/ca.crt
      insecure_skip_verify: true

重启节点,每个worker节点都需要重启

bash 复制代码
systemctl restart rke2-agent

八.启动pod,成功拉取镜像

相关推荐
2301_806131366 小时前
Kubernetes的基本构建块和最小可调度单元pod-0
云原生·容器·kubernetes
SilentCodeY7 小时前
containerd配置私有仓库registry
容器·kubernetes·containerd·镜像·crictl
田三番8 小时前
使用 vscode 简单配置 ESP32 连接 Wi-Fi 每日定时发送 HTTP 和 HTTPS 请求
单片机·物联网·http·https·嵌入式·esp32·sntp
binqian13 小时前
【k8s】ClusterIP能http访问,但是不能ping 的原因
http·容器·kubernetes
探索云原生14 小时前
GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
ai·云原生·kubernetes·go·gpu
是垚不是土17 小时前
Istio流量镜像测试
运维·kubernetes·云计算·istio
蚊子不吸吸20 小时前
DevOps开发运维简述
linux·运维·ci/cd·oracle·kubernetes·gitlab·devops
林小果11 天前
K8S搭建
云原生·容器·kubernetes
码财小子1 天前
k8s 集群中 Golang pprof 工具的使用
后端·kubernetes·go
行者Sun19891 天前
【K8s】专题十五(1):Kubernetes 网络之概念总览
网络·云原生·容器·kubernetes