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
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...
更多推荐
所有评论(0)