Helm+Harbor部署-v3版本

Helm+Harbor部署-v3版本
一、部署 (虚拟机环境)
1、Helm 部分
1.1 步骤
环境: 一台ECS 安装helm 组件 centos7/8

下载 :wget https://get.helm.sh/helm-v3.6.2-linux-amd64.tar.gz

解压 : tar xf helm-v3.6.2-linux-amd64.tar.gz

把解压的二进制执行文件 加入环境变量。

cp ./helm /usr/local/bin/helm -ar

验证:

./helm –h

查看版本

[ templates]# helm version

version.BuildInfo{Version:“v3.6.2”, GitCommit:“ee407bdf364942bcb8e8c665f82e15aa28009b71”, GitTreeState:“clean”, GoVersion:“go1.16.5”} PS : 我这边是3版本!!

额外区别

3 与 2 的区别

Helm2:helm->tiller→k8s。

Helm3:helm→k8s。

1.2 helmpush插件
主用于上传chart仓库数据

Helmpush插件安装 (因为 helm 由于性能原因舍弃了 chart上传,可以用原生的curl 也可以用 helmpush )

由于墙拦住了比较慢
地址: https://github.com/chartmuseum/helm-push/releases/download/v0.9.0/helm-push_0.9.0_linux_amd64.tar.gz

解压 :tar xf helm-push_0.9.0_linux_amd64.tar.gz

把解压的二进制执行文件 加入环境变量。

cp ./helmpush /usr/local/bin/helmpush -ar

二、Harbor部分
2.1 安装docker (需要19版本以上)
添加镜像源: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看版本:yum list docker-ce --showduplicates | sort -r

安装: yum install docker-ce-20.10.1

2.2 安装 docker-compose

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

2.3 安装 harbor
下载 :
wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-online-installer-v2.3.1.tgz

解压:
tar xf harbor-offline-installer-v2.3.1.tgz

编译SSL证书!因为docker 上传 需要用 HTTPS 以下改变其IP 生成对应的/app/harbor/certs 的密钥文件

注意! 千万生产不要用自建证书 一堆坑不好处理 详见可见案例问题处理部分
在该目录下操作生成证书,正好供harbor.yml使用
证书生成脚本

#!/bin/bash
mkdir -p /app/harbor/certs
cd /app/harbor/certs
IP='XXX.XXX.XXX.XXX'
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=www.harbor.mobi" -key ca.key -out ca.crt
openssl genrsa -out ${IP}.key 4096
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=${IP}" -key ${IP}.key -out ${IP}.csr

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:${IP}

EOF

openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in ${IP}.csr -out ${IP}.crt
openssl x509 -inform PEM -in ${IP}.crt -out ${IP}.cert

cp ${IP}.crt /etc/pki/ca-trust/source/anchors/${IP}.crt
update-ca-trust

HARBOR配置 下面IP password 替换为自身的

hostname: ${IP}
http:
  port: 80
https:
  port: 443
  certificate: /root/harbor/harbor/certs/${IP}.crt
  private_key: /root/harbor/harbor/certs/${IP}.key
harbor_admin_password: ${password}
database:
  password: ${password}
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.3.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

安装 (Harbor默认安装时是 不开启chartmuseum所以安装的时候加上–with-chartmuseum 支持chart仓库)

./install.sh --with-chartmuseum 

结果

[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating network "harbor_harbor-chartmuseum" with the default driver
Creating harbor-log ... done
Creating chartmuseum ... done
Creating redis ... done
Creating harbor-db ... done
Creating registryctl ... done
Creating harbor-portal ... done
Creating registry ... done
Creating harbor-core ... done
Creating nginx ... done
Creating harbor-jobservice ... done
✔ ----Harbor has been installed and started successfully.`

自签证书部分
一自签证书问题合集:( 已用正式证书以下问题不存在.)

问题一:

docker login https://cloud-harbor.xxxx.net --username username 

登录报错如下:
Password:
Error response from daemon: Get https://cloud-harbor.xxxx.net/v2/: x509: certifixxxxcate signed by unknown authority

解决方案 :
本地机器允许自建证书通过。
把生成的Crt文件放入 /etc/ssl/certs/
执行更新语句
update-ca-trust
如果仓库没在本地的json中保留 将会被清空!!
重启docker生效 systemctl restart docker !!! 注意 会影响本地的 docker上已跑的服务 请谨慎!

问题二 报错 GO版本低
x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
解决方案(可以不用ROOT执行…这里方便展示)
原因: 由于go1.15以上不支持X509的证书 , 这里可以用SAN证书替换(这里不再扩展 -reqexts SAN ),本案例直接绕过校验

方法: 设置环境变量 ( 注意如果用ansible之类的工具 需要引入 /etc/profile 全局变量.)

echo “export GODEBUG=x509ignoreCN=0” >> /etc/profile; . /etc/profile

问题三报错访问IP证书不正确
[root@ip certs]# helm repo add --username XXX --password XXXXX repo_name
https://ip/chartrepo/repo_name
Error: looks like “https://ip/chartrepo/repo_name” is not a valid chart repository or cannot be reached: Get “https://ip/chartrepo/repo_name/index.yaml”: x509: cannot validate certificate for ip because it doesn’t contain any IP SAN

解决方式: 生成证书依据是域名,不是IP,故不可用IP. 生成一份对应域名的即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值