标签: nginx-ingress

不要在 Kubernetes 的入口级别终止 SSL

我有一个 Java 应用程序在 tomcat 服务器(位于 pod 内)内运行,该应用程序配置为使用 https。我正在使用 nginx 入口。问题是,nginx 入口正在终止 SSL 并仅将纯 http 转发到 tomcat 服务器(实际上是到 pod)。由于 tomcat 服务器配置为仅使用 HTTPS,因此它不接受流量。

以下不起作用:

nginx.ingress.kubernetes.io/ssl-passthrough: "true"
Run Code Online (Sandbox Code Playgroud)

tomcat kubernetes kubernetes-ingress nginx-ingress

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

如何在 GKE ingress nginx 中设置域

我在 GKE 中有一个集群,它正在运行,一切似乎都在运行。如果我转发端口,我可以看到容器正在工作。

我无法从 namecheap 设置我拥有的域。

这些是我遵循的步骤

  1. 在 Namecheap 中,我为域设置了一个自定义 dns
ns-cloud-c1.googledomains.com.
ns-cloud-c2.googledomains.com.
ns-cloud-c3.googledomains.com.
ns-cloud-c3.googledomains.com.
Run Code Online (Sandbox Code Playgroud)

我使用这封信c是因为集群位于一个c区域中(我不确定这是否正确)

  1. 因为我试图设置为安全网站,所以我安装了 nginx 入口控制器
kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole cluster-admin \
  --user $(gcloud config get-value account)
Run Code Online (Sandbox Code Playgroud)

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/cloud/deploy.yaml
Run Code Online (Sandbox Code Playgroud)
  1. 我应用了issuer.yml
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
 name: letsencrypt-prod
 namespace: cert-manager
spec:
 acme:
   # The ACME server URL
   server: https://acme-v02.api.letsencrypt.org/directory
   # Email address used for ACME registration
   email: example@email.com
   # Name of a secret used to store the ACME …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine kubernetes-ingress nginx-ingress gke-networking

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

在 AKS 集群中安装 nginx ingress 失败并出现 SyncLoadBalancerFailed 错误

我有一个带有 Web 应用程序的 AKS 集群。我想配置一个 nginx Ingress 控制器以将应用程序公开到互联网,然后启用 TLS。

我一直在关注官方文档

https://learn.microsoft.com/en-us/azure/aks/ingress-basic

https://learn.microsoft.com/en-us/azure/aks/ingress-static-ip

但我总是以悬而未决的 nginx-ingress 服务结束并出现此错误

reason: SyncLoadBalancerFailed
message: >-
  Error syncing load balancer: failed to ensure load balancer: instance not
  found
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我见过

如何修复 nginx 入口的“无法确保负载均衡器”错误

并用谷歌搜索了错误,但到目前为止还没有运气

有谁知道它会是什么?

或者,有一些我可以开始的工作示例吗?

azure kubernetes azure-aks nginx-ingress

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

将 nginx 入口从部署更新为 daemonset

我使用 helm 安装了 nginx-ingress。之后我注意到默认值controller.kinddeployment而不是daemonset,正如我在官方文档中找到的那样。

那么如何才能更新controller.kindfromdeployment到 而daemonset无需从头开始重新安装呢?

helm install nginx-ingress nginx-stable/nginx-ingress --set controller.service.type=NodePort --set controller.service.httpPort.nodePort=30000 --set controller.service.httpsPort.nodePort=30443
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes daemonset kubernetes-ingress nginx-ingress

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

Ingress 不转发请求 - 适用于 Windows 和 kubernetes 的 Docker 桌面

编辑:

我删除了 minikube,在 Windows 的 Docker 桌面中启用了 kubernetes 并ingress-nginx手动安装。

$helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace
Release "ingress-nginx" does not exist. Installing it now.
Error: rendered manifests contain a resource that already exists. Unable to continue with install: ServiceAccount "ingress-nginx" in namespace "ingress-nginx" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "ingress-nginx"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes nginx-ingress docker-desktop

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

Nginx Ingress 在 microk8s 上提供 404 并提供工作服务

在 Ubuntu 20.04.4 LTS 上运行 microk8s v1.23.3。我已经设置了一个最小的 pod+service:

kubectl create deployment whoami --image=containous/whoami --namespace=default
Run Code Online (Sandbox Code Playgroud)

这按预期工作,curl10.1.76.4:80给出了正确的答复whoami。我配置了一项服务,请参阅以下内容service-whoami.yaml

apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: default
spec:
  selector:
    app: whoami
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
Run Code Online (Sandbox Code Playgroud)

