开发者
BashFAQ/105 – Greg’s Wikiset -e
可能存在意外行为,需要小心处理。
最近发现阿里云 99 计划的数据库,竟然包含香港地区,于是又冲动消费了。整了一个给 K3s 玩,试试它的 HA 模式。不过现有的节点很多都不在阿里云内网,需要开放数据库的公网访问才可以。开放数据库公网访问必然要开启 SSL 了,不然数据直接在公网上面明文传输十分危险。
一开始我直接在阿里云 RDS 控制台上启用 SSL,使用默认的云端证书,然后先用 Grafana 去尝试连接,发现无法成功校验证书,报错:
Error: ✗ failed to connect to database: tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead
猜测默认的云端证书只有在 Common Name 字段带上了数据库连接地址,而 Go 1.15 之后需要从 Subject Alternative Names 中进行校验,综合考虑后决定使用自签证书。
平时 OpenSSL 用得不多,于是直接使唤 AI 干活:
openssl genpkey -algorithm RSA -out ca-key.pem
openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -days 3650 -subj "/CN=MySQL CA"
openssl genpkey -algorithm RSA -out server-key.pem
openssl req -new -key server-key.pem -out server-req.pem -subj "/CN=rm-foo.mysql.rds.aliyuncs.com"
openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650 -extfile <(printf "subjectAltName=DNS:rm-foo.mysql.rds.aliyuncs.com")
然后在 RDS 控制台上传生成的服务端证书就可以了。
我们需要先将上面生成的 CA 证书先挂载到 Grafana 容器中,然后参考官方文档进行配置,使其可以经由 TLS 连接数据库。
我的 Grafana 是使用官方的 Helm Chart 部署的,其提供了一个可以注入 ConfigMap 的配置项,因此我们先创建一个包含了 CA 的 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: null
name: grafana-database-tls-ca
namespace: monitoring
data:
certificates.crt: |
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
然后在 values.yaml 中配置挂载它:
extraConfigmapMounts:
- name: database-tls-ca
mountPath: /etc/grafana/ssl/
subPath: certificates.crt
configMap: grafana-database-tls-ca
readOnly: true
这样的话,CA 就已经被挂载到 Grafana 容器中了。接下来我们需要配置 Grafana 以开启 TLS,同样,这里也是在 values.yaml 中配置就行。
grafana.ini:
database:
type: mysql
host: rm-foo.mysql.rds.aliyuncs.com
ssl_mode: true
ssl_sni: rm-foo.mysql.rds.aliyuncs.com
server_cert_name: rm-foo.mysql.rds.aliyuncs.com
ca_cert_path: /etc/grafana/ssl
user: $__file{/etc/secrets/grafana-database/username}
password: $__file{/etc/secrets/grafana-database/password}
如果配置没有问题的话,此时执行更新之后应该就可以了。
同样,官方文档给出了配置项。我们需要先把刚才的 CA 证书复制到 K3s server 服务器上,然后修改启动脚本。
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--flannel-backend=wireguard-native --disable=servicelb --disable=traefik --disable=metrics-server" \
sh -s - server \
--datastore-endpoint="mysql://username:password@tcp(host:3306)/database" \
--datastore-cafile="/usr/local/share/ca-certificates/mysql.crt" \
--flannel-external-ip \
--node-ip 1.2.3.4 \
--kubelet-arg=node-ip=0.0.0.0
因为配置变化,安装脚本会更新配置并重启 K3s。如果配置没有问题,K3s 会正常启动。
如果全部的工作负载已经迁移至 TLS 连接,那么我们就可以配置数据库特定用户必须使用加密连接。
ALTER USER k3s@'%' REQUIRE SSL;
FLUSH PRIVILEGES;
配置生效之后,我们可以重启工作负载进行验证。
为了行文的连贯性,我把这段放到了这里。你可能会想到几个问题:
Q:为什么不直接 skip-verify?省得折腾半天。
A:不安全,这不是我的风格。而且根据 K3s 文档,其至今仍然暂时无法跳过证书检查。虽然 K3s 的数据库读写垫片 kine 项目已经有人实现了 skip-verify 选项并且已经合入主干+发布,但是当下等待 K3s 支持还早,感兴趣的可以看下面的链接。
k3s can’t utilize tls option with mysql external database · Issue #1093 · k3s-io/k3s · GitHub
Add support for TLS skip verification by tuxillo · Pull Request #306 · k3s-io/kine · GitHub
Q:为什么不使用 GODEBUG=x509ignoreCN=0
环境变量使其可以校验 CN 而不是 SANs?
A:Go 从 1.15 开始校验 SANs 而不是 CN,从 1.17 开始将会移除这个选项,出于长远考虑我不会这么做。
Configure Grafana | Grafana documentation
How do I use SANs with openSSL instead of common name? – Stack Overflow
Complete list of environment variables on Windows 10, 11 – Pureinfotech
Incident communication best practices | Atlassian
腾讯云 4g 服务器实际可用内存只有 3.3g – V2EX
kdump 有预留 128MB 内存,如果不需要可以考虑关闭。
DIY 一个运维神器 Open IP-KVM – 知乎
DIY PiKVM V2 – PiKVM Handbook
Proxmox VE 8 换源 | fallen’s attic
Proxmox VE 8 配置国内软件源并删除订阅弹窗 – Song`s Blog
SSH ProxyCommand example: Going through one host to reach another server – nixCraft
tls-san parameter won’t change · Issue #4149 · k3s-io/k3s
kubernetes – How to add a domain to k3s certificate – Server Fault
最近为 K3s 集群添加了入口域名来实现负载均衡,中途 tls-san 长时间未刷新,原因还未细究。
排除指定连接的FastTrack加速 – YuS
RouterOS 开启 fasttrack 后,如果有 mangle 表修改后的连接被 fasttrack,会导致连接异常,所以可以根据 connection mark 或地址等元素进行排除。
三摸 k3s: 正式部署 · Issue #320 · Bpazy/blog · GitHub
coredns/plugin/template/README.md at master · coredns/coredns · GitHub
可以根据正则提取并转换成解析记录,非常方便。
Coping with the TCP TIME-WAIT state on busy Linux servers
4.14 tcptwreuse 为什么默认是关闭的? | 小林coding
tcp_tw_recycle and tcp_tw_reuse | Nyo’s Study Book
sukka: “Go 1.23 默认为 crypto/tls 启用了实验性质…” – ACG.MN
Go 1.23 默认为 crypto/tls 启用了实验性质的「后量子时代加密 Cipher」X25519Kyber768Draft00,导致通过 Go 1.23 内置的 TLS 实现发送的 TLS Client Hello 从典型的 252 bytes 激增到 1476 bytes。对于一些未正确配置的防火墙或 LB 来说,这会导致使用 Go 1.23 + Go 内置 TLS 实现的客户端 TLS 握手失败。
目前已知的相关 issue 有:AWS 基于 Suricata 的防火墙会默认丢弃过长的 TLS Client Hello 导致 Go 1.23 编写的应用无法访问 AWS API( https://github.com/hashicorp/terraform-provider-aws/issues/39311 );AdGuardHome 及其其使用的 DNS 转发库 adguard/dnsproxy 无法和 DNSPod 公共 DNS 的 DoH 和 DoT 完成 TLS 握手(https://github.com/AdguardTeam/AdGuardHome/issues/7357 、 https://www.v2ex.com/t/1094021#reply0 )。
Ending OCSP Support in 2025 – Let’s Encrypt
没赶上旧的考题,只能硬着头皮上了,不然马上就过期了😅。确实变化挺大,网上这些题库已经很多都不适用了,反而是那个 Killer.sh 的模拟题很多跟真题差不多。
云原生|kubernetes|2022年底cks真题解析(1-10)-阿里云开发者社区
云原生|kubernetes|2022年底cks真题解析(11-16)-阿里云开发者社区
groovy – IllegalArgumentException: Expected named arguments (Jenkins) – Stack Overflow
最近在 Jenkins 上抄了个官方博客里的并行过程总是报错,改成这样能跑,但还没时间研究原因。
Packet filtering and firewalls | Docker Docs
使用 -p 参数暴露的端口,其使用 dnat 实现,故无法在 filter 表 input 链中直接拦截,Docker 提供了一个 DOCKER-USER 链用于管理此类规则。
grub2 – Set “older” kernel as default grub entry – Ask Ubuntu
A kernel code of conduct enforcement action [LWN.net]
GitHub – p8952/bocker: Docker implemented in around 100 lines of bash
一次 k8s coredns UDP 通信故障分析(conntrack 篇)
WireGuard 基础教程:wg-quick 路由策略解读 · 云原生实验室
这个配合 ip rule
的实现,个人认为非常优雅。
SOCKMAP – TCP splicing of the future (cloudflare.com)
splice() performance for TCP socket forwarding — Netdev (spinics.net)
8.10. NIC Offloads | Red Hat Product Documentation
Playing along with NFTables – openSUSE admin – openSUSE Project Management Tool
nftables 入门:从配置文件到端口转发 | Rachel’s Blog | Rachel030219 (rachelt.one)
IPv6 Prefixes – MikroTik
家宽固定 ipv6 前缀实现静态公网 – V2EX
ROS 路由能给家宽固定 IPV6 前缀? – V2EX
以前一直没搞懂为啥华为等光猫可以固定长时间一个 IPv6 前缀不变,现在才知道可以使用 Prefix Hint 使得网关获取到一个相对固定的前缀。
Major Change Notice: New Package Manager – Release and security announcements – OpenWrt Forum
讓你的 Container Image 逃脫 Kubelet Image GC 的魔掌 | hwchiu learning note
kubernetes – Insert multiline json string into helm template for base64 encoding – Stack Overflow
非二进制的 secret,可以使用 stringData,更方便。
Unlocking Advanced Image Management with ArgoCD and ArgoCD Image Updater | by Kittipat.Po | Medium
CoreDNS image cannot be pulled when use –image-repository · Issue #2714 · kubernetes/kubeadm
如果需要在自建集群上换镜像仓库,且遇到 CoreDNS 无法拉取的问题,可以配置 ClusterConfiguration 中的 imageRepository 和 dns.imageRepository。
Troubleshooting Cilium deployed with Argo CD — Cilium 1.17.0-dev documentation
Argo CD out of sync due to Cilium Identity | by Rojenshrestha | Medium
使用 ArgoCD 时发现始终处于未同步状态(OutOfSync),查看 diff 发现有 cilium 资源不断被删除和重建,可以直接在 ArgoCD 中配置忽略。
Rust编写的跨平台UI框架——Tauri正式发布2.0稳定版,是时候把“毒瘤”Electron换掉了 (qq.com)
Jenkins CasC role strategy can’t get permissions working correctly – Stack Overflow
Get rid of Another update is currently in progress – WordPress Development Stack Exchange
powershell – “Extend my Windows desktop onto this monitor” programmatically – Stack Overflow
远程时,某远程软件限制只能一个桌面且不让切换,只好终端里切成复制显示…
https://mt.lv/hex_october
MikroTik 新款hEX E50UG – YuS (irouteros.com)
RB750Gr3 的继承者发布了,感觉可以买几个玩玩。
双十一固态硬盘购买推荐 V1.1:企业级、消费级旗舰、性价比型号,以及终极的洋垃圾灵车_哔哩哔哩_bilibili
谁也成为不了中国的 YouTube-品玩 (pingwest.com)
Infuse 8 – Now Available | Firecore
Eric Zhang – Resume (ekzhang.com)
HTP 笑传:扔掉 UDP,试试并不特殊的低精度时间同步 – 翰林的小站 (hanlin.press)
谨防恶作剧者!使用这个KEY激活Windows 10/11会导致系统循环崩溃只能重装 – 蓝点网 (landiannews.com)
推荐一个 浏览器拓展 Wayback machine (nodeseek.com)
不过为啥老是被打?
OPA Gatekeeper 筆記整理 – I | 野生的工程師 (hazel.style)
Docker network and network namespaces in practice — Learn Docker documentation (it-sziget.hu)
+UseContainerSupport to the Rescue (atamanroman.dev)
JVM Kubernetes: Optimizing Kubernetes for Java Developers – Pretius
Should we set -Xmx (max java heap size) in a kubernetes container – Stack Overflow
Java 8 在 191 版本之后支持从容器资源限制中读取内存 limits,并将其值的 25% 设置为堆空间的最大值,这个限制在很多情况下可以放宽至 75% 以提升性能。
Loki被限流了,Limits_Config到底限了个啥?-腾讯云开发者社区-腾讯云 (tencent.com)
Request Validation and Rate-Limit Errors | Grafana Loki documentation
ingestion rate limit exceeded · Issue #1923 · grafana/loki (github.com)
Nginx反向代理,当后端为Https时的一些细节和原理 – XniLe – Ops 2.0 (dianduidian.com)
继 Safari 和 Chrome 之后,Firefox 也将禁用 HTTP / 2 服务器推送 – IT之家 (ithome.com)
CD4:Windows XP 开发宝典 – Skywind InsideSkywind Inside
【鹅厂网事】全局精确流量调度新思路-HttpDNS服务详解 (qq.com)
Man pages maintenance suspended [LWN.net]
Intel Core 13th and 14th Gen Desktop Instability Root Cause Update – Intel Community
Google calls for halting use of WHOIS for TLS domain verifications – Ars Technica
第一次听说 WHOIS 也能用来认证…
看准网宣布9月30日关服! (qq.com)
有点不可思议的感觉,曾经也是用户。
ZTE F7005tv3 上海移动双拨 & RTL8125BG 直通 RouterOSv7.15 全面攻略~[完整版] –
GitHub – Septrum101/zteOnu
跟风搞了个 7005,用着还可以。🤣
China Telecom Global Infrastructure Map
China Unicom Global Map
CMI Global Resources
终于等来了好便宜的华为2.5G网口的光猫HN8145X6N拆机 – 路由器交流
使用 systemd timer 取代 crontab – HackMD
linux – Systemd http health check – Stack Overflow
linux – systemd ignores a systemd-notify call that a service is sending – Stack Overflow
Using systemd services of Type=notify with Watchdog in C – Hackeriet Blog
利用 systemd 的 watchdog 功能重启卡住的服务 – 依云’s Blog
最近有个古董服务需要做健康检查,发现可以使用 Systemd 搞个定时任务处理。其也自带看门狗机制,但是需要内部有喂狗实现。
NB!小哥竟然绕过安全启动,Dump掉了SoC的BootROM。
CVE-2024-42219 for 1Password 8 for Mac
Kubernetes微服务架构的演进与优化——从Ingress到Istio
Kubernetes cluster with firewall enabled on CentOS(calico) not working – Stack Overflow
第一次知道防火墙规则里面接口名称支持通配符…
从山西联通到组播IP:七牛云的奇怪视角(附分析和后日谈) – 翰林的小站
打造梦幻HomeLab网络 – 办理广州移动互联网专线 & 合规备案建设Web服务
(图一乐)绿联NAS配置雷电网桥(适用于DXP6800 Pro及以上机型)
regreSSHion: RCE in OpenSSH’s server, on glibc-based Linux systems (CVE-2024-6387)
利用CVE_2024_0044获取手机(Android12/13)上的应用数据-Android安全-看雪-安全社区|安全招聘|kanxue.com
Linksys Velop routers send Wi-Fi passwords in plaintext to US servers
推荐一本书:《容器网络:从 Docker 到 Kubernetes》
这就叫“面试造火箭,工作拧螺丝!”
笑死我了,太真实了。关注这位作者有段时间了,很有趣。
用PG的开发者,年薪比MySQL多赚四成?
冯总别骂啦😅
一行超长日志引发的 “血案” – Containerd 频繁 OOM 背后的真相
Keylogger discovered in image generator extension | Hacker News
GitHub – datawhalechina/llm-cookbook: 面向开发者的 LLM 入门教程,吴恩达大模型系列课程中文版
Common Crawl中文数据提取出来了,做了去黄等处理,发现简体中文压缩数据只有6TB,解压后30TB左右,繁体压缩数据6TB。
中文数据到2019年冲到一个最大值,之后就回落了,不知道2020年具体发生了什么事情。。中文网页数据还是有点凋零。是不是有些网站不维护了?
【熟肉】攻击者视角:黑入阿里云内部Kubernetes环境洞察其安全性_哔哩哔哩_bilibili
qualys.com/2021/07/20/cve-2021-33909/cve-2021-33909-crasher.c
Voyager 1 Returning Science Data From All Four Instruments – Voyager