1. CoreDNS 是什么

img
CoreDNS官网
CoreDNS开源

CoreDNS是Golang编写的一个插件式DNS服务器,是Kubernetes 1.13 后所内置的默认DNS服务器
采用的开源协议为Apache License Version 2
CoreDNS也是CNCF孵化项目,目前已经从CNCF毕业。
CoreDNS 的目标是成为 Cloud Native(云原生)环境下的 DNS 服务器和服务发现解决方案。
你被爬虫啦,原文去https://www.iamle.com看
官方口号
CoreDNS: DNS and Service Discovery
DNS和服务发现

2. CoreDNS功能特性

2.1 插件化(Plugins)

CoreDNS插件链。 每个插件都执行DNS功能,例如Kubernetes服务发现,Prometheus指标或重写查询。
还有非常多的其他插件,插件是CoreDNS核心理念就是插件化

简单(Simplicity)

努力把配置文件变得简单
采用了Caddy中的DSL配置方案,即 Corefile 形式的配置文件
一个最简单的配置文件可以为:

2.2 服务发现 (Service Discovery)

核心域名系统通过Kubernetes插件与Kubernetes集成,或者通过etcd插件直接与etcd集成。
还有redis插件等

快速和弹性 ( Fast and Flexible)

我们的目标是使CoreDNS快速高效。 它的插件也很灵活。 您可以只使用所需的插件编译CoreDNS。

3. 配置一个内网自定义的服务化域名

假设需要在内网实现
sms.service A记录 10.6.6.2
search.service A记录 10.6.6.3
你被爬虫啦,原文去https://www.iamle.com看
我们为CoreDNS手动增加解析记录
那么Corefile配置文件为
/etc/coredns/Corefile

运行CoreDNS

dig测试CoreDNS的自定义dns解析

可以看到 sms.service 的A记录已经为10.6.6.2

更多配置探索参考CoreDNS官方手册

4. 部署

这里可以找到基于k8s,基于systemd的部署文件参考
CoreDNS部署参考

安装

增加运行账户

systemd的coredns配置文件
/usr/lib/systemd/system/coredns.service

实际上CoreDNS编译出来的是一个单二进制文件
二进制文件+配置文件就能跑了,部署起来非常简单

5. 参考

CoreDNS 使用与架构分析

前言

不管是PHP各种框架的日志
还是java的 Java Stack Traces
他们都是多行日志模式
这个时候如果使用
filebeat + elasticsearch + kibana 做日志的采集,存储,展示那么就需要用到
filebeat的 multiline 配置
一词日志是多行记录,其实这种多行的日志会有日志分段的分隔符
写出对于的分隔符正则即可解决filebeat采集一次日志记录为多行的情况

配置示例

例如我们有日志文件

分析日志后得出某一次日志通过什么标识作为分隔符

filebeat中配置文件
/etc/filebeat/filebeat.yml

写正则的时候推荐用正则可视化工具检查正则
例如本文的正则

扩展

这种非自己能定义的日志,思路是寻找多行日志分段规律写出对于的正则即可
那么自己打日志的情况下,不太推荐这种多行日志了,采用结构化的json日志,一行一条是比较推荐的方式
这样在后期的处理分析中将会便利太多太多

参考

Filebeat Reference [7.0] » Configuring Filebeat » Manage multiline messages

前言

使用golang实现一个简单的http/https代理服务器
支持http代理
支持https代理 (https代理为直通模式,直接原样转发)

全部代码

curl验证

参考资料

1. 前言

云端开发环境 云端开发环境安装 搭建云ide 远程调试开发
一直想建立一个云端开发环境
有以下尝试,以及目前用的最终方案
仅供参考

2. 常见云端IDE环境

2.1 SSH+VIM

此乃一苇渡江,vim高手首选方案
但是对于vim只停留在基础的配置文件修改水平,习惯了vscode/Jetbrains全家桶后就不太适应这种需要较高学习和配置曲线的方案了
有人说你可以用一些预制vim配置,实际用起来你还是需要去熟悉和调整的,要花大把时间的

2.2 AWS Cloud9

Cloud9官网
可以用AWS的云端服务,也可以私有部署
如果为了环境干净可以自己打docker镜像
哪有本地IDE工具功能强大啊
img

2.3 CodingIDE(Cloud Studio)

