使用gitlab + gitlab runner + nexus + k8s技术栈搭建devops全流程

版本清单

  • gitlab:12.8.1-ce.0
  • gitlab runner:v12.9.0
  • nexus:3.21.1
  • k8s:1.17.4
  • istio:1.5.1

前提条件

  • maven镜像未使用官方的,而是基于JDK镜像自己创建,原因是官方的镜像对于配置全局mirror没有找到简单方便的办法
  • kubectl官方没有镜像,当前使用的是:bitnami/kubectl

安装过程

gitlab

  • 使用compose安装:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  gitlab:
    image: gitlab/gitlab-ce:12.8.1-ce.0
    ports:
    - '22:22'
    - '80:80'
    - '443:443'
    volumes:
    - /data/gitlab/config:/etc/gitlab
    - /data/gitlab/logs:/var/log/gitlab
    - /data/gitlab/data:/var/opt/gitlab
    container_name: gitlab
    restart: unless-stopped
  • gitlab.rb配置文件修改:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
external_url 'https://ip'

gitlab_rails['time_zone'] = 'Asia/Shanghai'

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'xxx@xxx.xxx'
gitlab_rails['gitlab_email_display_name'] = 'xxx'

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.xxx.xxx.xxx"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxx@xxx.xxx"
gitlab_rails['smtp_password'] = "********"
gitlab_rails['smtp_domain'] = "xxx.xxx"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

user['git_user_name'] = "GitLab"
user['git_user_email'] = "xxx@xxx.xxx"

nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80

nginx['ssl_certificate'] = "/etc/gitlab/trusted-certs/xxx.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/trusted-certs/xxx.key"

mysql federated引擎使用

跨服务器操作mysql数据库的需求,mysql提供了federated引擎,进行表映射,然后进行操作

步骤:

  1. 确认federated引擎是否启用,执行:show engines查看引擎状态,找到federated的Support,默认是关闭的,即NO

    [阅读全文]

IntelliJIDEA常见问题

IntelliJ IDEA常见问题

  • 去掉拼写检查 Settings → Editor → Inspections → Spelling,去掉勾选
  • 找不到或无法加载主类 Project Structure → Modules → 删除对应模块右边的文件夹
  • 修改代码提示快捷键(Windows) Settings → Keymap → Main menu → Code → Completion → Basic,Basic默认快捷键为Ctrl + space,与Windows切换输入法冲突,可改为Eclipse中的Alt + /(如果Alt + / 被Cyclic Expand Word占用,需要先改一下)
  • 设置项目默认路径 Appearance & Behavior → System Settings → Project Opening
  • 设置默认tab Editor → Code Style → Java/XML等,勾选Use tab character和Smart tabs

常用快捷键

  • 优化导入:Ctrl + Alt + O
  • 找当前方法被调用的地方:Alt + F7
  • 全局查找:Double Shift
  • 定位当前方法的实现类:Ctrl + Alt + B
  • 自动生成代码:Alt + Insert
  • 格式化:Ctrl + Alt + L
  • 复制行:Ctrl + D
  • 删除行:Ctrl + Y
IDEA 

(转)长期当程序员会失去什么?

【高赞回答】

耐心。

对于废话的耐心。 对于忽悠的耐心。 对于重复的耐心。 对于低效的耐心。 对于商务人士寒暄的耐心。 对于逻辑混乱的耐心。 对于不懂装懂的耐心。 对于场面话的耐心。 对于不准确的耐心。 对于不一致的耐心。 对于矛盾的耐心。 对于慢的耐心。 对于笨的耐心。 对于一切触及不到实质,却绵延不绝,浪费我时间的人,事,话的耐心。 可我原本是挺有耐心的人。

[阅读全文]
 

InSide The Linux Kernel

作者Daniel Stori花了一幅漫画 “InSide The Linux Kernel” 。来自 TurnOff.us。贼生动形象了,一起来看看吧。

我们先来看看这幅漫画的全貌!

这幅漫画是以一个房子的侧方刨面图来绘画的。使用这样的一个房子来代表 Linux 内核。

[阅读全文]

emqx集群搭建

最近使用emqx替换原来mosca,公司要求搭建集群模式,本文记录简要过程。

EMQ X 版本支持多种策略的节点自动发现与集群:

策略 说明
manual 手工命令创建集群
static 静态节点列表自动集群
mcast UDP 组播方式自动集群
dns DNS A 记录自动集群
etcd 通过 etcd 自动集群
k8s Kubernetes 服务自动集群

想尝试manual,终觉太麻烦,直接放弃;试过mcast,在同一个compose内还可以,跨机则不行,估计是因是docker网桥在与跨机器的组播是有问题的,没有深究,但还是很看好这种方式的,以后如果能做基于k8s的集群可以继续研究一下;nds/etcd/k8s因为目前没有涉及,只放放弃;那么就剩下static,规模不是太大的情况下,也不是太麻烦,简单记录一下:

[阅读全文]
emqx  mqtt  docker 

go 1.13开发环境搭建

进入项目目录:go mod init

设置环境变量:GOPROXY=“https://goproxy.io,direct”

运行go get的时候,发现报410 gone的错误,目前网上查到的资料都是扯淡,查官方文档,在1.13版本加了版本验证,官方说如果因为防火墙或代理问题验证不了,可以添加环境变量:GOSUMDB=off关闭验证。记得:命令行窗口需要退出重新打开才能生效!!!

[阅读全文]

添加nginx stub_status

获取Nginx运行状态数据,添加以下配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
location /stub_status {
	stub_status on;

	# 密码验证
	auth_basic "stub status";
	auth_basic_user_file /etc/nginx/.htpasswd;

	# 限制IP访问
	allow	?.?.?.?;
	deny	all;

	access_log off;
}

密码验证的账号和密码生成:

[阅读全文]

Prometheus探针node_exporter和mysqld_exporter服务化安装

Prometheus + Grafana已经搭建完成,之前嘱咐下面的人把探针装上,昨天做压力测试,发现数据经常中断。一查才知道,使用的是比较老的版本,而且各服务器版本还不一致,有些与当前监控模板并不一定兼容;一部分竟然是前台启动,ssh断了程序就停了……还有一部分是nohup xx &启动的,那么每次开机都要手动运行?很无语,什么事都要自己亲自来才放心

[阅读全文]