在上一篇文章中我们介绍安装了helm和tiller server,两者用来作为k8s应用包管理的客户端提供命令行工具,以及作为服务端提供最终安装部署功能。这里我们介绍安装chartmuseum和helmpush,chartmuseum作为chart的私有仓库,helmpush作为插件工具来实现将chart推送到chart repo。当然作为chart repo,也不一定用chartmuseum,只要是web server就好,不过chartmuseum也属于helm项目,所以我们选择chartmuseum,这里对于chartmuseum采用linux systemd安装方式。另外,把chart推送到chart repo也不一定用helmpush,甚至用原始的curl https命令就好。同样helmpush也是属于helm项目的插件,所以我们选择使用它。对于实际应用,请根据自己的需求来选择chart repo和推送工具。
安装chartmuseum
对于chartmuseum我们利用之前文章介绍安装harbor时候的nfs存储,把chartmuseum的storage放在nfs上,所以我们这里会把chartmuseum安装在nfs的client所在的机器上。
nfs server创建共享目录
mkdir -p /opt/share/helm-charts
ls /opt/share|grep helm
nfs client查看共享目录
ls /mnt/share|grep helm
copy二进制文件
这里请提前下载好chartmuseum binary,我们使用0.9.0版本,下载有时候会很慢,甚至断掉
cp chartmuseum /usr/bin/
whereis chartmuseum
chartmuseum --version
创建配置目录:
在这里我们创建chartmuseum的配置目录,同时开启chartmusemu的双向ssl认证。所以请提前制作好相关证书,可以参考以前文章里制作docker server ssl证书。
mkdir -p /etc/chartmuseum
cp chartmuseum-server.crt /etc/chartmuseum
cp chartmuseum-server.key /etc/chartmuseum
cp ca.crt /etc/chartmuseum
ls /etc/chartmuseum
创建配置文件:
chartmuseum的配置项有很多,这里不逐一介绍,有兴趣的同学可以看一下chartmuseum的配置文档。chartmuseum的github地址:
https://github.com/helm/chartmuseum
touch /etc/chartmuseum/chartmuseum.conf
cat > /etc/chartmuseum/chartmuseum.conf << EOF
PORT="--port=4321"
STORAGE="--storage=local"
STORAGE_LOCAL_DIR="--storage-local-rootdir=/mnt/share/helm-charts"
TLS_CERT="--tls-cert=/etc/chartmuseum/chartmuseum-server.crt"
TLS_KEY="--tls-key=/etc/chartmuseum/chartmuseum-server.key"
TLS_CA="--tls-ca-cert=/etc/chartmuseum/ca.crt"
AGRS="--debug"
EOF
source /etc/chartmuseum/chartmuseum.conf
创建systemd unit文件
touch /usr/lib/systemd/system/chartmuseum.service
cat > /usr/lib/systemd/system/chartmuseum.service <<EOF
[Unit]
Description=Helm Chartmuseum Service
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=simple
EnvironmentFile=-/etc/chartmuseum/chartmuseum.conf
ExecStart=/usr/bin/chartmuseum \
$PORT \
$STORAGE \
$STORAGE_LOCAL_DIR \
$TLS_CERT \
$TLS_KEY \
$TLS_CA \
$AGRS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
source /etc/chartmuseum/chartmuseum.conf
cat /usr/lib/systemd/system/chartmuseum.service
开启访问端口防火墙:
这里chartmuseum使用4321端口,所以请打开4321port的firewall,可以参考以前文章打开防火墙(例如docker安装文章里的开启docker server的访问端口防火墙)。
reload服务,设置开机启动并开启服务
systemctl daemon-reload
systemctl enable chartmuseum
systemctl start chartmuseum
systemctl status chartmuseum
curl访问chartmuseum
curl https://172.20.11.41:4321/index.yaml \
--cacert /etc/chartmuseum/ca.crt \
--key /etc/chartmuseum/chartmuseum-server.key \
--cert /etc/chartmuseum/chartmuseum-server.crt
用helm删除old repo并添加新的repo:
这里helm需要和chartmuseum通讯,而我们的chartmuseum开启了双向ssl认证,所以添加repo的时候需要指定client端相应的ca file,key file,cert file(请提前制作好相关证书并放置在相应目录里,可以参考以前文章里制作docker server ssl证书)。
helm repo list
helm repo remove local
helm repo list
helm repo add chart-repo https://172.20.11.41:4321/ --debug \
--key-file /opt/sw/helm/chartmuseum-client.key \
--cert-file /opt/sw/helm/chartmuseum-client.crt \
--ca-file /opt/sw/helm/ca.crt
helm repo list
安装helmpush
helmpush为二进制可执行文件,所以这里直接下载binary放到$PATH路径下可运行就好。
下载并copy二进制文件:
请提前下载安装包,这里我们使用0.7.1版本,在github下载有时候会很慢,甚至断掉
mkdir -p /opt/sw/helm/helm-push
cp helm-push_0.7.1_linux_amd64.tar.gz /opt/sw/helm/helm-push/
tar -xzvf /opt/sw/helm/helm-push/helm-push_0.7.1_linux_amd64.tar.gz
cp ./bin/helmpush /usr/bin/
whereis helmpush
查看helmpush帮助命令
helmpush --help
设置hemlpush环境变量:
helmpush是需要和chartmuseum通讯的,而我们的chartmuseum开启了双向ssl认证。所以在使用helmpush的时候需要指定client端相应的ca file,key file,cert file(请提前制作好相关证书并放置在相应目录里,可以参考以前文章里制作docker server ssl证书)。另外由上面的helmpush的帮助命令可以看到helmpush默认的ca,key,cert由环境变量$HELM_REPO_CA_FILE,$HELM_REPO_CERT_FILE,$HELM_REPO_KEY_FILE决定。我们这里将这些环境变量设置在/etc/profile里,这样就都可以被加载到了。
vi /etc/profile
source /etc/profile
echo $HELM_REPO_CA_FILE
echo $HELM_REPO_CERT_FILE
echo $HELM_REPO_KEY_FILE