Cloud Studio官网
Cloud Studio – 开启云端开发模式WebIDE
可用云端服务,目前已经卖给腾讯云了,也可以私有部署(暂不清楚开源版还在更新没),功能上弱于AWS Cloud9
哪有本地IDE工具功能强大啊
img

2.4 code-server

code-server官网
这货是vscode的服务端运行版本
使用基本和本地vscode保持一致,功能上强于 Cloud9和CodingIDE
当然自己也可以打docker镜像使用,不过打docker镜像有个弊端,就是开发环境变更问题
虽然开发环境几乎不会这么变,但是终归还是会有变动的,如果用docker的方式,每次变更都去同步修改Dockfile打镜像还是烦的
img

2.5 Linux Desktop + VNC + noVNC

选一个自己喜欢的Linux桌面发行版,装VNC server,再装一个noVNC让VNC在web浏览器中可以访问
Linux Desktop 我选的 Kali,他基于debian定制的, 主打安全并集成了较多安全方面的工具
图形化选的Xfce
和本地开发完全一致,想用什么IDE用什么IDE
img

3. 结论

对vim非常熟悉那么随便一个vps/vm虚拟机就开干
有条件开虚拟机的建议开vm虚拟机用Linux桌面版本
不能自己开虚拟机但是有vps/vm虚拟机用的可以装 code-server 用
喜欢让系统干干净净的处女座也不怕麻烦可以把code-server、Cloud9等打docker镜像用

没有最好,只有最适合,满足自己需求即可
个人最终选的方案5

4. 扩展

另外一个知识点,docker中是可以用桌面版的,这个大多数人都不知道
例如实验楼这个网站中的实验环境其实就是docker中运行的Linux桌面
搜索关键字“docker linux desktop”获取跟多的信息
要用docker中的Linux桌面版,可以采用VNC + noVNC的方式

前言

Caddy 是一款用golang编写的轻量级web server

老早就看到caddy web server,但是找不到去用的理由,因为nginx足够好
如果用docker打包应用,如果要实现跑php php-fpm应用且要单容器,用nginx就不太爽了
一般用php官方docker镜像作为base,然后在上面再装nginx,nginx复杂的编译环境非常麻烦
试用了下 caddy,他就没那么麻烦,还是用php官方docker镜像,然后只需要简单的几行就可以把caddy加进去
非常特别的一点是caddy自带php-fpm的进程启动
在配置文件中增加on startup php-fpm —nodaemonize 即可
容器的入口只需要启动caddy即可,caddy可以自动启动php-fpm进程
目前发现唯一的问题是caddy对个人免费,对公司和商业收费,价格还非常贵
下面是一些参考文件

Dockerfile 参考

Caddyfile 参考

www.conf

其他

在dockerfile中,是直接下载的caddy二进制程序,这个会受到caddy的授权协议影响,对个人免费,对商业收费
如果是基于源码自己编译安装那么就只需要遵守Apache license协议即可,即可以用于商业

常见应用框架配置参考
https://github.com/caddyserver/examples

cady缺省(占位符)变量
https://caddyserver.com/docs/placeholders

1. 前言

filebeat 6.6.2 nginx module自定义字段
filebeat提供了多种Module预制模块,简化了各种日志的格式化
在nginx中默认的字段并不满足实际需求,例如我们需要记录额外的Nginx字段
例如 请求时间、后端响应时间、主机头等信息
那么在filebeat的nginx module中需要同步定义

2. rpm模式安装filebeat

3. Nginx 自定义Log格式化

nginx原始log格式化定义:

nginx自定义格式化log:

4. 启用filebeat的nginx module

执行

filebeat nginx module 增加字段
文件 /usr/share/filebeat/module/nginx/access/ingest/default.json 中
原始:

自定义修改:

如果定制自己的字段
可以使用http://grokdebug.herokuapp.com/ 在线工具验证grok规则
可以使用Json工具处理转义问题

文件 /etc/filebeat/fields.yml 中
找到nginx字段配置

在后面增加

5. Filebeta中 nginx 日志路径定义

在文件 /etc/filebeat/modules.d/nginx.yml 中修改日志路径

6. 扩展

6.1 解决增加字段后Kibana中不显示

  • 在Kibana的 Dev Tools中执行

  • 字段出来以后有黄色小三角,刷新一下index 的字段缓存就好了
  • 重启下Filebeat
    方法来源