kubersphere 规划使用三台服务进行配置
操作系统:openEuler-23.03-x86_64 ,4C8G内存 80G硬盘
| ip | 作用 | 配置 | 备注 |
| 192.168.1.15 | 镜像仓库 | 4C4G内存 80G硬盘 | 域名:harbor.magedu.com |
| 192.168.1.20 | master | 4C8G内存 80G硬盘 | |
| 192.168.1.30 | node | 4C8G内存 80G硬盘 | |
安装kuberpshere前,需要先安装一个镜像仓库,这里采用harbor
离线安装Docker系统
第一步:下载docker离线包
https://download.docker.com/linux/static/stable/x86_64/docker-28.0.1.tgz
补充,也可以从https://download.docker.com/linux/static/stable/网址下载指定版本
第二步:下载离线安装工具
https://github.com/Jrohy/docker-install/
第三步:将下载好的资源放在一个目录,例如:

第四步:上传离线安装包
在linux环境下,创建/opt/docker目录,
mkdir -p /opt/docker
cd /opt/docker
#上传下载的dockers到/opt/docker
ll

第五步:执行安装操作
cd /mnt/sdb/opt/docker
chmod +x install.sh
./install.sh -f docker-28.0.1.tgz
docker info

第六步:Docker服务基本操作
#启动docker服务
systemctl start docker
#设置Docker开机自启
systemctl enable docker
#查看Docker状态
systemctl status docker

