【发布时间】:2018-07-06 08:21:48
【问题描述】:
我想要的设置相当简单。我在 kubernetes 集群中托管 gitlab,它的入口定义为:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gitlab-public
namespace: gitlab
annotations:
kubernetes.io/ingress.global-static-ip-name: git-public
spec:
tls:
- secretName: gitlab-cert
backend:
serviceName: gitlab
servicePort: 80
这为我设置了一切 - SSL 终止已启用,它使用我的letsencrypt证书。问题是(显然)SSH 不适用于存储库。 22 的端口由 pod 公开,我已验证:
但是,Ingress 似乎不支持统一的 L4+L7 规范。到目前为止我考虑过的其他一些选择:
- 创建另一个负载均衡器,它只转发 22 -> 22 作为 TCP(或 L4 入口)均衡器。问题是多个负载均衡器不能共享同一个静态 IP。这当然是有道理的。
- 基本都是做前面的事情,不过获取一个新的DNS和静态IP,大概叫
ssh.git.mycompany.com,用它来转发SSH流量。最大的问题是,现在有很多开发人员在使用它,他们将不得不更改他们的.git/config文件,这将是极具破坏性的(不是以硅谷的方式)。 - 设置一个 L4 平衡器(在任何 k8s 配置之外)并让它处理 SSL 并设置三个端口以转发到 80 和 22。这是可能最令人困惑的步骤。因为我不知道 Google LoadBalancer 是什么正在努力做。我无法将前端映射到后端,甚至无法选择自己的端口。显然,它必须来自预定义端口列表,我猜这很愚蠢?相比之下,我们目前托管在 AWS 上,这就是负载均衡器的外观:
解决这个问题的最佳方法是什么?
编辑:修改标题,因为答案有点特定于 GitLab,因此可能会帮助人们寻找确切的问题。
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine