notification-manager 原码分析(三)消息接收、发送流程分析main 启动文件解析
文件路径: cmd/notification-manager/main.go
main主流程
1、相关flag参数解析
1kingpin.Parse()
2、日志级别设置
1234567891011121314151617181920212223logger := log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout))if *logfmt == logFormatJson { logger = log.NewJSONLogger(log.NewSyncWriter(os.Stdout))}switch *logLevel {case logLevelDebug: logger = level.NewFilter(logger, level.AllowDebug())case logLevelInfo: logger = level.NewFilter(logger, level.AllowInfo())case ...
notification-manager 原码分析(一) 本地部署运行环境搭建原码构建部署
拉取项目(项目地址: github.com/kubesphere/notification-manager)
首先查看项目文档(docs目录)和了解构建、启动入口(Makefile文件)
构建、部署operator
生成和安装k8s crd资源: make install ,若报错参见下方遇到问题及解决办法
查看创建的资源123456789101112# alias mk="minikube kubectl --" ### 本地使用minikube调试$ mk get crd ### crd资源声明已经创建 NAME CREATED ATconfigs.notification.kubesphere.io 2023-11-05T05:06:50Znotificationma ...
notification-manager资源概念服务组件
Operator
管理维护CRD资源。用户基于定义的CRD资源结构,创建定义资源配置。
manager
基于CRD资源,提供webhook api 接收alert消息,匹配转发到对应接收者。
CRD资源
消息接收、匹配、过滤转发告警流程图
Silence: 用于定义、配置是否静默、忽略告警消息
Receiver: 接收者,用于配置消息告警通知目标
Router: 将匹配的消息分组转发到一个活多个接收者
告警消息通知配置演示配置receiver 接收告警消息
这里使用email演示, 邮箱配置需要全局配置一个邮箱账户smtp相关信息配置
邮箱配置文件
12345678910111213141516171819202122232425262728# cat email.conf.yamlapiVersion: notification.kubesphere.io/v2beta2kind: Configmetadata: name: default-config labels: type: d ...
创建k8s只读账户kube config部分临时场景想要给到开发、或者其他人员k8s集群的只读权限方便查看部分资源或日志,此时可以在k8s master机器上新建用户绑定k8s新kube config(config 绑定k8s集群角色、上下文) 即可实现、满足临时需求。
cfssl工具安装1234567891011121314151617mkdir /root/kube-readercd /root/kube-readerwget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64chmod +x cfssl_linux-amd64mv cfssl_linux-amd64 /usr/local/bin/cfssl wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64chmod +x cfssljson_linux-amd64mv cfssljson_linux-amd64 /usr/local/bin/cfssljson wget https://pkg.cfssl.org/R1.2/cfssl ...
devops
未读drone原码分析(二)任务调度执行流程注册runner
main入口启动文件: cmd/drone-server/main.go
1、注册启动配置: 这里有很多服务参数启动注册,这里只关注runner的部分,进入InitializeApplication后就能看到runner
123456app, err := InitializeApplication(config)if err != nil { logger := logrus.WithError(err) logger.Fatalln("main: cannot initialize server")}
2、runner配置
1runner := provideRunner(buildManager, secretService, registryService, config2)
3、应用配置中注入runner
1mainApplication := newApplication(cronScheduler, reaper, datadog, runner, serverSer ...
devops
未读drone原码分析(一)任务创建流程任务创建webhook trigger
调用创建逻辑:当用户通过drone web页面激活项目时,drone会往对应项目仓库创建一个webhook 订阅,对应git scm仓库有git push、merge等event操作会往drone对应的webook地址发送事件消息,drone读取对应项目、对应分支的.drone.yaml,按照配置进行任务创建或忽略。
创建scm hook代码路径: service/hook/hook.go
1234567891011121314151617181920212223242526func (s *service) Create(ctx context.Context, user *core.User, repo *core.Repository) error { err := s.renew.Renew(ctx, user, false) if err != nil { return err } ctx = context.WithValue(ctx, scm.TokenKey ...
安装spinnakerspinnaker组件
Deck:前端web页面 端口9000Gate:API网关,所有程序通过gate与spinnaker通信。 端口8084Orca:编排引擎,定义管道或任务,并管理阶段和任务,协调其他Spinnaker服务。 端口8083Clouddriver: 云厂商适配器,负责对云厂商的变更资源调用。 端口7002Front50:用于保存应用程序、管道、项目和通知的元数据。 端口8080Rosco:为各种运供应商生成不可变的VM镜像。 端口 8087Igor: 持续集成系统集成,触发管道。端口 8088Echo:消息通知,负责发送通知。端口 8089Fiat: 认证授权服务。端口 7003Kayenta:自动化的金丝雀分析。端口 8090Halyard: Spinnaker生命周期配置管理工具。端口 8064
安装minio
创建nfs pv12345678910111213141516kind: PersistentVolumeapiVersion: v1metadata: name: ci-minio-pv namespace: opsspe ...
ceph
未读第一篇简单介绍了Ceph的架构,让我们对Ceph有了一个初步的印象。
接下来,我将在MAC上介绍如何基于本机搭建ceph集群及cephfs、cephrgw、cephrbd服务。
集群规划:
生产环境
至少3台物理机组成Ceph集群
双网卡
测试环境
1台主机也可以
单网卡也可以
本文使用虚拟机搭建集群,集群设置如下:
mon集群:
3台虚拟机组成mon集群
osd集群:
3台虚拟机组成osd集群
每台虚拟机上3个osd进程
mgr集群:
3个mgr进程
在部署之前,首先需要介绍前期环境的准备工作:
软件准备:VirtualBox,CentOS
安装虚拟机
克隆虚拟机
软件准备安装VirtualBox点击 VirtualBox Mac版本,下载VirtualBox,然后双击下载好的软件,按照提示一直安装即可。
添加网络安装好之后,需要添加一个网络,这样可以保证在虚拟机里也能正常上网。具体操作如下:
点击左上角的VirtualBox->偏好设置->网络->仅主机(Host-Only)网络->点击右边的绿色➕,一般会默认添加了vbox ...
Ceph架构简介最近工作中要使用ceph作为底层存储架构,故对其进行了一番调研,本篇乃ceph系列的第一篇。
转载说明: 【ceph 1 - 4 】转载自链接
CephCeph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
Ceph is a distributed object, block, and file storage platform.
使用Ceph系统可以提供对象存储、块设备存储和文件系统服务.
Ceph底层提供了分布式的RADOS存储,用与支撑上层的librados和RGW、RBD、CephFS等服务。Ceph实现了非常底层的object storage,是纯粹的SDS,并且支持通用的ZFS、BtrFS和Ext4文件系统,能轻易得Scale,没有单点故障。
Ceph特点
高性能a. 摒弃了传统的 ...
ceph
未读基于第三篇,我们搭建好了一个健康的ceph集群:
3个mon节点组成的mon集群
9个osd节点组成的osd集群
3个mgr节点(ceph luminous版本才有的)
3个mds服务(cephfs使用)
12345678910111213141516[root@ceph-1 ceph]# ceph -s cluster: id: c165f9d0-88df-48a7-8cc5-11da82f99c93 health: HEALTH_OK services: mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3 mgr: ceph-1(active), standbys: admin, ceph-2, ceph-3 osd: 9 osds: 9 up, 9 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0B usage: 965MiB used, 18.0TiB / 18.0TiB avail pgs:
本篇主要讲如 ...