标签: kubernetes-ingress

如何在 Kubernetes 中设置自定义 HTTP 错误

我想创建一个自定义的 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)

kubernetes kubernetes-ingress

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

如何在 Kubernetes 中公开 Ingress 以供外部访问?

我在私有网络(私有服务器,不是 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)

kubernetes kubernetes-ingress nginx-ingress

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

使用 GCE + ExternalName 创建入口路径时出错

我有一个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服务(或者至少没有容易找到的文档表明其他情况)并且该错误很难追踪。

google-kubernetes-engine kubernetes-ingress

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

How to serve static contents in a kubernetes application

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 …

nginx docker kubernetes microservices kubernetes-ingress

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

私有子网中的EKS,公共子网中的负载均衡器

我在专用子网中运行EKS,因此无法创建面向Internet的负载均衡器,但能够创建内部LoadBalancer。

有什么方法可以在公共子网中创建Loadbalancer(可能是手动)并指向在私有子网中的EKS中运行的Pod。

我正在考虑创建一个负载平衡器链,其中外部负载平衡器将指向内部负载平衡器,但这也是不可能的,因为内部负载平衡器的IP地址是保留IP。

我可以尝试其他方法将流量从互联网路由到Pod吗?

internal-load-balancer kubernetes-ingress aws-load-balancer amazon-eks

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

Kubernetes入口相同路径多个端口

经过大量的谷歌搜索和搜索(即使在这里),我无法找到我的问题的明确答案。所以我希望这里的某个人能够为我指明正确的方向。

我有一个已经对我有用的 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-ingress

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

如何在 kubernetes 上设置基本的rabbitmq

我需要在 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

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

Nginx Ingress 给出 404 未找到任何入口资源

Nginx 控制器对本地中的任何入口资源设置抛出 404 错误。

nginx-ingress 控制器设置是根据以下文档中详细的步骤进行的,并且入口控制器在本地设置中公开为 NodePort 服务

https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md#5-access-the-live-activity-monitoring-dashboard--stub_status-page

以下示例入口资源用于测试入口蕉.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)

nginx kubernetes-ingress nginx-ingress

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

如何使用 Amazon EKS 上的 kubernetes 入口控制器将 http 重定向到 https

我已经为我的应用程序配置了亚马逊证书管理器、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)

kubernetes kubernetes-ingress amazon-eks

9
推荐指数
3
解决办法
2万
查看次数

如何通过 Kubernetes 服务(如网关 API)路由到特定的 pod

我在 Windows 的“Docker 桌面”上运行 Kubernetes。

我有一个用于部署的 LoadBalancer 服务,其中有 3 个副本。我想通过某种方式访问​​特定的 pod (例如通过 URL 路径:<serviceIP>:8090/pod1)

有没有办法实现这个用例?


部署.yaml:

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: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress kubernetes-pod

9
推荐指数
3
解决办法
3556
查看次数