我找到了有关如何使用ConfigMap配置NginX入口控制器的文档:https : //kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
不幸的是,我不知道并且在任何地方都找不到如何从我的Ingress控制器加载该ConfigMap的信息。
我的入口控制器:
helm install --name ingress --namespace ingress-nginx --set rbac.create=true,controller.kind=DaemonSet,controller.service.type=ClusterIP,controller.hostNetwork=true stable/nginx-ingress
Run Code Online (Sandbox Code Playgroud)
我的配置图:
kind: ConfigMap
apiVersion: v1
metadata:
name: ingress-configmap
data:
proxy-read-timeout: "86400s"
client-max-body-size: "2g"
use-http2: "false"
Run Code Online (Sandbox Code Playgroud)
我的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- my.endpoint.net
secretName: ingress-tls
rules:
- host: my.endpoint.net
http:
paths:
- path: /
backend:
serviceName: web
servicePort: 443
- path: /api
backend:
serviceName: api
servicePort: 443
Run Code Online (Sandbox Code Playgroud)
如何使我的Ingress从ConfigMap加载配置?
在GKE Ingress 文档中 指出:
当您创建 Ingress 对象时,GKE Ingress 控制器会创建一个 Google Cloud HTTP(S) 负载均衡器,并根据 Ingress 及其关联服务中的信息对其进行配置。
对我来说,我似乎无法通过单个 GCP 入口控制器拥有多个入口资源。相反,GKE 为每个入口资源创建一个新的入口控制器。
真的是这样吗?或者 GKE 中的单个入口控制器是否可以拥有多个入口资源?
我希望有一个 GCP LoadBalancer 作为配置了静态 IP 和 DNS 的入口控制器,然后在集群中运行多个应用程序,每个应用程序使用应用程序特定的主机和/或路径规范注册自己的入口资源。
请注意,我对 GKE、GCP 和 Kubernetes 总体来说还很陌生,所以我可能误解了一些东西。
google-cloud-platform kubernetes google-kubernetes-engine kubernetes-ingress
我有带有 Ingress/Traefik 控制器的 Kubernetes 集群
另外,我使用这里的标准配置安装了仪表板:https : //raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
我正在尝试通过 Ingress 访问仪表板,但出现 404 错误
404 page not found
Run Code Online (Sandbox Code Playgroud)
我的 ingress.yml 文件看起来像这样
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "traefik"
name: app-ingress-system
namespace: kube-system
spec:
tls:
- hosts:
- dashboard.domain.com
secretName: kubernetes-dashboard-certs
rules:
- host: dashboard.domain.com
http:
paths:
- path: /
backend:
serviceName: kubernetes-dashboard
servicePort: 443
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的 - 路径:(如 /dashboard、/proxy)相同的结果
我正在尝试设置入口负载平衡器。基本上,我有一个具有多个路径的后端服务。
假设我的后端 NodePort 服务名称是 hello-app。与此服务关联的 pod 公开多个路径,如 /foo 和 /bar。下面是例子
NodePort 服务和相关部署
apiVersion: v1
kind: Service
metadata:
name: hello-app
spec:
selector:
app: hello-app
type: NodePort
ports:
- protocol: "TCP"
port: 7799
targetPort: 7799
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app
labels:
app: hello-app
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: us.gcr.io/hello-app:latest
Run Code Online (Sandbox Code Playgroud)
现在提出如下请求,我面临 404 错误。
http://{ingress-address:port}/foo
http://{ingress-address:port}/bar
Run Code Online (Sandbox Code Playgroud)
我也尝试过以下入口配置,但在这两种情况下都没有帮助。
入口配置 1
http://{ingress-address:port}/foo
http://{ingress-address:port}/bar
Run Code Online (Sandbox Code Playgroud)
入口配置 2
apiVersion: extensions/v1beta1
kind: Ingress
metadata: …Run Code Online (Sandbox Code Playgroud) 我在 GCP 中使用 terraform 创建了一个全局静态 IP 地址。但是,当我尝试将其分配给 GKE 集群内的入口控制器时,它会被忽略:
这是我的 kubernetes 配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: homefully-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: "homefully-ingress-root"
labels:
app: homefully-ingress
spec:
# ...
Run Code Online (Sandbox Code Playgroud)
此处引用的 IP 地址如下所示:
NAME REGION ADDRESS STATUS
homefully-ingress-root europe-west3 35.234.83.106 RESERVED
Run Code Online (Sandbox Code Playgroud)
然而,进入并没有使用该IP地址,但另一个随机一个。这是一个相当大的问题,因为我没有使用谷歌的 DNS 服务,所以我需要依赖静态 IP。
相反,这就是我得到的:
Name: homefully-ingress
Namespace: default
Address: 35.227.252.112
Default backend: auth-proxy-staging:4180 (10.4.0.7:4180)
Rules:
Host Path Backends
---- ---- --------
adminpanel.homefully.tech
homefully-management-frontend-website-staging:80 (10.4.2.7:80)
Annotations:
kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"gce","kubernetes.io/ingress.global-static-ip-name":"homefully-ingress-root"},"labels":{"app":"homefully-ingress"},"name":"homefully-ingress","namespace":"default"},"spec":{"backend":{"serviceName":"auth-proxy-staging","servicePort":4180},"rules":[{"host":"adminpanel.homefully.tech","http":{"paths":[{"backend":{"serviceName":"homefully-management-frontend-website-staging","servicePort":80}}]}}]}}
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.global-static-ip-name: homefully-ingress-root
ingress.kubernetes.io/backends: {"k8s-be-31611--026ed6556721059b":"Unknown","k8s-be-32450--026ed6556721059b":"Unknown"}
ingress.kubernetes.io/forwarding-rule: k8s-fw-default-homefully-ingress--026ed6556721059b
ingress.kubernetes.io/target-proxy: k8s-tp-default-homefully-ingress--026ed6556721059b
ingress.kubernetes.io/url-map: …Run Code Online (Sandbox Code Playgroud) google-cloud-platform google-kubernetes-engine kubernetes-ingress
I am running Ingress for some services on Kubernetes, and although services are re-directing to those cluster IPs (somewhat correctly), I am not sure how to correctly resolve paths after just those basic paths, for example, if I have Tomcat in path / and Nginx on path /nginx, any Tomcat path after / does not resolve and neither does any Nginx path resolve for even /. I already have nginx.ingress.kubernetes.io/rewrite-target: / set in my ingress.yaml:
apiVersion: extensions/v1beta1 …Run Code Online (Sandbox Code Playgroud) Kubernetes 中的 Nginx 入口控制器和 HAProxy 负载均衡器有什么区别?
我正在尝试将我的入口连接到静态 IP。我似乎正在遵循所有教程,但似乎仍然无法将我的静态 ip 附加到入口。我的ingress文件如下(参考静态ip“test-ip”)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-web
annotations:
kubernetes.io/ingress.global-static-ip-name: "test-ip"
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/add-base-url: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
rules:
- http:
paths:
- path: /api/
backend:
serviceName: api-cluster-ip-service
servicePort: 5005
- path: /
backend:
serviceName: web-cluster-ip-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
然而,当我跑
kubectl get ingress ingress-web
Run Code Online (Sandbox Code Playgroud)
它返回
kubectl get ingress ingress-web
NAME HOSTS ADDRESS PORTS AGE
ingress-web * 80 4m
Run Code Online (Sandbox Code Playgroud)
不给地址。在 VPC 网络中 [外部 IP 地址] 静态 ip 在那里,它是全局的,但它一直说:In use by None
gcloud compute addresses describe test-ip --global
Run Code Online (Sandbox Code Playgroud)
给
address: …Run Code Online (Sandbox Code Playgroud) static-ip-address google-cloud-platform kubernetes-ingress nginx-ingress
现在我使用 Ingress-Nginx 作为外部流量的路由服务。但是很少有文章介绍Ingress是如何玩JWT认证来保护内部API的。有人可以分享一些有关它的信息吗?
在 GKE 上,K8s Ingress 是 Compute Engine 提供的负载均衡器,它们有一定的成本。例如 2 个月我支付了 16.97 欧元。
在我的集群中,我有 3 个命名空间(default,dev和prod),因此为了降低成本,我想避免产生 3 个 LoadBalancer。问题是如何配置当前的指向正确的命名空间?
GKE 要求入口的目标 Service 类型为NodePort,由于该限制,我被卡住了。
我想做类似的事情:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: dev
annotations: # activation certificat ssl
kubernetes.io/ingress.global-static-ip-name: lb-ip-adress
spec:
hosts:
- host: dev.domain.com
http:
paths:
- path: /*
backend:
serviceName: dev-service # This is the current case, 'dev-service' is a NodePort
servicePort: http
- host: domain.com
http:
paths:
- path: /*
backend:
serviceName: …Run Code Online (Sandbox Code Playgroud)