我想创建一个可以链接到保留 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 安装(或升级)中将发布服务链接到 …
我们的 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
我想在 k8s 中为我的所有服务提供一个入口,并为入口提供一个基本的身份验证。但是对于身份验证轮换,我想支持用户的辅助身份验证,以便在他们重新生成主键时可以到达端点。
我目前可以按照本指南设置具有单一基本身份验证的入口。
我正在尝试将我的域“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) 我正在通过 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) 我已经在 Minikube 上设置了一个“hello world”入口,如教程中所述。唯一的区别 - 我删除了特定的主机名以使用 \'*\' 代替。然而,它似乎只能与 minikube ( ) 提供的入口控制器一起使用minikube addons enable ingress。当我尝试禁用它并使用helm install nginx-ingress stable/nginx-ingress它时,我无法再访问 Hello World 示例网站。我收到“连接被拒绝”错误:
$ 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) 我在 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?
如何使用 ingress-nginx 在单个集群中配置多个外部 IP?
我可以看到 ingress-nginx 使用外部 IP 创建了一个负载均衡器服务。我认为我需要创建另一个负载均衡器服务?我如何在入口中指示要使用哪个负载均衡器?
PS我正在使用GKE。
我有一个问题,我正在 [主机名]/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
我在尝试使用类型为 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)