如何kubernetesdynamic暴露我的docker端口?

我有一个在端口5000上运行puma服务器的ruby应用程序的dockerfile。(它EXPOSE的端口,也使用运行命令来运行puma -p 5000。

在我的deployment.yaml我必须将containerPort设置为5000以匹配此端口。

这对我来说似乎很奇怪,我的configuration在两个不同的地方列出端口。 如果我需要更改端口,这意味着我正在改变多个地方的configuration,这是违背12因子应用程序的configuration都在同一个地方的原则。

有没有办法只在一个地方设置端口?

在你的deployment.yaml中你实际上不需要指定containerPort ; 所有的端口都被暴露。 从文档 :

端口ContainerPort数组

从容器中公开的端口列表。 在这里公开一个端口给系统提供了关于一个容器使用的networking连接的附加信息,但主要是信息性的。 在这里不指定端口不会阻止该端口被暴露。 任何监听容器内默认“0.0.0.0”地址的端口都可以从networking访问。 无法更新。