通过https的Cloud Foundry容器到容器联网

问题描述 投票:1回答:1

我们有两个在ibm cloud cloud Foundry上运行的应用程序(appA和appB)。appA正在通过容器到容器网络访问appB,而appB也可以通过Gorouter路由在外部使用。问题是,虽然它是http-8080,但我们的应用程序公开了-一切都很好。

现在,我们必须通过https进行容器到容器的联网。我们将应用程序配置为公开https-8080。 8080用作https://docs.cloudfoundry.org/devguide/custom-ports.html指出:

By default, apps only receive requests on port 8080 for both HTTP and TCP routing, 
and so must be configured, or hardcoded, to listen on this port

容器间网络现在可以使用https正常运行。但是我们不再能够在外部Gorouter路由上使用appB。

按我们期望的方式使其全部正常运行的最佳方法是什么?

https ibm-cloud cloudfoundry pivotal-cloud-foundry gorouter
1个回答
0
投票

至少在我撰写本文时,这个问题没有很好的答案。

尽管您确实有几个选择:

  1. 手动为内部路由设置HTTPS。为此,您需要使用针对所选应用程序/服务器的说明来配置HTTPS。然后使用您的buildpack提供的任何功能将此确认信息注入到应用程序容器中。这还需要您将TLS证书捆绑并推送到您的应用程序。如果您选择此选项,该平台将不会为您提供TLS证书。

    使内部和公共路由同时工作的技巧是,您需要您的应用程序同时侦听端口8080和为HTTPS流量选择的端口。只要您继续在端口8080上进行HTTP通信,那么您的公共路由就应该保持正常工作。

  2. 如果您想要一个快速但不理想的解决方案,则可以使用端口61001。对于Cloud Foundry的较新版本,Envoy使用此端口来接受通过HTTPS到您的应用程序的流量。然后,Envoy通过端口8080上的HTTP通过HTTP将请求代理到您的应用。您也可以将该端口用于容器到容器的通信,但是TLS证书上配置的使用者名称与您的路由不匹配。

    这是主题名称的示例。

    subject: OU=organization:639f74aa-5d97-4a47-a6b3-e9c2613729d8 + OU=space:10180e2b-33b9-44ee-9f8f-da96da17ac1a + OU=app:10a4752e-be17-41f5-bfb2-d858d49165f2; CN=b7520259-6428-4a52-60d4-5f25
    

    因为使用这种格式,所以您需要让客户端忽略证书主题名称匹配错误(不理想,因为这会削弱HTTPS),或者可能创建自定义主机名匹配器。


对于它的价值,我认为您不需要或不需要to change the port。如果您的应用程序不灵活并且无法在端口8080上侦听,通常会使用该端口。它将更改端口的入站流量。由于您仅使用C2C网络,因此不需要该选项。

据我了解,您想要的是HTTPS用于C2C流量。在这种情况下,公共交通无所谓。它仍然可以通过Gorouter到达端口8080。对于您的容器到容器通信,您可以选择所需的任何端口。您只需要确保选择的端口具有network policy set to allow that traffic(默认情况下,所有C2C流量都被阻止)。设置网络策略后,您可以直接通过指定的任何端口进行连接。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.