Secure HTTP Headers and Cookies
https://github.com/cakinney/secure 这个库列出了一些应当被妥当设置的安全相关的请求头:
- Server: 默认设为 NULL,避免暴露服务器的信息
- Strict-Transport-Security (HSTS): 服务不允许被降级为 HTTP 运行。
max-age=63072000; includeSubdomains
- X-Frame-Options (XFO):防止 clickjacking。
SAMEORIGIN
- X-XSS-Protection:
1; mode=block
: 防止扩展脚本运行 - X-Content-Type-Options:
nosniff
:不允许 MIME-sniffing - Content-Security-Policy (CSP):
script-src 'self'; object-src 'self'
防止跨域注入 - Referrer-Policy:
no-referrer, strict-origin-when-cross-origin
- Cache-control / Pragma:
no-cache, no-store, must-revalidate / no-cache
- Feature-Policy …
Pyparsing - A Python Parsing Module
Pyparsing 是一个 lex/yacc 的替代方案,可以用 Python 的语法写出 DSL。 使用起来的体验是语法部分可以用编辑器的高亮和 Linting 做语法检查。
写了一个例子可以做四则运算,逻辑比较,函数调用。
https://gist.github.com/soasme/1685e80a6f70311dbb801823ac8827fa
read moreZero Downtime deployments with Terraform
本文介绍了 Checkly 的工程团队如何使用 AWS EC2 / SQS / Terraform 完成队列 worker 的 zero downtime。
- 目标
- worker 在不伤害用户体验的情况下可以杀掉
- 多版本 worker 可以共存
- 每个 worker 都可以独立升级
- 新 worker 一旦就绪立马工作
- 当新 worker 都起来以后 老 worker 要被杀掉
- release 出错时停止继续部署
- 可以被部署到多个 region
- 新 worker 自动加入监控
- release 出错时可以触发警告
- 实现
- 使用 cron 发送消息到 sqs 队列。
- workers 订阅一个队列,每台机器 5 …
12 Factor CLI Apps
本文在推广一种写命令行工具的方法论 - 12 Factor CLI Apps.
- 提供
-h/--help
/ shell completion - 优先使用 flags,而不是 args;flags 也有利于 autocomplete;对于要把参数传给子进程的命令,可以用
--
分隔开本命令和子进程要用的参数。 - 提供
version
,--version
,-V
- 区分开 stdout 和 stderr
- 出错时可以提供更多有用信息:error code,error title,error description,how to fix the error,还有 url; 可以在 DEBUG 模式把更多信息打出来。
- 打出颜色,进度条,但也支持 NO_PROGRESS …
What Happen When K8S
本文介绍了在命令行运行 kubectl run --image=nginx --replicas=3
时 Kubernetes 服务端和客户端的运行时。
kubectl
会做 client-side validation, 通过校验的会通过 kubectl generator 组装 HTTP 请求可以发送到 kube-apiserver, 例如 deployment 会组装 DeploymentV1Beta1.- 本地有一个 ~/.kube/cache/dicovery 用于缓存资源的 apiVersion, 例如,deployment 属于 apps/v1.
- kubectl 会根据
--kubeconfig
或者$KUBECONFIG
读取 kubeconfig. - 解析 kubeconfig, 获得 current context, current …
Minio Docs
Minio 是一个 AWS S3 的兼容工具,可以自己选择搭在想要的机房里。
- conf: 可用配置文件和环境变量,然后用
minio server /data
启动。 - 有 liveness 和 readiness proble:
/minio/health/live
,/minio/health/ready
. - fed: 可使用 etcd_endpoints 作为后端完成 federation
- 【client](https://docs.minio.io/docs/minio-client-quickstart-guide.html): 客户端提供
mc ls
,mc cat
, 等一系列 UNIX 兼容的命令。
Pulumi - Guestbook App Tutorial
Pulumi 最近发布的 IAAS 工具包看起来像个 terraform 的 copy。
- 使用
plum new kubernetes-typescript
新建一个项目。 - 写 JS 代码写 YAML。
let redisMasterService = new k8s.core.v1.Service("redid-master": {"metadata": {… let redisMasterDeployment = new k8s.apps.v1.Deployment("redis-master", {spec: {…
- 运行:
pulumi up
, 运行前也跟 Terraform 一样需要经过确认。工具可自己决定是创建还是更新。 - 也提供跟 Terraform output 一样的功能。
pulumi stack output frontendIP …