我们考虑整合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

关于其使用就可以

https://harbor.base.com:4443/

账号: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的仓库,对于一个新的镜像,先将镜像拉到仓库中,然后到本地

以及对于一个私有仓库,可以考虑配置机器人账号供其单独访问

发表评论

邮箱地址不会被公开。 必填项已用*标注