我想创建一个自定义的 403 错误页面。目前我已经创建了一个 Ingress 并且在注释中我有这样的东西:
"nginx.ingress.kubernetes.io/whitelist-source-range": "100.01.128.0/20,88.100.01.01"
Run Code Online (Sandbox Code Playgroud)
因此,在该 IP 范围之外访问我的 Web 应用程序的任何尝试都会收到 403 错误。
为了创建自定义页面,我尝试添加以下注释:
"nginx.ingress.kubernetes.io/custom-http-errors": "403",
"nginx.ingress.kubernetes.io/default-backend": "default-http-backend"
Run Code Online (Sandbox Code Playgroud)
其中 default-http-backend 是已部署的应用程序的名称。

入口有这个:
{
"kind": "Ingress",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "my-app-ingress",
"namespace": "my-app-test",
"selfLink": "/apis/extensions/v1beta1/namespaces/my-app-test/ingresses/my-app-ingress",
"uid": "8f31f2b4-428d-11ea-b15a-ee0dcf00d5a8",
"resourceVersion": "129105581",
"generation": 3,
"creationTimestamp": "2020-01-29T11:50:34Z",
"annotations": {
"kubernetes.io/ingress.class": "nginx",
"nginx.ingress.kubernetes.io/custom-http-errors": "403",
"nginx.ingress.kubernetes.io/default-backend": "default-http-backend",
"nginx.ingress.kubernetes.io/rewrite-target": "/",
"nginx.ingress.kubernetes.io/whitelist-source-range": "100.01.128.0/20,90.108.01.012"
}
},
"spec": {
"tls": [
{
"hosts": [
"my-app-test.retail-azure.js-devops.co.uk"
],
"secretName": "ssl-secret"
}
],
"rules": [
{
"host": "my-app-test.retail-azure.js-devops.co.uk",
"http": {
"paths": [ …Run Code Online (Sandbox Code Playgroud) 我在私有网络(私有服务器,不是 aws 或 google cloud)上有一个 kubernetes 集群,并且我创建了一个能够访问的服务,但是,我需要能够从集群外部访问,为此我创建了一个 Ingress并在集群中添加了 ingress-nginx。
这是我在多次尝试后使用的 YAML:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: k8s.local
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: ClusterIP
selector:
name: nginx
ports:
- port: 80
targetPort: 80
protocol: TCP
# selector:
# app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
app: …Run Code Online (Sandbox Code Playgroud) 我有一个ExternalName服务:
apiVersion: v1
kind: Service
metadata:
name: external
namespace: default
spec:
externalName: my-site.com
ports:
- port: 443
protocol: TCP
targetPort: 443
type: ExternalName
Run Code Online (Sandbox Code Playgroud)
和一个入口路径:
spec:
rules:
- http:
paths:
- backend:
serviceName: external
servicePort: 443
path: /*
Run Code Online (Sandbox Code Playgroud)
但是保存入口返回:
同步期间出错:评估入口规范时出错:服务“default/external”的类型为“ExternalName”,预期为“NodePort”或“LoadBalancer”
GCE ingress应该支持ExternalName服务(或者至少没有容易找到的文档表明其他情况)并且该错误很难追踪。
I have a small java webapp comprising of three microservices - api-service,book-service and db-service all of which are deployed on a kubernetes cluster locally using minikube.
I am planning to keep separate UIs for api-service and book-service , with the common static files served from a separate pod, probably an nginx:alpine image.
I was able to create a front end that serves the static files from nginx:alpine referring to this tutorial.
I would like to use ingress-nginx controller …
我在专用子网中运行EKS,因此无法创建面向Internet的负载均衡器,但能够创建内部LoadBalancer。
有什么方法可以在公共子网中创建Loadbalancer(可能是手动)并指向在私有子网中的EKS中运行的Pod。
我正在考虑创建一个负载平衡器链,其中外部负载平衡器将指向内部负载平衡器,但这也是不可能的,因为内部负载平衡器的IP地址是保留IP。
我可以尝试其他方法将流量从互联网路由到Pod吗?
internal-load-balancer kubernetes-ingress aws-load-balancer amazon-eks
经过大量的谷歌搜索和搜索(即使在这里),我无法找到我的问题的明确答案。所以我希望这里的某个人能够为我指明正确的方向。
我有一个已经对我有用的 Kube 服务定义,但现在我只是用一个LoadBalancer. 这是我当前的服务 yaml:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: namespace1
labels:
app: my-service
spec:
type: LoadBalancer
selector:
app: my-service
tier: web
ports:
- name: proxy-port
port: 8080
targetPort: 8080
- name: metrics-port
port: 8082
targetPort: 8082
- name: admin-port
port: 8092
targetPort: 8092
- name: grpc-port
port: 50051
targetPort: 50051
Run Code Online (Sandbox Code Playgroud)
这显然只是 TCP 负载平衡。我想要做的是使用 Mutual TLS 来保护它,这样服务器将只接受来自我的客户端的具有授权证书的连接。
从我在 Kube 土地上所能知道的一切来看,我需要做的是一个Ingress定义。我一直在研究我可以找到的所有文档kind:Ingress,但似乎找不到任何可以让我在同一路径上创建Ingress具有多个端口的单个文档的地方!
我在这里错过了什么吗?有没有办法创建一个Ingress与上述服务定义具有相同功能的 …
我需要在 kubernetes 集群上设置一个基本的 rabbit mq 实例(没有集群设置),而没有持久性或安全性要求。
我需要的:
单个rabbit mq pod作为有状态集运行,副本数= 1,并通过特定的url(amgp端口和管理接口端口)从集群内部和外部访问它
我不需要的东西:
到目前为止,我发现的舵图都是通过集群、持久性等解决生产设置的,但我不需要这些东西,因为我将仅使用实例进行测试
这是我到目前为止:
apiVersion: v1
kind: Service
metadata:
name: rs-rmq-mgt
spec:
selector:
app: rs-rmq
ports:
- protocol: TCP
port: 1337
targetPort: 15672
type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rs-rmq
spec:
selector:
matchLabels:
app: rs-rmq
serviceName: "rs-rmq"
replicas: 1
template:
metadata:
labels:
app: rs-rmq
spec:
containers:
- name: rs-rmq
image: rabbitmq:management
ports:
- containerPort: 25672
- containerPort: 5672
- containerPort: 4369
- containerPort: 15672
Run Code Online (Sandbox Code Playgroud) rabbitmq kubernetes kubernetes-ingress kubernetes-statefulset
Nginx 控制器对本地中的任何入口资源设置抛出 404 错误。
nginx-ingress 控制器设置是根据以下文档中详细的步骤进行的,并且入口控制器在本地设置中公开为 NodePort 服务
以下示例入口资源用于测试入口蕉.yaml
kind: Pod
apiVersion: v1
metadata:
name: banana-app
namespace: nginx-ingress
labels:
app: banana
spec:
containers:
- name: banana-app
image: hashicorp/http-echo
args:
- "-text=banana"
---
kind: Service
apiVersion: v1
metadata:
name: banana-service
namespace: nginx-ingress
spec:
selector:
app: banana
ports:
- port: 5678
Run Code Online (Sandbox Code Playgroud)
苹果.yaml
kind: Pod
apiVersion: v1
metadata:
name: apple-app
namespace: nginx-ingress
labels:
app: apple
spec:
containers:
- name: apple-app
image: hashicorp/http-echo
args:
- "-text=apple"
---
kind: Service
apiVersion: v1
metadata:
name: …Run Code Online (Sandbox Code Playgroud) 我已经为我的应用程序配置了亚马逊证书管理器、ALB 入口控制器和域名。我可以通过端口 80 和端口 443 访问我的应用程序(所有证书都可以正常工作)。但是,我想将所有来自 HTTP 的流量自动重定向到 HTTPS,以便将自己输入域名的人重定向到 HTTPS。我按照这个网页和这一个,但我不能使它工作
这是我的 ingress.yaml 文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: metabase
namespace: bigdata
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:***:certificate/***
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
alb.ingress.kubernetes.io/scheme: internet-facing
labels:
app: metabase
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: ssl-redirect
servicePort: use-annotation
- path: /*
backend:
serviceName: metabase
servicePort: 3000
Run Code Online (Sandbox Code Playgroud)
这是我的服务:
apiVersion: v1
kind: Service
metadata:
name: metabase …Run Code Online (Sandbox Code Playgroud) 我在 Windows 的“Docker 桌面”上运行 Kubernetes。
我有一个用于部署的 LoadBalancer 服务,其中有 3 个副本。我想通过某种方式访问特定的 pod (例如通过 URL 路径:<serviceIP>:8090/pod1)。
有没有办法实现这个用例?
部署.yaml:
Run Code Online (Sandbox Code Playgroud)apiVersion: v1 kind: Service metadata: name: my-service1 labels: app: stream spec: ports: - port: 8090 targetPort: 8090 name: port8090 selector: app: stream # clusterIP: None type: LoadBalancer --- apiVersion: apps/v1beta2 kind: Deployment metadata: name: stream-deployment labels: app: stream spec: replicas: 3 selector: matchLabels: app: stream strategy: type: Recreate template: metadata: labels: app: stream spec: containers: - image: stream-server-mock:latest name: stream-server-mock imagePullPolicy: Never env: …