到目前为止,我与$URI = "https://www.google.fr/search?q=googe&rlz=1C1CHBF_frFR711FR711&oq=googe&aqs=chrome..69i57j69i60l5.912j0j7&sourceid=chrome&ie=UTF-8#q=google"
$wc = New-Object System.Net.WebClient
$htmlString=$wc.DownloadString($URI)
cd C:\Modules\User\HtmlAgilityPack
add-type -Path .\HtmlAgilityPack.dll
$doc = New-Object HtmlAgilityPack.HtmlDocument
$doc.LoadHtml($htmlString)
$root= $doc.DocumentNode
$root.SelectSingleNode("//head/title").Innertext
的往来很好,但是我有一个问题。
K8s-ingress
是否可以基于 IP 路由请求?
我已经知道Ingress会根据主机(例如a.com,b.com ...)到每个服务以及URI(例如路径/ a-service / ,/ b-service / 进入每个服务。
但是,我对ingress
可以通过 IP 进行路由的想法感到好奇吗?我想从我的办公室(某些IP)请求路由特定服务进行测试。
这有意义吗?还有任何想法吗?
答案 0 :(得分:2)
如果这仅用于测试,我将IP列入白名单。您可以阅读有关nginx ingress annotations
的文档您可以通过
nginx.ingress.kubernetes.io/whitelist-source-range
批注指定允许的客户端IP源范围。该值是CIDRs的逗号分隔列表,例如10.0.0.0/24,172.10.0.1
。
示例yaml可能如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: whitelist
annotations:
nginx.ingress.kubernetes.io/whitelist-source-range: "1.1.1.1/24"
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /
backend:
serviceName: echoheaders
servicePort: 80
看来,您可以在种 ServiceRole
和ServiceRoleBinding
的{{3}}(我没有尝试过)中指定详细的访问控制要求。为此,您将使用source.ip
属性。在Istio
答案 1 :(得分:0)
这不是您提到的主要Ingress抽象的一部分,但是许多Ingress Controller通过注释或辅助CRD提供额外的功能。因此,理论上可以这样添加。我认为没有这样的路由选择,所以实际上,可能没有现货供应。
答案 2 :(得分:0)
正如coderanger在他的回答中所述,默认情况下ingress没有它。
我不确定是否可以使用基于IP的路由,因为您将在需要时如何从Office IP测试/部署实际的部署/服务?
我认为您可以添加检查以执行基于IP和标头的路由。例如:您可以传递标题'redirect-to-test: true'
。因此,如果将其设置为false,您仍然可以访问生产服务。