域名(开发、暂存、生产)的最佳实践是什么?

What are the best practice for domain names (dev, staging, production)?

随着容器、Kuberenetes、12 Factor 等的兴起,跨开发、暂存和生产复制相同的环境变得更加容易。但是,域名约定似乎没有共同的标准。

据我所知,有两种方法可以做到:

我可以看到这两种方法的优缺点,但我很好奇常见的做法是什么。

附带说明一下,Cloudflare 不会为子域(例如 *.stage.foobar.tld)颁发证书。

There are only two hard things in Computer Science: cache invalidation and naming things.

-- Phil Karlton

取决于公司规模。

小型企业通常会选择破折号并获得通配符证书。 所以他们会有 dev.example.com, test.example.com

在大型企业中,他们通常会推出 DNS 基础设施,并且供应过程负责分配。通常看起来像

aws-eu-central-1.appName.staging.[teamName].example.com

他们要么在所有服务器上通过 CA 使用自己的自签名证书,要么有钱购买 SAN。

更多灵感:

https://blog.serverdensity.com/server-naming-conventions-and-best-practices/

https://mnx.io/blog/a-proper-server-naming-scheme/

https://namingschemes.com/

也看你是否希望dev/test/staging对外可用,如果不可以这样设置: app_name.example.dev、app_name.example.test 等

关于顶级域的快速说明,许多公司还使用“.local”后缀进行内部名称解析。

我们在我们的环境中使用以下 dns 名称

  1. *.dev.internal.com(开发)
  2. *.tst.internal.com(测试)
  3. *.stg.internel.com(分期)
  4. *.internel.com(产品)。你也可以像 *.prd.internal.com