允许Gitlab集成的安全Kubernetes API

允许Gitlab集成的安全Kubernetes API,api,security,kubernetes,proxy,gitlab-ci,Api,Security,Kubernetes,Proxy,Gitlab Ci,我想在私有机器上配置Kubernetes,以便使用Gitlab CI/CD工具。目的只是在几天内对Gitlab进行实验 使用此设置进行生产是毫无疑问的。我需要你的帮助来保护Kubernetes API。我不需要一个防黑客的解决方案,但至少我不希望API暴露给哪怕是天真的恶意用户。这台机器连接到一个专用网络,所以我无法想象有什么东西会被黑客攻击,除了一台旧的刚刚复位的机器,它将在几天内关闭 到目前为止,我已经能够设置Minikube,创建一个kube代理并将其公开给Gitlab。整合是成功的 然而

我想在私有机器上配置Kubernetes,以便使用Gitlab CI/CD工具。目的只是在几天内对Gitlab进行实验

使用此设置进行生产是毫无疑问的。我需要你的帮助来保护Kubernetes API。我不需要一个防黑客的解决方案,但至少我不希望API暴露给哪怕是天真的恶意用户。这台机器连接到一个专用网络,所以我无法想象有什么东西会被黑客攻击,除了一台旧的刚刚复位的机器,它将在几天内关闭

到目前为止,我已经能够设置Minikube,创建一个kube代理并将其公开给Gitlab。整合是成功的

然而,我注意到Kubernetes API向任何人公开。例如,任何人都可以访问。我应该如何保护API,以便gitlab可以连接到集群(),但没有证书或令牌的其他人不能访问集群?
我用CA证书和服务令牌设置了Gitlab,但我想这并不需要,因为Kubernetes API看起来是公开的。

您不必使用
kube代理来公开集群。您应该阅读其中提到的连接到集群的方式

通过公共IP访问服务

  • 使用类型为
    NodePort
    LoadBalancer
    的服务,使该服务可在群集中外部访问。请参阅和文档
  • 根据您的群集环境,这可能只是将服务公开给您的公司网络,也可能将服务公开给internet。考虑公开的服务是否安全。它自己进行身份验证吗
  • 将吊舱放置在服务后面。要从一组副本中访问一个特定的pod(例如用于调试),请在pod上放置一个唯一的标签,并创建一个选择此标签的新服务
  • 在大多数情况下,应用程序开发人员不必通过节点IP直接访问节点
使用代理谓词访问服务、节点或POD

  • 在访问远程服务之前执行apiserver身份验证和授权。如果服务不够安全,无法公开到internet,或无法访问节点IP上的端口,或无法进行调试,请使用此选项
  • 代理可能会导致某些web应用程序出现问题
  • 仅适用于HTTP/HTTPS
  • 描述
从群集中的节点或pod进行访问

  • 运行一个pod,然后使用连接到其中的外壳。从该shell连接到其他节点、pod和服务
  • 某些集群可能允许您通过ssh连接到集群中的节点。从那里您可以访问群集服务。这是一种非标准方法,在某些集群上有效,但在其他集群上无效。浏览器和其他工具可能已安装,也可能未安装。群集DNS可能无法工作
我也推荐阅读和阅读


例如,更改
default
名称空间,并使用不同的名称空间隔离应用程序。使用
TLS
并启用RBAC。

您不必使用
kube代理来公开集群。您应该阅读其中提到的连接到集群的方式

通过公共IP访问服务

  • 使用类型为
    NodePort
    LoadBalancer
    的服务,使该服务可在群集中外部访问。请参阅和文档
  • 根据您的群集环境,这可能只是将服务公开给您的公司网络,也可能将服务公开给internet。考虑公开的服务是否安全。它自己进行身份验证吗
  • 将吊舱放置在服务后面。要从一组副本中访问一个特定的pod(例如用于调试),请在pod上放置一个唯一的标签,并创建一个选择此标签的新服务
  • 在大多数情况下,应用程序开发人员不必通过节点IP直接访问节点
使用代理谓词访问服务、节点或POD

  • 在访问远程服务之前执行apiserver身份验证和授权。如果服务不够安全,无法公开到internet,或无法访问节点IP上的端口,或无法进行调试,请使用此选项
  • 代理可能会导致某些web应用程序出现问题
  • 仅适用于HTTP/HTTPS
  • 描述
从群集中的节点或pod进行访问

  • 运行一个pod,然后使用连接到其中的外壳。从该shell连接到其他节点、pod和服务
  • 某些集群可能允许您通过ssh连接到集群中的节点。从那里您可以访问群集服务。这是一种非标准方法,在某些集群上有效,但在其他集群上无效。浏览器和其他工具可能已安装,也可能未安装。群集DNS可能无法工作
我也推荐阅读和阅读


例如,更改
default
名称空间,并使用不同的名称空间隔离应用程序。使用
TLS
并启用RBAC。

使用iptables仅允许gitlab IP访问api如何?您认为gitlab是否会从连接到我的群集时始终使用相同的IP?我在网上发现IP应该是172.65.251.78。我试图使用kubectl proxy——address=0.0.0.0——accept hosts=“172\.65\.251\.78”公开API,但gitlab无权访问它们。另外,这样其他人就不能通过gitlab连接到我的集群了吗?很可能有一系列IP,而不仅仅是一个,你需要考虑。是的,如果人们能够访问gitlab服务器,他们就可以连接到您。另一方面,您将消除所有爬虫程序,使您在自动扫描程序中不可见。使用iptables只允许gitlab IP访问api如何?您认为gitlab在连接到我的集群时会始终使用相同的IP吗?我在网上发现