使用 Ambassador 插件

概述

Ambassador 允许访问在 minikube 内部运行的 Kubernetes 服务。Ambassador 可以通过 Ingress 资源和 Mapping 资源进行配置。

前提条件

  • Minikube 版本高于 v1.10.1
  • kubectl

配置 Ambassador

安装 Ambassador

Ambassador 可作为 Minikube 的插件使用。通过运行以下命令安装它 -

minikube addons enable ambassador

这将在 ambassador 命名空间中安装 Ambassador。

通过 minikube tunnel 访问 Ambassador

ambassador 服务类型为 LoadBalancer。要访问此服务,请在单独的终端中运行 Minikube tunnel

minikube tunnel

现在,您可以通过分配给 ambassador 服务的外部 IP 地址访问 Ambassador。使用以下命令获取外部 IP 地址:

kubectl get service ambassador -n ambassador
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
ambassador   LoadBalancer   10.104.86.124   10.104.86.124   80:31287/TCP,443:31934/TCP   77m

通过 Ingress 资源配置

在本教程中,我们将通过 Ingress 资源配置 Ambassador。要通过 IngressClass 资源进行配置,请阅读此帖子

首先,让我们创建一个 Kubernetes 部署和服务,我们将通过 Ambassador 与之通信。

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --port=8080

hello-minikube 服务类型为 ClusterIP,无法从集群外部访问。

现在,创建一个 Ingress 资源,该资源在路径 /hello/ 上公开此服务。

注意: Ingress 资源必须具有注解 kubernetes.io/ingress.class: ambassador,以便 Ambassador 可以识别它。

hello-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: ambassador
  name: test-ingress
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          serviceName: hello-minikube
          servicePort: 8080

运行以下命令:

kubectl apply -f hello-ingress.yaml

就是这样!现在,您可以通过 Ambassador 访问您的服务了。

curl http://<Ambassdor's External IP'/hello/>

注意: 有关使用 Ambassador 的更高级的 Ingress 配置,例如 TLS 终止和基于名称的虚拟主机,请参阅 Ambassador 的文档

通过 Mapping 资源配置

虽然 Ambassador 理解 Ingress 规范,但 Ingress 规范并未利用 Ambassador 的所有功能。Mapping 资源是 Ambassador 的核心资源,它将目标后端服务映射到给定的主机或前缀。

让我们创建另一个 Kubernetes 部署和服务,我们将通过 Ambassador 公开它 -

kubectl create deployment mapping-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment mapping-minikube --port=8080

mapping-minikube 服务类型为 ClusterIP,无法从集群外部访问。

现在,让我们创建一个映射,通过 Ambassador 在路径 /hello-mapping/ 上公开此服务。

hello-mapping.yaml

apiVersion: getambassador.io/v2
kind:  Mapping
metadata:
  name:  mapping-minikube
spec:
  prefix: /hello-mapping/
  service: mapping-minikube.default:8080

运行以下命令:

kubectl apply -f hello-mapping.yaml

就是这样!现在,您可以通过 Ambassador 访问您的服务了。

curl http://<Ambassdor's External IP'/hello-mapping/>

注意: 在 Ambassador 的文档中阅读有关映射的更多信息


最后修改于 2023 年 7 月 7 日:将插件自述文件添加到网站 (cf976f6dd)