一个计算机技术爱好者与学习者

0%

好好学Sealos:Sealos制作PrometheusAlert集群镜像

1. 前言

本文中,我们会基于sealos制作一个PrometheusAlert集群镜像。
使用这个集群镜像,我们能够在sealos拉起的K8S集群中,一键部署单节点的PrometheusAlert。

参考文档:

2. 前置条件

安装sealos4.2.0,拉起K8S 1.24.8集群(同时安装helm),具体方法参考《sealos入门篇》

3. 制作PrometheusAlert集群镜像

1、下载PrometheusAlert源码

1
2
mkdir prometheusalert && cd prometheusalert
git clone https://github.com/feiyu563/PrometheusAlert.git pa

项目文件很大,为了使用chart要下载整个项目,不友好。

2、修改chart

1
2
3
4
5
6
mv pa/example/helm/prometheusalert .
vim prometheusalert/values.yaml
vim prometheusalert/config/app.conf
cat prometheus/Chart.yaml # 查看chart版本和app版本,分别是1.0.0和1.2.0
tar -czvf prometheusalert-1.0.0-custom.tgz prometheusalert
rm pa -rf

修改chart的values.yaml 和 app.conf ,给一些默认值,然后重新打包chart,后续Dockerfile中的CMD中可以少填一些参数。

如下修改:

  • service.type 改为 NodePort
  • ingress.enabled 改为 false
  • open-feishu 改为 1

3、添加镜像列表

1
2
3
helm template prometheusalert prometheusalert-1.0.0-custom.tgz | grep image
mkdir -p images/shim/
vim images/shim/images-list.txt

内容为:

1
feiyu563/prometheus-alert:v4.8

4、编写Dockerfile

1
2
3
4
FROM scratch
COPY ../prometheusalert .
CMD ["helm install prometheusalert prometheusalert-1.0.0-custom.tgz \
-n prometheusalert --create-namespace"]

5、构建集群镜像

1
2
sealos build -f Dockerfile -t docker.io/voidking/prometheusalert:v1.2.0 .
sealos inspect docker.io/voidking/prometheusalert:v1.2.0

4. 使用PrometheusAlert集群镜像

4.1. 自定义安装PrometheusAlert

1
2
3
4
sealos run docker.io/voidking/prometheusalert:v1.2.0 --cmd="helm install prometheusalert prometheusalert-1.0.0-custom.tgz \
-n prometheusalert --create-namespace"

kubectl get all -n prometheusalert

4.2. 上传集群镜像

上传到公共镜像仓库

1
2
3
4
sealos push docker.io/voidking/prometheusalert:v1.2.0
sealos tag docker.io/voidking/prometheusalert:v1.2.0 hub.sealos.cn/voidking/prometheusalert:v1.2.0
sealos login -k config.yml hub.sealos.cn
sealos push hub.sealos.cn/voidking/prometheusalert:v1.2.0

上传到私有镜像仓库

1
2
3
sealos tag docker.io/voidking/prometheusalert:v1.2.0 harbor.voidking.com/sealos/prometheusalert:v1.2.0
sealos login harbor.voidking.com
sealos push harbor.voidking.com/sealos/prometheusalert:v1.2.0