如何优雅的使用DockerFile
此教程以个人博客为例,提供些自己使用的技巧,并分享几个以前用过的示例
一般需要两个镜像
基础镜像,里面安装好打包环境,并下载依赖包,可以写脚本定时更新基础镜像
服务运行环境,比如我博客需要个 nginx 服务,golang 的话选好系统直接运行就行
1 基础镜像制作1234567891011121314FROM node:16.14.2-alpine3.15 # 获取npm环境镜像RUN npm config set registry http://registry.npm.taobao.org/ && \ # 修改镜像源,要不下依赖包特别慢npm i -g npm@8.8.0 && \ # 更新npmnpm i -g hexo@5.4.2 && \ # 安装hexpmkdir /opt/blog && \ # 创建博客打包目录cd /opt/blog && \ # 进入博客目录 hexo i && \ # hexo初始化 rm -rf source _config.landscap ...
记录以前写的Jenkins pipeline
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
Jenkins配置钉钉告警
1 安装钉钉插件需要使用 DingTalk 插件,安装步骤如下:
登录 jenkins,选择【系统管理】–》【插件管理】–》可选插件 搜索到以后选中安装即可。
2 配置插件【系统管理】–》【配置】–》钉钉
3 pipeline 中使用12345678910111213141516171819202122232425pipeline { agent any stages { stage('Build and Push Image') { steps { sh '/usr/local/bin/kubectl --kubeconfig=/var/lib/jenkins/.kube/devconfig rollout restart deployment ${JOB_NAME} -n rongxin' } post { s ...
监控ingress服务访问日志
1 配置 ingress ConfigMap1234567891011121314151617181920212223242526272829303132333435363738394041log-format-upstream: |- {' '"msec": "$msec", ' # request unixtime in seconds with a milliseconds resolution '"connection": "$connection", ' # connection serial number '"connection_requests": "$connection_requests", ' # number of requests made in connection '"pid": &quo ...
如何优雅的使用SonarQube
1 安装 SonarQube 服务器helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n devops --create-namespace --set image.tag=8.9.1-community
1.1 配置 SonarQubeingress 访问cat sonarqube-ingress.yaml
123456789101112131415161718192021222324kind: IngressapiVersion: extensions/v1beta1metadata: name: sonarqube-ingress namespace: kubesphere-devops-system annotations: kubesphere.io/creator: admin nginx.ingress.kubernetes.io/proxy-body-size: 30M #很重要,不加会上传不了扫描结果 nginx.ing ...
Prometheus监控RocketMQ
1 安装 agent指标说明
名字
暴露信息
rocketmq_producer_tps
每秒每个主题生成的消息数
rocketmq_producer_message_size
主题每秒生成的消息的大小(字节)
rocketmq_producer_offset
主题生成消息的进度
rocketmq_consumer_tps
消费者群体每秒消耗的消息数
rocketmq_consumer_message_size
消费者群体每秒消耗的消息大小(字节)
rocketmq_consumer_offset
消费群体消费信息的进展
rocketmq_group_get_latency
消费者延迟对一个队列的某个主题
rocketmq_group_get_latency_by_storetime
消费群体的消费延迟时间
rocketmq_message_accumulation
消费者抵消滞后程度
rocketmq_client_consume_fail_msg_count
消耗的消息数量在一小时内失败
rocketmq_client_consu ...
Jenkins权限管理
1 安装权限管理插件1.1 安装 Role-based Authorization Strategy 插件登录 jenkins,选择【系统管理】–》【插件管理】–》可选插件 搜索到以后选中安装即可。
安装好以后重启 jenkins。
1.2 设置权限1.3 菜单–【系统管理】》【Manage and Assign Roles】
打开以后会有三个选项:
Manage Roles 可以理解为是用来编辑权限的
Assign Roles 用来管理用户权限的,可以理解为把编辑好的权限给用户使用
Role Strategy Macros 角色策略宏,没有用到
1.4 Manage Roles 管理角色编辑全局用户权限 Global roles
必须创建一个 admin 角色,把所有的权限都给他。
添加 user 角色,分配 Overall(全部)的 Read 权限权限
编辑项目权限
1.5 添加项目组,分配 Job 的 Read 权限。可根据需要自己调整权限范围使用通配符配置,可保证后面添加项目时,只要按照设定的前缀作为项目名,则可以按照设定的权限显示给授权后的用户。 pattern ...
如何优雅的使用SkyWalking
1 架构设计
2 通过 helm 部署 skywalking
2.1 下载代码
git clone https://github.com/apache/skywalking-kubernetes.git
cd skywalking-kubernetes/chart/
values-es6.yaml 、values-es7.yaml 和 values-my-es.yaml,分别对应使用 es6、es7 和 外部 es 存储的配置。这里使用的是外部自有的 es 集群,并且 es 的版本是 7.10.0
2.2 自定义配置
Chart.yaml文件dependencies字段里删除postgresql
2.2.1 使用自搭建es
cat skywalking/values-my-es.yaml
123456789101112131415oap: image: tag: 8.5.0-es7 # skywalking版本,用哪个版本的es storageType: elasticsearch7ui: image: tag: 8.5.0elastic ...
Kubernetes日志收集
1 安装loki1.1 更新配置文件1.1.1 配置集群参数12345678910111213141516171819memberlist: join_members: ["loki-1", "loki-2", "loki-3"] dead_node_reclaim_time: 30s gossip_to_dead_nodes_time: 15s left_ingesters_timeout: 30s bind_addr: ['0.0.0.0'] bind_port: 7946ingester: chunk_idle_period: 3m chunk_block_size: 262144 chunk_retain_period: 1m max_transfer_retries: 0 lifecycler: join_after: 60s observe_period: 5s ring: kvstore: store: memberlist ...
ArgoCD+Jenkins持续集成
小记:这篇文章包含知识点有点多,后面文章会提到。这篇文章主要是给公司内部开发看的,包含知识点有 Jenkins,gitlab,KubeSphere,helm,Argo 等技术
1 技术背景
传统部署方案更新服务太慢,因为流程里有拉取代码,打包,制作镜像,上传与拉取镜像,启动服务。新的部署方案可以提前打包,制作并上传镜像。更新服务的时候只有拉取镜像与启动服务的操作。
传统部署方案需要部署一个服务审批一次,增加多余的人为操作。新的部署方案点一下所有服务并行部署
传统部署方案没有开源的部署大盘,不能详细的查看集群状态。新的部署方案集成部署大盘
传统部署方案多个集群,多个项目维护复杂。新的部署方案一个页面可以看到多个项目与集群的情况
新方案通过 gitops 保证服务编排文件不会变动,并提供备份
传统部署方案回滚麻烦,就算预先写好策略也只能回滚一次,执行了在想回滚只能找运维。新的部署方面回滚简单
新的部署方案灰度发布过更优雅。并且可以分流,如百分之 80 的流量都访问新部署的节点(但是 dubbo 架构不云原生,无法体验到,只能根据数量做流量权重,比如新节点 1 个,老节点 3 个,百分之 ...