我们考虑整合Rook和Ceph之外的其他一些组件,诸如Prometheus,监控整体的存储状态,Grafana
首先是Prometheus的入门
我们可以先利用docker部署一般,了解其一些配置项等
首先需要挂载一个config文件夹
Mkdir -p /app/Prometheus/config
docker run -d –name prometheus –restart=always \
-p 9090:9090 \
-v /app/prometheus/config:/etc/prometheus \
prom/prometheus
我们docker run了一下,挂载了这个配置文件夹,这就需要我们书写一个config文件
对应的config中我们可以配置一下对应的参数
首先是global中的一些参数
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. |
扫描间隔是15秒,然后规则计算规则也是15秒
然后是job_name
配置了要扫描的端口,也就是如何去获取监控数据
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. – job_name: ‘prometheus’ # metrics_path defaults to ‘/metrics’ # scheme defaults to ‘http’. scrape_interval: 5s static_configs: – targets: [‘127.0.0.1:9090’] |
然后是其中的查询需要用到其独有的QL
基本的语法网址如下
https://prometheus.io/docs/prometheus/latest/querying/basics/
可以如下的查询,首先书写一个指标名称
http_requests_total
更加精确的可以匹配
http_requests_total{job=”prometheus”,group=”canary”}
除此外还能表明时间的粒度
http_requests_total{job=”prometheus”}[5m]
五分钟为间隔的匹配
还有些对应的函数
sum(http_requests_total{method=”GET”} offset 5m) // GOOD.
5分钟的相加
稍微介绍之后,如果想要集群方式的使用,是将其和K8S进行整合
对于在K8S中的安装,我们可以使用helm来进行安装使用
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
添加了仓库
然后将对应的prometheus进行pull下来
helm pull prometheus-community/kube-prometheus-stack –version 16.0.0
然后我们在其中修改一些配置项,供其初始化
诸如 override.yaml
alertmanager:
ingress: enabled: true ingressClassName: nginx hosts: – alertmanager.base.com paths: – / pathType: Prefix tls: – secretName: base.com hosts: – alertmanager.base.com grafana: enabled: true defaultDashboardsEnabled: true adminPassword: Admin123456 ingress: enabled: true hosts: – grafana.base.com path: / pathType: Prefix tls: – secretName: base.com hosts: – grafana.base.com prometheus: ingress: enabled: true hosts: [prometheus.base.com] paths: – / pathType: Prefix tls: – secretName: base.com hosts: – prometheus.base.com additionalPodMonitors: – name: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-state-metrics:v2.0.0 |
别忘在全局的TLS中加入域名
然后进行安装
kubectl create ns monitor
helm install -f values.yaml -f override.yaml prometheus-stack ./ -n monitor
其次是harbor,进行一个镜像的存储仓库,内部包含多个组件
Nginx 负责代理Harbor的registry,UI,token等服务
UI负责图形化权限,帮助用户管理registry上镜像,对用户进行了授权
Jobservice,负责镜像复制工作,和registry通信,进行pull完记录job_log
Adminserver系统的配置管理中的存储用量
DB负责进行存储用户权限,审计日志,DockerImage分组信息等数据
Registry,原生的docker镜像仓库
Log进行收集其他组件的log
关于接下来的安装
我们仍然是绑定对应的仓库
然后进行pull下来修改配置文件
helm repo add harbor https://helm.goharbor.io
helm pull harbor/harbor
然后我们需要创建一个证书,供harbor内部使用
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj “/CN=*.base.com/O=*. base.com”
kubectl create secret tls harbor.base.com –key tls.key –cert tls.crt -n devops
然后需要注意,我们这里配置的证书,是harbor暴露给外部访问的,而harbor内部通信使用证书不建议替换
expose: #web浏览器访问用的证书
type: ingress tls: certSource: “secret” secret: secretName: “base.com” notarySecretName: “base.com” ingress: hosts: core: harbor.base.com notary: notary-harbor.base.com externalURL: https://harbor.base.com internalTLS: #harbor内部组件用的证书 enabled: true certSource: “auto” persistence: enabled: true resourcePolicy: “keep” persistentVolumeClaim: registry: # 存镜像的 storageClass: “rook-ceph-block” accessMode: ReadWriteOnce size: 5Gi chartmuseum: #存helm的chart storageClass: “rook-ceph-block” accessMode: ReadWriteOnce size: 5Gi jobservice: # storageClass: “rook-ceph-block” accessMode: ReadWriteOnce size: 1Gi database: #数据库 pgsql storageClass: “rook-ceph-block” accessMode: ReadWriteOnce size: 1Gi redis: # storageClass: “rook-ceph-block” accessMode: ReadWriteOnce size: 1Gi trivy: # 漏洞扫描 storageClass: “rook-ceph-block” accessMode: ReadWriteOnce size: 5Gi metrics: enabled: true |
然后进行安装
helm install itharbor ./ -f values.yaml -f override.yaml -n devops
关于其使用就可以
账号:admin 密码:Harbor12345 修改后:Admin123789
这就是一个私有的镜像仓库
使用方式也是类似
我们在VPC上开端口指向Ingress
然后Ingress中配置对应的harbor.base.com
之后在docker的宿主机上配置/etc/host,进行域名的解析
但docker对于一些自签的证书是不信任的
所以需要在docker中配置信任的证书
需要在etc/docker/crets.d目录下,创建一个域名的文件夹,将CA证书上传即可
然后就可以正常登陆进这个docker仓库进行使用
Docker login https://harbor.base.com
之后就直接docker pull
Docker tage
Docker push
这样一系列操作验证
除此外,还可以在其中做仓库代理
也就是代理docker hub的仓库,对于一个新的镜像,先将镜像拉到仓库中,然后到本地
以及对于一个私有仓库,可以考虑配置机器人账号供其单独访问