【Docker初探】第十节:部署Docker本地镜像仓库Harbor(Helm方式,Arm64与X86_64)

需先安装K8s,请参考:

安装 helm

snap install helm --classic

下载harbor chart

helm repo add harbor https://helm.goharbor.io
helm fetch harbor/harbor --untar

创建harbor证书

# 生成key
mkdir ./harbor-ca
cd ./harbor-ca
openssl genrsa -out tls.key 4096
# 生成crt
openssl req -new -x509 -text -key tls.key -out tls.cert -keyout tls.pem -days 21900 -subj "/CN=harbor.server.com"
# 复制(如用的K8s,需复制到其他Node)
mkdir -pv /etc/docker/certs.d/harbor.server.com:30003/
cp ./* /etc/docker/certs.d/harbor.server.com:30003/
cd ..

创建notary证书

# 生成key
mkdir ./notary-ca
cd ./notary-ca
openssl genrsa -out tls.key 4096
# 生成crt
openssl req -new -x509 -text -key tls.key -out tls.cert -keyout tls.pem -days 21900 -subj "/CN=notary.server.com"
# 复制(如用的K8s,需复制到其他Node)
mkdir -pv /etc/docker/certs.d/notary.server.com:30004/
cp ./* /etc/docker/certs.d/notary.server.com:30004/
cd ..

安装NFS服务

# 安装 nfs-kernel-server
sudo apt-get install nfs-kernel-server
# 修改配置文件
sudo vim /etc/exports
	<共享路径1> *(rw,sync,no_root_squash)     # * 表示允许任何网段 IP 的系统访问该 NFS 目录
	<共享路径2> *(rw,sync,no_root_squash)     # * 表示允许任何网段 IP 的系统访问该 NFS 目录
# 授权
sudo chmod -R 777 <共享路径>
# 启动服务
sudo /etc/init.d/nfs-kernel-server restart
# 测试服务,挂载到 /mnt,不报错就说明服务正常
sudo mount -t nfs <IP地址>:<共享路径> /mnt -o nolock
# 卸载
sudo umount /mnt

创建nfs-client-provisioner

# 下载 deploy/ 下 deployment.yaml, rbac.yaml, class.yaml 3个文件
https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client
# 修改 deployment.yaml 文件
volumes.hostPath.path: <pvc本地路径>
# 创建 Deployment 和 Service(x86_64)
kubectl create -f ./deployment.yaml
# 创建 Deployment 和 Service(arm)
kubectl create -f ./deployment_arm.yaml
# 创建 ClusterRole, ClusterRoleBinding, Role, RoleBinding 设置权限
kubectl create -f ./rbac.yaml
# 创建 StorageClass
kubectl create -f ./class.yaml
# /etc/kubernetes/manifests/kube-apiserver.yaml 文件
	添加"--feature-gates=RemoveSelfLink=false"
# 修改 /etc/docker/daemon.json 文件
	添加:
	{
		"insecure-registries":["harbor.server.com:30003"]
	}

配置harbor(nodePort方式)

cd harbor
vi ./values.yaml
	expose.type: nodePort
	expose.tls.auto.commonName: "harbor.server.com"
	expose.tls.secret.secretName: "<harbor证书文件夹路径>"
	expose.tls.secret.notarySecretName: "<notary证书文件夹路径>"
	externalURL: https://harbor.server.com:30003
	persistence.persistentVolumeClaim.*.storageClass: "managed-nfs-storage" # 配置所有 storageClass
	persistence.imageChartStorage.filesystem.rootdirectory: /export # 与 nfs-provisioner 配置对应
	harborAdminPassword: "<admin登录密码>"
	# arm64需要替换掉所有镜像
	*.image.repository: cocl666/*
	*.image.tag: v2.2.2
	# arm64需要替换掉所有镜像,redis-photon镜像配置
	*.image.repository: harborarm/redis-photon
	*.image.tag: dev

配置harbor(ingress方式)

# 配置大部分与 nodePort 方式一样,修改如下:
	expose.type: ingress
 	ingress.hosts.core: harbor.server.com
	ingress.hosts.notary: notary.server.com
# 下载 ingress-nginx
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/exoscale/deploy.yaml
# 修改 deploy.yaml
vi ./deploy.yaml
	# 找到 ingress-nginx/templates/controller-service.yaml 部分
	spec.ports.http.nodePort: 30080 # 固定开放端口号
	spec.ports.https.nodePort: 30443 # 固定开放端口号
# 创建 ingress-nginx
kubectl create -f deploy.yaml
# 部署后可以直接用对应端口访问
https://harbor.server.com:30443/

安装kube-flannel(x86_64)

# x86_64
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

安装kube-flannel(arm64)

# arm64
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
vi kube-flannel.yml
	所有image后面标签加上"-arm64"
kubectl apply -f ./kube-flannel.yml

安装harbor

# 安装
kubectl create namespace harbor-helm
helm install my-release . -n harbor-helm
# 查看是否正常启动
kubectl get pods -n harbor-helm
kubectl describe pods -n harbor-helm

修改/etc/hosts文件,添加:

<127.0.0.1或IP地址> harbor.server.com notary.server.com

访问Harbor页面,并新增用户

# 浏览器打开IP
https://127.0.0.1:30003

用新用户登录Docker

# 输入账号与密码
docker login harbor.server.com:30003

修改镜像名称

docker tag <镜像原名称>:<tag> harbor.server.com:30003/<镜像名称>:<tag>

推送镜像

docker push harbor.server.com:30003/<镜像名称>:<tag>

拉取镜像

docker pull harbor.server.com:30003/<镜像名称>:<tag>

卸载(可选)

helm uninstall my-release -n harbor-helm

可能的问题


参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PPHT-H

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

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

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

打赏作者

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

抵扣说明:

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

余额充值