这也按预期工作,可以通过 上的 clusterIP 访问 pod curl 10.152.183.220:80。现在我想使用以下方式公开该服务ingress-whoami.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: whoami-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  defaultBackend:
    service:
      name: whoami
      port:
        number: 80
  rules:
  - http:
      paths:
      - path: /whoami
        pathType: …
Run Code Online (Sandbox Code Playgroud)

kubernetes nginx-ingress microk8s

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

等待 HTTP-01 质询传播:未能执行自检 GET 请求

我正在尝试按照本教程(https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/blob/main/03-setup-ingress )进行加密来保护我的 nginx-ingress 连接-controller/nginx.md)。

\n

我使用 helm 安装了 cert-manager (v1.8.0)。

\n

应用了我的 ClusterIssuerkubectl apply -f issuer.yaml

\n
apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-nginx\nspec:\n  # ACME issuer configuration\n  # `email` - the email address to be associated with the ACME account (make sure it\'s a valid one)\n  # `server` - the URL used to access the ACME server\xe2\x80\x99s directory endpoint\n  # `privateKeySecretRef` - Kubernetes Secret to store the automatically generated ACME account private key\n  acme:\n    email: \'myemail\'\n    server: https://acme-staging-v02.api.letsencrypt.org/directory\n …
Run Code Online (Sandbox Code Playgroud)

azure lets-encrypt cert-manager nginx-ingress

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

针对 kubernetes 入口从 v1beta 迁移到 v1 的问题

在我的公司中,我们的 Kubernetes 集群最近更新到了 1.22+,并且我们正在使用 AKS。因此,我必须更改使用的 ingress yaml 文件的清单:networking.k8s.io/v1beta1,以符合新的 apiVersion:networking.k8s.io/v1

这是入口文件的早期清单:

{{- if .Values.ingress.enabled -}}
{{- $fullName := include "amroingress.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
  name: {{ $fullName }}
  labels:
    {{- include "amroingress.labels" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
  {{- if .Values.ingress.tls }}
  tls:
    {{- …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm kubernetes-ingress azure-aks nginx-ingress

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

Nginx-Ingress 未从证书管理器获取证书

我目前正在尝试在 nginx-ingress 后面的 K8S 中设置一个应用程序。证书应由 cert-manager 和 Let's Encrypt 生成(目前暂存)。

\n

该应用程序位于命名空间 prod 中,nginx-ingress-controller 位于命名空间 nginx 中,而 cert-manager 位于 cert-manager 命名空间中。

\n

我们为 Let's Encrypt 暂存设置了 ClusterIssuer 并成功生成了证书(我们可以在机密和证书资源中看到它)。然而,nginx-ingress-controller 仍然使用 Kubernetes Ingress Controller 假证书进行应答。

\n

以下是一些技术细节:

\n

入口

\n
\xe2\x9d\xaf kubectl describe ingress/forgerock\nName:             forgerock\nLabels:           <none>\nNamespace:        prod\nAddress:          someaws-id.elb.eu-central-1.amazonaws.com\nIngress Class:    <none>\nDefault backend:  <default>\nTLS:\n  sslcertciam terminates ciam.test.fancycorp.com\nRules:\n  Host                Path  Backends\n  ----                ----  --------\n  ciam.test.fancycorp.com\n                      /am/json/authenticate                                             am:80 (10.0.2.210:8081)\n                      ...\n                      /am/extlogin                                                      am:80 (10.0.2.210:8081)\nAnnotations:          cert-manager.io/cluster-issuer: letsencrypt-stage\n                      haproxy.router.openshift.io/cookie_name: route\n                      kubernetes.io/ingress.class: nginx\n                      nginx.ingress.kubernetes.io/affinity: cookie\n                      nginx.ingress.kubernetes.io/body-size: 64m\n                      nginx.ingress.kubernetes.io/enable-cors: false\n                      nginx.ingress.kubernetes.io/proxy-body-size: …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes cert-manager nginx-ingress

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

如何重写 ingress yaml 中两个路径的目标

我有ingress.yaml两条路径;每个到我的一个微前端。然而,我真的很难让重写目标发挥作用。mf1 正确加载,但 mf2 不正确。我做了一些研究,知道我需要使用Captured Groups,但似乎无法正确实现这一点。我怎么做?

这就是我的入口的样子:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: http-ingress
  annotations:
    kubernetes.io/ingress.class: public
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: mf1
                port:
                  number: 80
          - path: /mf2
            pathType: Prefix
            backend:
              service:
                name: mf2
                port:
                  number: 80
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress nginx-ingress

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