Jenkins pipeline中正确使用git
看到很多 jenkins 使用都是直接执行 git clone 命令, 这么做有以下几个缺点. 需要耗费时间去处理 git 分支, 代码冲突等工作, 还需要判断是使用 git clone 还是 git pull 账号密码 (或者 ssh 秘钥) 需要存储在构建机器上, 如果更换了构建节点, 那么需要重新配置, 即对构建环境有依赖, 构建环境是个黑盒子, 因为你不知道上个维护者在这台构建机器上做了什么. 不受 jenkins 管理, 比如删除流水线, 拉取的代码任然存在机器上 做个分支选项框是个痛苦的事情将代码交给 jenkins 管理则省去了这些操作. 使用凭据管理账号密码在 系统管理 – 凭据 – 系统 – 全局凭据 里面增加一个新的凭据 成功后记录一下 ID 编写流水线 branch 不支持 origin/master 这种格式, 所以需要用 split 处理一下 如何生成流水线
Jenkins升级插件引发的血案
我们公司用的 jenkins 是老版本, 不知道什么时候谁点了升级插件, 但是没有重启 jenkins, 一直用者好好的, 突然有一天有个倒霉蛋重启了 jenkins,然后就报错了. 搜索了一圈的解决方案:关闭认证, 配置文件在 .jenkins/config.xml 目录中, 需要先切换到 jenkins 用户, 先备份 cp .jenkins/config.xml{,.bak} 然后再修改 将 authorizationStrategy 这一块改为 将 securityRealm 块 删除, 保存后重启 jenkins, 日志里会打印账号密码, 用这个登陆. 登陆后, 可以看到各种不兼容的插件了. 现在升级 jenkins 版本, 升级后可以看到插件都兼容了, 然后将有更新的插件都更新一下. 如果无法启动, 注意查看 jenkins 启动日志, 我公司升级后提示 java 版本不兼容, 需要将 java 8 升级到 java 11 才可启动新版 jenkins, 为了不影响现有流水线构建, 所以不修改环境变量了, 指定 java 版本来运行新版 jenkins 最后...
记录一次生产环境数据库迁移
迁移要求不要清理目标数据 迁移是老环境迁移到新环境, 新环境之前有过使用记录了, 要求不删除现有的数据, 将老数据导入。有以下几个问题: 导出的 sql 里面不能带 drop table 语句,所以在 mysqldump 的时候需要加上 --skip-add-drop-table 参数 主键或唯一键重复的问题,需要增加参数 --skip-extended-insert sql 执行失败了需要继续, 因为现有数据可能和老环境冲突, 所以插入失败不能影响其他数据的插入, 这里选择在 mysql 控制台执行 source 命令。 备份源数据库 –skip-add-drop-table 这个参数为了不在 sql 文件里面增加 drop 语句,不加的话,执行这个 sql 会先将表删掉,再重新创建。–skip-extended-insert 导出的 sql 一个 insert 对应一条数据。 如何将备份的 sql 发送到目标机器数据量较大,又受限于网络情况, 所以直接在服务器上导出后,使用 tar 压缩, 然后通过 nginx 将文件暴露出来,在目标机器上使用 wget 下载。 遇...
mac下实现快速登陆带有两步验证的ssh跳板机
我们有个堡垒机当前的登陆流程是: ssh username@ip -p port –> 输入密码 –> 打开手机 –> 查看两部验证码 –> 输入 –> 连接成功 解决输入密码的问题mac 因为安全问题使用 brew 已经无法安装 sshpass 这个包了, 我们可以使用 ssh key 来进行免密登陆并提高安全性。不同的跳板机平台设置方式不太一样,一般都是在个人信息设置里面增加 ssh 公钥。 输入密码还可以用一个叫 tssh 的开源工具来实现(兼容 openssh 且支持 lrzsz) 解决输入两步验证码的问题两步验证码就是 TOTP,基于生成的 6 位数字, 30s 更换一次, 我们需要先拿到 TOTP 的 seed, 一般都会给一个二维码,用二维码解析工具解析, 解析出来的内容大致类似于: secret= 后面的内容就是 TOTP 的 seed 使用脚本来生成两步验证码可以使用 python 的 pyotp 包 写入剪切板 然后登陆的时候直接粘贴就可以了。 最终效果~/.zshrc 里面的内容: 需要连接跳板...
使用echo server测试ingress-nginx服务
这个是 灰度的方案 创建正式环境的服务 创建灰度环境的服务 对灰度进行测试 输出大概类似于:
Prometheus标签处理
元标签在被监控端纳入普罗米修斯里面定义了一些元数据标签在 Prometheus 所有的 Target 实例中,都包含一些默认的 Metadata 标签信息。可以通过 Prometheus UI 的 Status 里面的 Service Discovery 查看 Metadata 标签 说明 address 当前 Target 实例的访问地址 host:port scheme 采集目标服务访问地址的 HTTP Scheme,HTTP 或者 HTTPS metrics_path 采集目标服务访问地址的访问路径 上面这些标签将会告诉 Prometheus 如何从该 Target 实例中获取监控数据。除了这些默认的标签以外,我们还可以为 Target 添加自定义的标签。 元标签是不会写到数据库当中的,使用 promql 是查询不到这些标签的,如果需要源标签的数据(比如 k8s 部署的 Prometheus 使用自动发现获取 pod 监控),这个时候就需要把一些元标签重新打标签来使用。 比如上图,监控 k8s 的 pod 状态, 因为 pod 是动态的,所以需要 ...
在Windows下以服务方式运行MySQL
下载本文安装的是 zip 包, 安装方式更灵活 下载地址: https://dev.mysql.com/downloads/mysql/ 创建配置文件在 mysql 根目录下创建 my.ini 文件,输入以下内容 (根据自己需求调整): 初始化数据库没有 data 目录的话, 需要先初始化才能继续其他操作. 然后在 data 目录下, 有个 <计算机名>.err 文件, 这个文件里面就包含了临时密码. 输入刚才看到的临时密码, 登录成功后执行以下命令修改默认 root 密码, 创建远程 root 用户 直接启动 (不推荐) 通过服务启动通过服务起的的话, my.ini 配置文件里面就不能写相对路径了. 安装服务 启动服务 停止服务 删除服务
Kubernetes的3中探针readinessProbe、livenessProbe和startupProbe
探针K8S 提供了 3 种探针 startupProbe 启动检查(1.16 版本新增)livenessProbe 存活检查readinessProbe 就绪检查 startupProbekubernetes 1.16 版本新增功能,用于判断容器内应用程序是否已经启动,如果配置了 startuprobe,就会先禁用其他的探测,直到它成功为止,成功后将不再进行探测。 readinessProbe一般用于探测容器内的程序是否健康,它的返回值如果为 success,那么就代表这个容器已经完成启动,并且程序已经是可以接受流量的状态. 这个时候就会被加到 service 的后端列表中,即可以对外提供服务。 livenessProbe用于探测容器是否运行,如果探测失败,kubelet 会根据配置的重启策略进行相应的处理,如果没有配置该探针,默认就是 success 检查方式httpgetkubelet 会向容器内运行的服务(服务在监听 8080 端口)发送一个 HTTP GET 请求来执行探测。 如果服务器上 /healthz 路径下的处理程序返回成功代码,则 kubelet ...
MySQL慢查询日志
慢 SQL 一般都是指慢查询 开启慢查询会带来一定的性能影响。参考: http://c.biancheng.net/view/7782.html 查询慢查询日志功能状态默认情况下,慢查询日志功能是关闭的。可以通过以下命令查看是否开启慢查询日志功能。命令和执行过程如下: slow_query_log: 慢查询开启状态slow_query_log_file: 慢查询日志存放的位置(一般设置为 MySQL 的数据存放目录)long_query_time: 查询超过多少秒才记录 启动和设置慢查询日志可以通过 log-slow-queries 选项开启慢查询日志。通过 long_query_time 选项来设置时间值,时间以秒为单位。如果查询时间超过了这个时间值,这个查询语句将被记录到慢查询日志。 修改配置文件方式将 log_slow_queries 选项和 long_query_time 选项加入到配置文件的 [mysqld] 组中。格式如下: 执行 sql 命令方式可以实时生效,无须重启 MySQL 删除慢查询日志慢查询日志的删除方法与通用日志的删除方法是一样的。可以使用 ...
webdav使用记录
在 windows 挂载到 z 盘映射坚果云 webdav, PERSISTENT:no 表示不会记忆映射, 重启会丢失. 通过 curl 使用 webdav上传文件 创建目录 重命名文件(移动文件) 删除文件

