使用 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 的文档中阅读有关映射的更多信息