小编Ste*_*eve的帖子

Kubernetes,GCE,负载均衡,SSL

为了序言,我正在研究GCE和Kuberenetes.我的目标只是通过SSL公开我的集群上的所有微服务.理想情况下,它与通过type ='LoadBalancer'公开部署并获得单个外部IP时的工作方式相同.这是我的目标,但SSL不适用于那些基本负载均衡器.

根据我的研究,目前最好的解决方案是建立一个nginx入口控制器,使用入口资源和服务来公开我的微服务.下面是我对这个过程的理解所绘制的图表.

在此输入图像描述

我已经把这一切都成功地通过HTTP工作了.我从这里部署了默认的nginx控制器:https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx.以及默认后端的默认后端和服务.我自己的微服务的入口有规则设置为我的域名和路径:/.

这是成功的,但有两件事让我感到困惑.

  1. 当我为后端(微服务)公开服务资源时,我使用了一个指南type ='NodePort',另一个只是放了一个端口来访问服务.两者都将目标端口设置为后端应用程序端口.我尝试了这两种方式,它们似乎都有效.指南一来自上面的链接.指南2:http://blog.kubernetes.io/2016/03/Kubernetes-1.2-and-simplifying-advanced-networking-with-Ingress.html.这有什么区别?

  2. 另一个困惑点是我的入口总是有两个IP.我最初的思考过程是应该只有一个外部ip,这将击中我的入口,然后由nginx指导路由.或者是ip直接到nginx?无论如何,创建的第一个IP地址似乎给了我预期的结果,因为访问第二个IP失败了.

尽管我的困惑,似乎在HTTP上工作得很好.通过HTTPS而不是那么多.起初,当我通过https发出Web请求时,事情就会挂起.我在我的防火墙规则上打开了443,这似乎有效但我会打到我的默认后端而不是我的微服务.

阅读引导我从Kubernetes docs:目前Ingress资源只支持http规则.这可以解释为什么我要使用默认后端,因为我的规则仅适用于HTTP.但是,如果是这样,我应该如何使用这种方法进行SSL?

我注意到的另一件事是,如果我编写一个没有规则的入口资源并给它我想要的后端,我仍然会被定向到我原来的默认后端.这更奇怪,因为kubectl描述更新并声明我的默认后端是我想要的后端...

任何帮助或指导将不胜感激.谢谢!

ssl load-balancing nginx kubernetes

5
推荐指数
1
解决办法
1530
查看次数

用Ruby比较数组中的两个项目

我遇到了需要使用方法比较数组中两个元素的情况.我发现使用嵌套循环的逻辑非常简单,但这可能不是Ru​​by的好用.

对于前者 确定数组是否有任何一对等于0的2个数字:

def pairs(array)
  i = 0
  while i < array.length
    y = i + 1
    while y < array.length
      if array[i] + array[y] == 0
        return true
      end
      y += 1
    end
    i += 1
  end
  return false
end
Run Code Online (Sandbox Code Playgroud)

或者,如果我想看看数组中的两个东西是否相同,我将使用相同的逻辑,除了set:if array [i] == to array [y] ...

有人能为这样的问题提供更好的方法吗?

ruby

4
推荐指数
1
解决办法
8156
查看次数

标签 统计

kubernetes ×1

load-balancing ×1

nginx ×1

ruby ×1

ssl ×1