大使边缘堆栈问题

问题描述

我没有健康的上游错误。在访问大使时。 Pod / Services和Loadbalancer似乎一切正常。大使不在话下。

目前,我在Kubernetes集群中运行了多个服务,每个服务都使用自己的前缀在Mapping上。是否可以将多个k8s服务指向同一映射,以便我没有太多的前缀?我所有的k8s服务都将使用相同的大使前缀吗?

认情况下,认的大使正在引导我通过https,这会创建证书问题,尽管现在我将在不久的将来带来https,但我只是想证明这一概念,因此如何禁用HTTPS和仅做HTTP的大使? / p>

解决方法

  1. 没有健康的上游通常意味着,无论出于何种原因,大使都无法找到映射中列出的服务。看到此消息后,我通常要做的第一件事是运行kubectl exec -it -n ambassador {my_ambassador_pod_name} -- sh并尝试运行curl -v my-service,其中“ my-service”是您要尝试访问的服务的Kube DNS名称。根据响应,它可以为您提供一些提示,说明为什么大使无法看到该服务。

  2. 映射与服务基于1-1进行工作。但是,如果您的目标是避免使用前缀,则大使还有其他匹配方法可以创建路由。我见过的一种常见方法是使用基于主机的路由(https://www.getambassador.io/docs/latest/topics/using/headers/host/)并为单个或逻辑服务集创建子域。

  3. AES默认情况下重定向到HTTPS,但是可以通过应用具有不安全路由行为的主机来覆盖此行为。我通常使用的一个非常简单的方法是:

---
apiVersion: getambassador.io/v2
kind: Host
metadata:
  name: wildcard
  namespace: ambassador
spec:
  hostname: "*"
  acmeProvider:
    authority: none
  requestPolicy:
    insecure:
      action: Route
  selector:
    matchLabels:
      hostname: wildcard