域名(开发、暂存、生产)的最佳实践是什么?
What are the best practice for domain names (dev, staging, production)?
随着容器、Kuberenetes、12 Factor 等的兴起,跨开发、暂存和生产复制相同的环境变得更加容易。但是,域名约定似乎没有共同的标准。
据我所知,有两种方法可以做到:
- 使用子域:
*.dev.foobar.tld
*.staging.foobar.tld
*.foobar.tld
- 使用单独的域:
*.foobar-dev.tld
*.foobar-staging.tld
*.foobar.tld
我可以看到这两种方法的优缺点,但我很好奇常见的做法是什么。
附带说明一下,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/
也看你是否希望dev/test/staging对外可用,如果不可以这样设置:
app_name.example.dev、app_name.example.test 等
关于顶级域的快速说明,许多公司还使用“.local”后缀进行内部名称解析。
我们在我们的环境中使用以下 dns 名称
- *.dev.internal.com(开发)
- *.tst.internal.com(测试)
- *.stg.internel.com(分期)
- *.internel.com(产品)。你也可以像 *.prd.internal.com
随着容器、Kuberenetes、12 Factor 等的兴起,跨开发、暂存和生产复制相同的环境变得更加容易。但是,域名约定似乎没有共同的标准。
据我所知,有两种方法可以做到:
- 使用子域:
*.dev.foobar.tld
*.staging.foobar.tld
*.foobar.tld
- 使用单独的域:
*.foobar-dev.tld
*.foobar-staging.tld
*.foobar.tld
我可以看到这两种方法的优缺点,但我很好奇常见的做法是什么。
附带说明一下,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/
也看你是否希望dev/test/staging对外可用,如果不可以这样设置: app_name.example.dev、app_name.example.test 等
关于顶级域的快速说明,许多公司还使用“.local”后缀进行内部名称解析。
我们在我们的环境中使用以下 dns 名称
- *.dev.internal.com(开发)
- *.tst.internal.com(测试)
- *.stg.internel.com(分期)
- *.internel.com(产品)。你也可以像 *.prd.internal.com