标签: nginx-ingress

如何向通过 helm 安装的 nginx-ingress 添加静态 IP

我想创建一个可以链接到保留 IP 地址的 nginx-ingress。主要原因是,我想尽量减少手动步骤。目前,基础设施是使用 Terraform 自动设置的,但我无法让 nginx-ingress 使用保留的 IP。我已经有 nginx-ingress 工作,但它创建了自己的 IP 地址。

根据 nginx-ingress 站点(https://kubernetes.github.io/ingress-nginx/examples/static-ip/),这应该是可能的。首先,应该创建一个负载均衡器服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-lb
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  loadBalancerIP: 34.123.12.123
  ports:
  - port: 80
    name: http
    targetPort: 80
  - port: 443
    name: https
    targetPort: 443
  selector:
    # Selects nginx-ingress-controller pods
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
Run Code Online (Sandbox Code Playgroud)

但是,然后可以通过nginx-ingress-controller.yaml带有--publish-service标志的文件更新 IP 。但是,我通过 helm 安装它:

helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
Run Code Online (Sandbox Code Playgroud)

如何在我的 helm 安装(或升级)中将发布服务链接到 …

kubernetes kubernetes-helm nginx-ingress

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

nginx-ingress 控制器抛出此 DNS 解析错误。上下文:ngx.timer

我们的 nginx-ingress 日志不断充满以下错误消息:

 dns.lua:61: resolve(): server returned error code: 3: name error, context: ngx.timer
Run Code Online (Sandbox Code Playgroud)

我们使用 Kubeadm 创建了 Kubernetes 集群,默认情况下使用 CoreDNS。

/data # kubectl get pods -n kube-system
NAME                                                                    READY   STATUS             RESTARTS   AGE
calico-node-8jr7t                                                       2/2     Running            2          4d22h
calico-node-cl5f6                                                       2/2     Running            4          4d22h
calico-node-rzt28                                                       2/2     Running            2          4d22h
coredns-fb8b8dccf-n68x9                                                 1/1     Running            3          3d23h
coredns-fb8b8dccf-x9wr4                                                 1/1     Running            1          3d23h
Run Code Online (Sandbox Code Playgroud)

它还具有指向 core-dns pod 的 kube-dns 服务。

kube-system   kube-dns                                           ClusterIP      10.96.0.10       <none>                                                     53/UDP,53/TCP                 7m29s
Run Code Online (Sandbox Code Playgroud)

我在日志中找不到任何其他内容可以帮助我解决此问题。

更新:

我们有一个带有 externalName 的服务,如此处建议的> https://github.com/coredns/coredns/issues/2324#issuecomment-484005202

kubernetes nginx-ingress

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

如何为 kubernetes ingress basic-auth 设置辅助密钥

我想在 k8s 中为我的所有服务提供一个入口,并为入口提供一个基本的身份验证。但是对于身份验证轮换,我想支持用户的辅助身份验证,以便在他们重新生成主键时可以到达端点。

我目前可以按照本指南设置具有单一基本身份验证的入口。

kubernetes kubernetes-ingress nginx-ingress

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

入口将域 www 重写为非 www url

我正在尝试将我的域“www.test.example.com”重定向到 test.example.com

在入口中我添加了注释

nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($host = 'www.test.wotnot.io' ) {
          rewrite ^/(.*)$ https://app.test.wotnot.io/$1 permanent;
      }
Run Code Online (Sandbox Code Playgroud)

它没有按预期工作。

为了测试,我尝试了这个

nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($host = 'test.example.com' ) {
          rewrite ^/(.*)$ https://google.com/$1 permanent;
      }
Run Code Online (Sandbox Code Playgroud)

这是工作正常。

我的网站正在处理test.example.com和 ssl 证书。

整个入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: wordpress-staging
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
    #nginx.ingress.kubernetes.io/configuration-snippet: |
      #if ($host = 'www.test.wotnot.io' ) {
        #  rewrite ^/(.*)$ https://test.example.io/$1 permanent;
      #}
  name: wordpress-staging-ingress
spec:
  rules:
  - host: test.example.io
    http:
      paths:
      - backend:
          serviceName: wordpress-site
          servicePort: 80
        path: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress nginx-ingress

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

未为 ingress-nginx 后端配置 SSL 直通

我正在通过 helm 在 minikube 中运行 nginx 入口控制器,通过查看 nginx 入口控制器 pod 的日志,我可以看到在控制器中启用了 SSL 直通。

helm upgrade ingress stable/nginx-ingress --install --namespace kube-system --set "controller.extraArgs.annotations-prefix=nginx.ingress.kubernetes.io" --set "controller.extraArgs.enable-ssl-passthrough=" --set controller.hostNetwork=true
Run Code Online (Sandbox Code Playgroud)

在内部,我在端口 19000 上公开了一个 HTTPS REST API 服务。我希望在客户端和在 k8s 内运行的服务之间使用双向 TLS,因此我尝试在启用 SSL 直通的情况下配置我的入口,但是当我设置nginx.ingress.kubernetes.io 时/ssl-passthrough在我的入口上注释为“ true ”,后端仍然显示 sslPassthrough 设置为 false 并且当我向服务发送请求时,nginx 正在从我的请求中剥离 TLS 证书。

是否缺少某些配置以在后端启用 SSL 直通?

$ kubectl ingress-nginx --deployment ingress-nginx-ingress-controller -n kube-system backends
[
  {
    "name": "default-tlsapi-service-19000",
    "service": {
      "metadata": {
        "creationTimestamp": null
      },
      "spec": {
        "ports": [
          {
            "protocol": "TCP",
            "port": …
Run Code Online (Sandbox Code Playgroud)

ssl nginx kubernetes kubernetes-ingress nginx-ingress

1
推荐指数
2
解决办法
8981
查看次数

Helm 图表 nginx-ingress 无法在 minikube 中工作?

我已经在 Minikube 上设置了一个“hello world”入口,如教程中所述。唯一的区别 - 我删除了特定的主机名以使用 \'*\' 代替。然而,它似乎只能与 minikube ( ) 提供的入口控制器一起使用minikube addons enable ingress。当我尝试禁用它并使用helm install nginx-ingress stable/nginx-ingress它时,我无法再访问 Hello World 示例网站。我收到“连接被拒绝”错误:

\n\n
$ kubectl get ingress\nNAME              HOSTS   ADDRESS        PORTS   AGE\nexample-ingress   *       192.168.64.6   80      6m23s\n\n$ minikube ip\n192.168.64.6\n\n$ curl -iv "192.168.64.6"\n* Rebuilt URL to: 192.168.64.6/\n* Hostname was NOT found in DNS cache\n*   Trying 192.168.64.6...\n* connect to 192.168.64.6 port 80 failed: Connection refused\n* Failed to connect to 192.168.64.6 port 80: Connection refused\n* Closing connection 0\ncurl: (7) Failed …
Run Code Online (Sandbox Code Playgroud)

kubernetes minikube nginx-ingress

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

如何编辑入口主机?

我在 K8S 集群上部署了 Harbor,如下所示:

helm install dockistry harbor/harbor \
  --set expose.type=ingress
Run Code Online (Sandbox Code Playgroud)

然后入口资源显示:

kubectl get ingress
NAME                       HOSTS                                     ADDRESS          PORTS     AGE
dockistry-harbor-ingress   core.harbor.domain,notary.harbor.domain   xxx.xxx.100.61   80, 443   2m43s
Run Code Online (Sandbox Code Playgroud)

HOSTS是错误的,希望更改它。我该如何编辑dockistry-harbor-ingress

kubernetes kubernetes-ingress nginx-ingress

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

ingress-nginx 的多个外部 IP(负载均衡器)

如何使用 ingress-nginx 在单个集群中配置多个外部 IP?

我可以看到 ingress-nginx 使用外部 IP 创建了一个负载均衡器服务。我认为我需要创建另一个负载均衡器服务?我如何在入口中指示要使用哪个负载均衡器?

PS我正在使用GKE。

kubernetes nginx-ingress

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

Ingress Nginx - 如何为应用程序提供资产

我有一个问题,我正在 [主机名]/product/console 上部署一个应用程序,但是从 [主机名]/product/static 请求 .css .js 文件,因此它们没有被加载,我得到 404。

我已经尝试过nginx.ingress.kubernetes.io/rewrite-target:但没有成功。

我也尝试使用:nginx.ingress.kubernetes.io/location-snippet: | location = /product/console/ { proxy_pass http://[hostname]/product/static/; }

但后者似乎根本没有被 nginx 控制器接收到。这是我的 ingress.yaml

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-resource
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
    # nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/location-snippet: |
      location = /product/console/ {
        proxy_pass http://[hostname]/product/static/;
        }
spec:
  rules:
    - host: {{.Values.HOSTNAME}}
      http:
        paths:
        - path: /product/console
          backend:
            serviceName: product-svc
            servicePort: prod ##25022
        - path: /product/
          backend:
            serviceName: product-svc
            servicePort: prod #25022
Run Code Online (Sandbox Code Playgroud)

-- 可以请教一下吗?我一直在尝试用谷歌搜索并尝试一些不同的变体,但我似乎做错了一些事情。谢谢!

nginx kubernetes kubernetes-ingress nginx-config nginx-ingress

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

Kubernetes 外部服务入口规则(ExternalName 类型)

我在尝试使用类型为 ExternalName 和入口控制器将流量重定向到外部服务时遇到问题。

我收到以下错误,我可以从主机访问该主机,但不能从 K8S 访问。此外,IP 10.96.0.10 与 kube-dns 服务相关联。

解析主机“internaldnsname.com”时出错:在 10.96.0.10:53 上查找 internaldnsname.com:没有这样的主机

我错过了什么?

入口规则

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: external-ingress
  annotations:
    kubernetes.io/ingress.class: “nginx”
    nginx.ingress.kubernetes.io/ingress.class: “nginx”
    nginx.ingress.kubernetes.io/preserve-host: “false”
spec:
  rules:
  - host:
    http:
      paths:
      - backend:
          serviceName: external-service
          servicePort: 80
        path: /
Run Code Online (Sandbox Code Playgroud)

服务定义

apiVersion: v1
kind: Service
metadata:
  name: external-service
spec:
  type: ExternalName
  externalName: internaldnsname.com
Run Code Online (Sandbox Code Playgroud)

external kubernetes nginx-ingress

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