【问题标题】:OpenShift: how to create a host aliasOpenShift:如何创建主机别名
【发布时间】:2020-04-10 01:29:51
【问题描述】:

我有一个启用了 TLS 的外部服务,我希望我的 pod 访问它

https://abc.myservice.acme

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

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

我调查/尝试过:

  1. 创建服务 + 端点。这可行,但问题是 SSL 证书的 SAN 条目中不存在服务名称,因此我收到“SSL:没有替代证书主题名称与目标主机名 'svc-external-acme' 匹配”消息。当然我可以将它添加到证书 SAN,但它可能不是正确的解决方案。

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

  3. 主机别名。不幸的是,这仅适用于 kube 1.7+,但我使用的是 openshift 3.5(kube 1.6)。这样就完美了。

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

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

-M

【问题讨论】:

    标签: openshift


    【解决方案1】:

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

    我们的开发环境也有类似的问题,我们设法解决的方法是:

    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
    

    前面的 sn-p 应该放在 spec > template > spec > containers 元素内

    希望这对某人有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2012-02-16
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多