配置hosts
vi /etc/hosts
192.168.1.15 harbor.magedu.com
配置本地镜像仓库
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
"insecure-registries": ["harbor.magedu.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl restart docker
docker-compose 安装
到docker-compose的官网https://github.com/docker/compose/releases 下载需要的docker-compose版本
2、下载
wget https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
#查看安装结果
docker-compose version

Docker安装Harbor配置
harbor使用自签名证书部署、为什么要用sa模式签发呢?
原因:因为新版的containerd 使用go写的 harbor使用containerd就需要sa模式签发的证书。
kuberspshere集群需要使用containerd
一、配置证书
参考官方文档:https://goharbor.io/docs/2.4.0/install-config/configure-https/ 默认情况下,Harbor不附带证书。可以在没有安全性的情况下部署Harbor,这样您就可以通过HTTP连接到它。然而,只有在没有连接到外部互联网的测试或开发环境中,使用HTTP才是可接受的。在没有空隙的环境中使用HTTP会使您面临中间人攻击。在生产环境中,请始终使用HTTPS。如果您启用公证内容信任来正确签署所有图像,您必须使用HTTPS 要配置HTTPS,您必须创建SSL证书。您可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。本节描述如何使用OpenSSL创建CA,以及如何使用CA签署服务器证书和客户端证书。您可以使用其他CA提供商,例如Let's Encrypt
生成证书颁发机构证书
在生产环境中,您应该从CA获得证书。在测试或开发环境中,您可以生成自己的CA。要生成CA证书,请运行以下命令。
1.生成CA证书私钥
mkdir -p /opt/openssl
cd /opt/openssl
openssl genrsa -out ca.key 4096
touch /root/.rnd #记录签发信息 提前进行创建
2.生成CA证书
#实验
openssl req -x509 -new -nodes -sha512 -days 3650 \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=magedu.com" \\
-key ca.key \\
-out ca.crt
生成服务器证书
证书通常包含一个. crt文件和一个. key文件,例如magedu.com.crt和magedu.com.key
1.生成私钥
#openssl genrsa -out yourdomain.com.key 4096
openssl genrsa -out magedu.net.key 4096
2.生成证书签名请求(CSR)
openssl req -sha512 -new \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=magedu.com" \\
-key magedu.net.key \\
-out magedu.net.csr
无论您是使用FQDN还是IP地址连接到您的Harbor主机,您都必须创建此文件,以便您可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3扩展要求的证书。替换DNS条目以反映您的域
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=magedu.com
DNS.2=harbor.magedu.net
DNS.3=harbor.magedu.local
DNS.4=harborsync.magedu.net
EOF
3.使用v3.ext文件为您的Harbor主机生成证书。 用harbor主机名替换CRS和CRT文件名中的magedu.com
openssl x509 -req -sha512 -days 3650 \\
-extfile v3.ext \\
-CA ca.crt -CAkey ca.key -CAcreateserial \\
-in magedu.net.csr \\
-out magedu.net.crt
-CA ca.crt -CAkey ca.key表示CA直接签发,指定magedu.net.csr这个文件,
签发完后是magedu.net.crt文件;并会加载v3.ext这个文件,v3.ext文件的
信息会被签发到magedu.net.crt文件信息证书里
我们harbor用的就是这个magedu.net.crt和magedu.net.key文件
4.将crt文件转换为cert客户端证书文件
#docker程序认为"*.crt"文件是CA证书文件,"*.cert"客户端证书文件,于是上面第五步需要转换一下,其实使用cp一下也是可以的,内容并没有变化。
openssl x509 -inform PEM -in magedu.net.crt -out magedu.net.cert
5.证书整理一下 方便后续维护
[root@harbornew certs]ll
total 32
drwxr-xr-x 5 root root 44 Jul 12 14:59 all
-rw-r–r– 1 root root 2025 Jul 12 14:33 ca.crt
-rw-r–r– 1 root root 3243 Jul 12 14:33 ca.key
-rw-r–r– 1 root root 17 Jul 12 14:34 ca.srl
-rw-r–r– 1 root root 2143 Jul 12 14:55 magedu.net.cert
-rw-r–r– 1 root root 2143 Jul 12 14:34 magedu.net.crt
-rw-r–r– 1 root root 1704 Jul 12 14:34 magedu.net.csr
-rw-r–r– 1 root root 3247 Jul 12 14:33 magedu.net.key
-rw-r–r– 1 root root 307 Jul 12 14:34 v3.ext
[root@harbornew certs]ll all/
total 0
drwxr-xr-x 2 root root 48 Jul 12 14:58 CA
drwxr-xr-x 2 root root 65 Jul 12 14:59 Client
drwxr-xr-x 2 root root 95 Jul 12 14:59 Server
[root@harbornew certs]ll all/CA/
total 12
-rw-r–r– 1 root root 2025 Jul 12 14:58 ca.crt
-rw-r–r– 1 root root 3243 Jul 12 14:58 ca.key
-rw-r–r– 1 root root 17 Jul 12 14:58 ca.srl
[root@harbornew certs]ll all/Client/
total 12
-rw-r–r– 1 root root 2025 Jul 12 14:59 ca.crt
-rw-r–r– 1 root root 2143 Jul 12 14:59 magedu.net.cert
-rw-r–r– 1 root root 3247 Jul 12 14:59 magedu.net.key
[root@harbornew certs]ll all/Server/
total 16
-rw-r–r– 1 root root 2143 Jul 12 14:59 magedu.net.cert
-rw-r–r– 1 root root 2143 Jul 12 14:59 magedu.net.crt
-rw-r–r– 1 root root 1704 Jul 12 14:59 magedu.net.csr
-rw-r–r– 1 root root 3247 Jul 12 14:59 magedu.net.key
二、配置harbor 证书
mkdir -p /opt/harbor
cd /opt/harbor
# 下载解压
wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-online-installer-v2.1.1.tgz
tar zxvf harbor-online-installer-v2.1.1.tgz
# 配置安装
cp harbor.yml.tmpl harbor.yml
#在harbor中配置https证书
vi harbor.yml
harbor.yml内容如下:
# http related config
#http:
# port for http, default is 80. If https enabled, this port will redirect to https port
#port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /opt/openssl/magedu.net.crt
private_key: /opt/openssl/magedu.net.key
三、 运行harbor
#安装harbor
./install.sh –with-trivy –with-chartmuseum
#查看运行状态
docker ps
[root@harbornew harbor]docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a6df79cb54b goharbor/harbor-jobservice:v2.3.2 "/harbor/entrypoint.…" About an hour ago Up About an hour (healthy) harbor-jobservice
d576de509508 goharbor/nginx-photon:v2.3.2 "nginx -g 'daemon of…" About an hour ago Up About an hour (healthy) 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp nginx
67ce130130fc goharbor/harbor-core:v2.3.2 "/harbor/entrypoint.…" About an hour ago Up About an hour (healthy) harbor-core
610264585f6e goharbor/trivy-adapter-photon:v2.3.2 "/home/scanner/entry…" About an hour ago Up About an hour (healthy) trivy-adapter
1cd26fcfcdae goharbor/harbor-registryctl:v2.3.2 "/home/harbor/start.…" About an hour ago Up About an hour (healthy) registryctl
c90e18c90602 goharbor/registry-photon:v2.3.2 "/home/harbor/entryp…" About an hour ago Up About an hour (healthy) registry
e8029f065c42 goharbor/chartmuseum-photon:v2.3.2 "./docker-entrypoint…" About an hour ago Up About an hour (healthy) chartmuseum
e07dde86f80a goharbor/harbor-portal:v2.3.2 "nginx -g 'daemon of…" About an hour ago Up About an hour (healthy) harbor-portal
10aa3de5d6a6 goharbor/redis-photon:v2.3.2 "redis-server /etc/r…" About an hour ago Up About an hour (healthy) redis
c340e69b0e15 goharbor/harbor-db:v2.3.2 "/docker-entrypoint.…" About an hour ago Up About an hour (healthy) harbor-db
67ea32b72fbd goharbor/harbor-log:v2.3.2 "/bin/sh -c /usr/loc…" About an hour ago Up About an hour (healthy) 127.0.0.1:1514->10514/tcp harbor-log
docker-compose up -d
docker-compose down -v
四、配置系统启动服务
vi /etc/systemd/system/harbor.service
[Unit]
Description=harbor server
After=network.target
[Service]
Type=forking
PIDFile=/mnt/sdb/opt/nginx/nginx-1.29.0/logs/nginx.pid
ExecStartPre=/mnt/sdb/opt/nginx/nginx-1.29.0/sbin/nginx -t
ExecStart=/mnt/sdb/opt/nginx/nginx-1.29.0/sbin/nginx
ExecReload=/mnt/sdb/opt/nginx/nginx-1.29.0/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#开机启动
systemctl enable nginx.service
#启动服务
systemctl start nginx.service

