Introduction to Helm -- part 2: template engine
Background
上篇介绍了why Helm 和package management feature, 本篇讨论如何使用Helm template engine.
The Secrets Store CSI Driver secrets-store.csi.k8s.io allows Kubernetes to mount multiple secrets, keys, and certs stored in enterprise-grade external secrets stores into their pods as a volume. Once the Volume is attached, the data in it is mounted into the container’s file system.
In Kubernetes, you can use a shared Kubernetes Volume as a simple and efficient way to share data between containers in a Pod.
1 | k create cm cm-test --from-file=./files/config.json --from-file=./files/db_password --from-file=./files/mysql |
进入pod:
1 | root@webserver:/etc/config# ls -l |
每个key entry都有一个file, file内容为value.
写server程序,datetime是绕不开的话题,且经常需要处理多时区转换,时间的术语和格式让人眼花缭乱, 如
1990-12-31T23:59:60Z
, 1990-12-31T15:59:60-08:00
AEST
, AEDT
需要系统梳理时间标准,术语; 这就需要对背后的地理知识稍作了解.
另外给出如何用Python的Arrow
package实现常用的时间/时区操作.
Kubernetes可以看作”Object Store”, Object格式: yaml
or json
, 两者等价.
Kubectl的get
命令读取一系列Objects, 并以JSON格式返回. 这些JSON格式往往很大,有复杂的嵌套,常见的需求:
相比每次将JSON当做文本,grep
; 我们需要更贴合JSON的方式.
本质上JSON output是我们的数据源, 我们需要query language, 就像query relational database一样.
本文介绍用JQ
, Jid
处理kubectl
输出, 应对常见的情景.
接Logging系列文章, Structure logging是当下best practice. 如何在Golang实现呢?
本文给出solution, 取自当前我们组使用的logging library, 实现以下需求:
request_id
搭建于k8s的微服务系统,log aggregation更是一项基本需求: pod随时可能在Node见迁移,找不到原始log文件.
K8s官方并没有给出具体logging solution, 只给出了logging architecture
这里介绍一套我们组在用的solution: Fluentd+Graylog, 配置简单(相比EFK), 且提供对应的golang logging library实现.
即本文解决问题: 收集golang backend产生的日志,并aggregate到graylog.