需要一个带有SSL教程的Kubernetes 1.2 Ingress裸机控制器

时间:2016-04-12 20:15:23

标签: ssl nginx kubernetes

我可以在获取SSL终止Ingress和基于nginx的控制器上运行的最接近的教程是裸机(例如Digital Ocean):

https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx

但它留下了许多无法解释的假设。

我的入口要求很简单:

  • 所有主机的端口80的默认后端:
    • location ^~ /.well-known/acme-challenge/的文件访问权限,允许我的LetsEncrypt证书续订正常工作
    • 404 location /.well-known/acme-challenge/
    • 301 on location /
  • 基于子域的路由到端口443上的不同后端服务
  • 每个子域指向一个不同的SSL密钥/证书(由我的LetsEncrypt生成,并作为秘密存储在K8S中我想?)

我认为需要的是:

  • 有关编写Ingress规则的完整文档
    • 我可以为每个后端单独配置SSL证书(在端口443上)吗?
    • 是主持人的“路径”吗?
  • 更新Ingress规则
  • 我使用什么nginx控制器? nginx的? nginx的-α? nginx-ingress docker container - 这些控制器的文档在哪里?
    • 是否有一个基本控制器映像,我可以覆盖nginx.conf模板,该模板由来自API服务器的Ingress更改填充?
  • 如何将SSL密钥和证书存储为机密?

1 个答案:

答案 0 :(得分:5)

嘘我的回答适用于https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx

  
      
  • 所有主机的端口80的默认后端:      
        
    • 404 location /.well-known/acme-challenge/
    •   
  •   

使用Ingress规则

是不可能的
  
      
  • 301 on location /
  •   

这已经得到支持。如果服务器包含SSL证书,它将自动重定向到https

  
      
  • 基于子域的路由到端口443上的不同后端服务
  •   
  • 每个子域指向一个不同的SSL密钥/证书(由我的LetsEncrypt生成,并作为秘密存储在K8S中我想?)
  •   

您需要创建多个Ingress规则,每个子域一个。每个规则可以使用不同的秘密名称(这将创建多个服务器,每个子域一个)

我认为需要的是:

  
      
  • 有关编写Ingress规则的完整文档
  •   

http://kubernetes.io/docs/user-guide/ingress/

(我不知道除了go代码之外还有其他信息)

  
      
  • 我可以为每个后端单独配置SSL证书(在端口443上)吗?
  •   
  • 是"路径"这对主持人来说是个好消息吗?
  •   

  
      
  • 更新Ingress规则
  •   
  • 我使用什么nginx控制器? nginx的? nginx的-α? nginx-ingress docker container - 以及每个控制器的文档在哪里?
  •   

这取决于您的需求,如果您想构建自定义Ingress控制器,可以使用nginx-alpha作为参考。如果示例中不清楚nginx-ingress,请打开一个问题,并提及示例中可以改进的内容或它缺少

  
      
  • 是否有一个基本控制器映像,我可以覆盖nginx.conf模板,该模板由来自API服务器的Ingress更改填充?
  •   

没有。原因是模板与填充模板的go代码相关联。也就是说,您可以构建更改模板的自定义图像,但这需要您部署图像以测试更改

  
      
  • 如何将SSL密钥和证书存储为机密?
  •   
是的,像这样的秘密http://kubernetes.io/docs/user-guide/ingress/#tls

对于letsencrypt支持,请查看此评论https://github.com/kubernetes/kubernetes/issues/19899#issuecomment-184059009

以下是完整示例https://gist.github.com/aledbf/d88c7f7d0b8d4d032035b14ab0965e26 added to examples in #766