赞
踩
需先安装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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。