OpenShift:如何创建主机别名

时间:2017-10-31 07:22:21

标签: openshift

我有一个支持外部TLS的服务,我希望我的pod可以访问

https://abc.myservice.acme

abc.myservice.acme解析为1.2.3.4。我希望用另一个(比如5.6.7.8)覆盖这个IP地址,以便使用pod。

我会为每个pod&etc / etc / hosts添加一个条目来覆盖IP地址,但是我 感觉它是一种反模式,并且可能是一种更好的方法。

我调查/尝试过:

  1. 创建服务+端点。这样做有问题,但问题是SSL证书的SAN条目中没有服务名称,所以我得到了一个" SSL:没有替代证书主题名称与目标主机名相匹配&#39 ; SVC-外部ACME'"信息。当然我可以将它添加到证书SAN中,但它可能不是正确的解决方案。

  2. 在工作节点上安装DNSmasq(https://developers.redhat.com/blog/2015/11/19/dns-your-openshift-v3-cluster/)但又感觉像是一个复杂的黑客攻击。必须有一个更简单的。

  3. HOSTALIASES。不幸的是,这仅适用于kube 1.7+,但我在openshift 3.5(kube 1.6)上使用。这本来是完美的。

  4. 有什么方法可以在openshift中完成#3?

    我可以编辑图像以回显我想要进入/ etc / hosts的条目,但我将它保存为最后的手段。

    -M

1 个答案:

答案 0 :(得分:0)

也许我回答这个问题有点晚了

我的开发环境存在类似的问题,我们设法解决的问题是:

  1. 我们使用/ etc / hosts文件的所需内容创建了一个配置映射。我使用 hosts-delta 作为配置映射条目的名称
  2. 我们在容器(/ app / hosts /)内定义该配置映射的安装点。我认为目录 / app / hosts 应该存在于容器文件系统中,因此您应该在Dockerfile中添加一个RUN mkdir -p /app/hosts
  3. 我们通过以下方式修改了部署配置yaml并添加了启动后钩子:
lifecycle:
  postStart:
    exec:
      command:
        - /bin/sh
        - '-c'
        - |
        cat /app/hosts/hosts-delta >> /etc/hosts

上一个代码段应放在 spec>模板> spec>容器元素内

希望这对某人有帮助