标签: kubernetes-ingress

使用 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
查看次数

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万
查看次数

如何使用 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万
查看次数

GKE是否支持静态IP的nginx-ingress?

我一直在使用Google Cloud入口.还部署了nginx-ingress并尝试在GKE中使用static-ip地址进行设置.

  • 我们可以在同一群集中同时使用Google Cloud ingress和nginx-ingress吗?
  • 我们如何使用static-ip的nginx-ingress?

谢谢

google-cloud-platform kubernetes google-kubernetes-engine kubernetes-ingress

8
推荐指数
3
解决办法
4257
查看次数

暴露nginx作为负载均衡器与Ingress控制器有什么区别?

我知道当我们想要使用单个Load Balancer/public IP公开多个服务/路由时,可以使用Ingress.

现在我想将我的Nginx服务器暴露给公众.我有两个选择

  1. 设置service type as LoadBalancervoila我得到了公共IP
  2. 使用Nginx Ingress Controller

现在我可以使用选项1完成我的工作,何时或为什么我会选择选项2什么是在没有Ingress的情况下使用Ingress的nginx的优势?

kubernetes kubernetes-ingress

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

来自主机的microk8s的简单进入?

我想对MicroK8做两件事:

  1. 将主机(Ubuntu 18.04)端口80/443路由到Microk8s
  2. 使用类似kubernetes.io文档中定义的简单入口的内容

我的最终目标是创建一个位于Ubuntu主机上的单节点Kubernetes集群,然后使用入口将不同的域路由到服务中各自的Pod。

在过去的几天里,我一直在尝试使用Microk8s进行此操作,但是我无法解决这个问题。

  • 到目前为止,我得到的最好的结果是使用MetalLB创建负载均衡器。但这要求我使用本地网络上可用的免费IP地址,而不要使用主机IP地址。

  • 我还启用了,default-http-backend并尝试导出和编辑这些配置文件,但均未成功。

作为示例,Minikube一旦启用了入口添加功能,它将可以正常工作。此示例显示了群集IP上端口80处的基本Nginx服务器映像:

# ingress-service.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    # - host: nginx.ioo
    - http:
        paths:
          - path: /
            backend:
              serviceName: nginx-cluster-ip-service
              servicePort: 80
Run Code Online (Sandbox Code Playgroud)
# nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: nginx
  template:
    metadata:
      labels:
        component: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress microk8s

8
推荐指数
3
解决办法
2603
查看次数

如何在Helm NginX Ingress控制器上使用ConfigMap配置-Kubernetes

我找到了有关如何使用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加载配置?

kubernetes kubernetes-helm kubernetes-ingress nginx-ingress

8
推荐指数
3
解决办法
3897
查看次数

Traefik v2.2 入口路由示例不起作用

我正在尝试使用https://docs.traefik.io/routing/providers/kubernetes-crd/提供的配置设置 traefik 入口路由

我可以看到 traefik 已启动并正在运行,也可以看到仪表板。但是我在仪表板上看不到 whoami 服务,也无法通过 url 访问它。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

文件

# All resources definition must be declared
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: ingressroutes.traefik.containo.us

spec:
  group: traefik.containo.us
  version: v1alpha1
  names:
    kind: IngressRoute
    plural: ingressroutes
    singular: ingressroute
  scope: Namespaced

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: middlewares.traefik.containo.us

spec:
  group: traefik.containo.us
  version: v1alpha1
  names:
    kind: Middleware
    plural: middlewares
    singular: middleware
  scope: Namespaced

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: ingressroutetcps.traefik.containo.us

spec:
  group: traefik.containo.us
  version: v1alpha1
  names:
    kind: IngressRouteTCP
    plural: …
Run Code Online (Sandbox Code Playgroud)

kubernetes traefik kubernetes-ingress traefik-ingress

8
推荐指数
1
解决办法
8699
查看次数

具有容器原生负载平衡的 GKE Ingress 未检测到运行状况检查(字段“resource.httpHealthCheck”的值无效)

我正在 Google Kubernetes Engine 上运行一个集群,我目前正在尝试按照以下文档从使用具有外部负载平衡(和 NodePort 服务)的 Ingress 切换到具有容器原生负载平衡(和 ClusterIP 服务)的 Ingress:容器原生负载平衡

为了与我的服务进行通信,我使用了以下入口配置,在使用 NodePort 服务而不是 ClusterIP 时,这些配置过去可以正常工作:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: mw-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: mw-cluster-ip
    networking.gke.io/managed-certificates: mw-certificate
    kubernetes.io/ingress.allow-http: "false"
spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: billing-frontend-service
              servicePort: 80
          - path: /auth/api/*
            backend:
              serviceName: auth-service
              servicePort: 8083
Run Code Online (Sandbox Code Playgroud)

现在按照文档,我没有使用 readinessProbe 作为容器部署的一部分作为健康检查,而是转而使用 ClusterIP 服务与 BackendConfig 结合使用。对于每个部署,我都使用这样的服务:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: auth
  name: auth-service
  namespace: default
  annotations:
    cloud.google.com/backend-config: '{"default": "auth-hc-config"}'
spec:
  type: ClusterIP
  selector: …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine google-cloud-platform kubernetes google-kubernetes-engine kubernetes-ingress

8
推荐指数
1
解决办法
1308
查看次数