我正在探索OpenShift 3.9,并成功使用
在部署后,
Git存储库包含一个迄今为止很平凡的
oc new-app
和Docker构建策略构建并运行了第一个容器。我的Dockerfile包括命令EXPOSE 5432
。在部署后,
oc describe istag/my_app:latest | grep ^Exposes
报告Exposes Ports: 5432/tcp
,看起来很好:镜像公开了端口5432。但是,oc describe po/my_app-1-some_id | grep "^\s*Port"
报告Port: <none>
,因此总体上似乎端口已在Docker层面上公开,但尚未在Kubernetes/OpenShift层面上公开。
OpenShift文档中如下所述:
为什么在这种情况下new-app命令尝试检测输入图像中公开的端口。 它使用最低数字的公开端口生成公开该端口的服务。为了公开不同的端口,请在new-app完成后使用oc expose命令生成其他服务。
oc new-app
不会暴露端口5432(实际上它也不会创建任何service
资源),我该如何让它自动执行此操作,因为输入镜像已经这样做了,并且从文档中看来似乎是可能的?
更新:以下是有关如何创建新应用程序的更多详细信息:oc new-app ssh://my_account@my_git_server/my_path/my_repo.git
--context-dir=my_dir --strategy=docker --name my_app
Git存储库包含一个迄今为止很平凡的
my_dir/Dockerfile
,其中包含命令EXPOSE 5432
。
oc new-app --template postgresql-persistent
。 - Graham Dumpletonoc new-app
命令,但添加选项--dry-run -o json
,则它生成的JSON是否显示“Service”对象?在“DeploymentConfig”中,容器的“ports”定义显示什么? - Graham Dumpleton