k8s使用helm安装harbor

1. 创建证书(注意修改域名参数)

#创建目录保存证书文件
mkdir /data/harborsecret && cd /data/harborsecret
# 生成 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=harbor.domain.com" \
  -key ca.key \
  -out ca.crt

# 生成私钥
openssl genrsa -out harbor.domain.com.key 4096
# 生成证书签名请求 CSR
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=*.harbor.domain.com" \
-key harbor.domain.com.key \
-out harbor.domain.com.csr
# 生成 x509 v3 扩展
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment,dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.domain.com
DNS.2=*.harbor.domain.com
EOF
# 创建 Harbor 访问证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.domain.com.csr \
-out harbor.domain.com.crt
# 将 crt 转换为 cert ,以供 Docker 使用
openssl x509 -inform PEM -in harbor.domain.com.crt -out harbor.harbor.com.cert

结果
在这里插入图片描述

2. 生成secret

# 创建 Namespace
kubectl create ns harbor
# 创建证书秘钥
kubectl create secret tls harbor-secret --key harbor.domain.com.key --cert harbor.domain.com.crt -n harbor

3. 导入镜像、helm

# 有外网用这个添加chart库
helm repo add harbor https://helm.goharbor.io
helm repo update
# 没有就只能手动导了
# 镜像地址
https://github.com/goharbor/harbor/releases  到github官网下载offline离线包,上传到所需安装的机器上,然后解压,docker  load -i xxxx
# chart地址
https://github.com/goharbor/harbor-helm

4. 创建storageclass

# 请看另一篇专栏 https://blog.csdn.net/qq_36200932/article/details/123056408 

5. 修改文件

# 解压harbor-helm后,进入目录,修改values.yaml
ingress:
hosts:
  core: harbor.domain.com
  notary: notary.domain.com
	secretName: harbor-secret	#上面创建得secret,也可不填,系统自动生成,为期1年
externalURL: https://harbor.domain.com  

storageClass: "harbor-data" # 这个就填storagessclass name,有多个,全填

harborAdminPassword: "harbor12345" #登录密码
# 保存退出,执行部署
helm install harbor -f values.yaml . -n harbor

# 取消部署命令
helm uninstall harbor -n harbor

5. 启动测试

# 执行kubectl get ingress ,将这些地址添加到所有节点 /etc/hosts 文件中做一个域名映射

在这里插入图片描述

然后访问
**加粗样式
**
下载 Harbor 证书
由于 Harbor 是基于 Https 的,故而需要提前配置 tls 证书,进入:Harobr主页->配置管理->系统配置->镜像库根证书
在这里插入图片描述

2、服务器 Docker 中配置 Harbor 证书
然后进入服务器,在服务器上 /etc/docker 目录下创建 certs.d 文件夹,然后在 certs.d 文件夹下创建 Harobr 域名文件夹,可以输入下面命令创建对应文件夹:

mkdir -p /etc/docker/certs.d/hub.7d.com

1
然后再 /etc/docker/certs.d/hub.mydlq.club 目录下上传上面的 ca 证书文件。

3、登录 Harbor 仓库
只有登录成功后才能将镜像推送到镜像仓库,所以配置完证书后尝试登录,测试是否能够登录成功:

如果提示 ca 证书错误,则重建检测证书配置是否有误。

docker login -u admin -p admin@123 hub.7d.com

服务器配置 Helm Chart 仓库

1、配置 Helm 证书
跟配置 Docker 仓库一样,配置 Helm 仓库也得提前配置证书,上传 ca 签名到目录 /etc/pki/ca-trust/source/anchors/:

$ cat /etc/pki/ca-trust/source/anchors/ca.crt
-----BEGIN CERTIFICATE-----
MIIC9TCCAd2gAwIBAgIRALztT/b8wlhjw50UECEOTR8wDQYJKoZIhvcNAQELBQAw
FDESMBAGA1UEAxMJaGFyYm9yLWNhMB4XDTIwMDIxOTA3NTgwMFoXDTIxMDIxODA3
NTgwMFowFDESMBAGA1UEAxMJaGFyYm9yLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEArYbsxYmNksU5eQhVIM3OKac4l6MV/5u5belAlWSdpbbQCwMF
G/gAliTSQMgqcmhQ3odYTKImvx+5zrhP5b1CWXCQCVOlOFSLrs3ZLv68ZpKoDLkg
6XhoQFVPLM0v5V+YzWCGAson81LfX3tDhltnOItSpe2KESABVH+5L/2vo25P7Mvw
4bWEWMyY4AS/3toiDZjhwNMrMb2lpICrlH9Sc3dAOzUteyVznA5/WF8IyPI64aKn
tl0gxLOZgUBTkBoxVhPj7dNNZu8lMnqAYXmhWt+oRr7t1HHp2lOtk2u/ndyV0kKL
xufx5FYVJQel2yRBGc/C1QLN18nC1y6u5pITaQIDAQABo0IwQDAOBgNVHQ8BAf8E
BAMCAqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQF
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBACFT92PWBFeCT7By8y8+EkB2TD1QVMZm
NDpBS75q5s2yIumFwJrbY6YsHtRkN1Zx9jc4LiJFHC6r0ES3tbCDapsxocvzn7dW
XLNTtnSx0zPxNXZzgmTsamfunBd4gszdXMshJ+bKsEoTXhJEXVjZq/k0EZS8L4Mp
NZ7ciPqwAI1Tg+mFGp5UOvzxYLyW8nCLPykC73y3ob1tiO6xdyD/orTAbA6pIMc9
7ajTfwYj4Q6JPY/QAmu0S+4hJHs724IrC6hiXUlQNVVRW/d3k+nXbYttnnmPnQXC
RyK2ru7R8H43Zlwj26kQJo6naQoQ0+Xcjcyk5llPqJxCrk3uoHF0r4U=
-----END CERTIFICATE-----

如果下面执行的目录不存在,请用 yum 安装 ca-certificates 包。

执行更新命令,使证书生效:

update-ca-trust extract 

1
2、添加 Helm 仓库
添加 Helm 仓库:

helm repo add myrepo --username=admin --password=admin@123 https://hub.7d.com/chartrepo/library

-username:harbor仓库用户名
-password:harbor仓库密码
-ca-file:指向ca.crt证书地址
chartrepo:如果是chart仓库地址,中间必须加 chartrepo
library:仓库的项目名称
查看仓库列表:

$ helm repo list
NAME            URL                                                                                  
myrepo          https://hub.7d.com/chartrepo/library 

七、测试功能
1、推送与拉取 Docker 镜像
这里为了测试推送镜像,先下载一个用于测试的 helloworld 小镜像,然后推送到 hub.mydlq.club 仓库:

拉取 Helloworld 镜像

docker pull hello-world:latest

将下载的镜像使用 tag 命令改变镜像名

docker tag hello-world:latest hub.7d.com/library/hello-world:latest

推送镜像到镜像仓库

docker push hub.7d.com/library/hello-world:latest

删除之前镜像

docker rmi hello-world:latest
docker rmi hello-world:latest hub.7d.com/library/hello-world:latest

测试从 hub.7d.com 下载新镜像

docker pull hub.7d.com/library/hello-world:latest

2、推送与拉取 Chart
Helm 要想推送 Chart 到 Helm 仓库,需要提前安装上传插件:

helm plugin install https://github.com/chartmuseum/helm-push

然后创建一个测试的 Chart 进行推送测试:

helm create hello

打包chart,将chart打包成tgz格式

helm package hello

推送 chart 进行测试

helm cm-push hello-0.1.0.tgz myrepo

Pushing hello-0.1.0.tgz to myrepo...

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

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值