Emissary-ingress 3.10 快速入门指南
项目概述
Emissary-ingress 是一个基于 Envoy 构建的开源 API 网关和 Kubernetes Ingress 控制器,专为云原生环境设计。它提供了强大的流量管理能力,支持多种协议,并简化了微服务架构中的服务路由和策略管理。
安装准备
在开始安装前,请确保您的环境满足以下要求:
- 已安装 Kubernetes 集群(版本 1.16 或更高)
- 已配置 kubectl 命令行工具
- 已安装 Helm 包管理器(版本 3.0 或更高)
全新安装指南
1. 安装 CRD(自定义资源定义)
对于全新安装且不需要考虑旧版本兼容性的用户,推荐使用以下命令安装最新版本的 CRD:
helm install emissary-crds \
--namespace emissary --create-namespace \
oci://ghcr.io/emissary-ingress/emissary-crds-chart --version=3.10.0 \
--set enableLegacyVersions=false \
--wait
此命令会:
- 创建名为 emissary 的命名空间
- 仅安装 v3alpha1 版本的 CRD
- 跳过转换 webhook 的安装
2. 安装 Emissary 核心组件
完成 CRD 安装后,继续安装 Emissary 主程序:
helm install emissary \
--namespace emissary \
oci://ghcr.io/emissary-ingress/emissary-ingress --version=3.10.0 \
--set waitForApiext.enabled=false \
--wait
从旧版本升级指南
1. 升级 CRD 和转换 Webhook
对于从旧版本升级的用户,需要安装完整的 CRD 版本和转换 webhook:
helm install emissary-crds \
--namespace emissary-system --create-namespace \
oci://ghcr.io/emissary-ingress/emissary-crds-chart --version=3.10.0 \
--wait
此操作会:
- 安装所有版本的 CRD(v1、v2 和 v3alpha1)
- 在 emissary-system 命名空间中安装转换 webhook
2. 升级 Emissary 核心组件
helm install emissary \
--namespace emissary --create-namespace \
oci://ghcr.io/emissary-ingress/emissary-ingress --version=3.10.0 \
--wait
验证安装
安装完成后,可以通过以下命令检查服务状态:
kubectl get svc -n emissary emissary-emissary-ingress
或者使用端口转发进行本地测试:
kubectl port-forward -n emissary svc/emissary-emissary-ingress 8080:80
示例应用部署(Faces Demo)
为了验证 Emissary 是否正常工作,可以部署一个示例应用:
1. 安装 Faces 应用
helm install faces \
--namespace faces --create-namespace \
oci://ghcr.io/buoyantio/faces-chart --version 2.0.0-rc.4 \
--wait
2. 配置 Emissary 路由
创建 Listener 和 Host 资源:
apiVersion: getambassador.io/v3alpha1
kind: Listener
metadata:
name: ambassador-https-listener
spec:
port: 8443
protocol: HTTPS
securityModel: XFP
hostBinding:
namespace:
from: ALL
---
apiVersion: getambassador.io/v3alpha1
kind: Listener
metadata:
name: ambassador-http-listener
spec:
port: 8080
protocol: HTTP
securityModel: XFP
hostBinding:
namespace:
from: ALL
---
apiVersion: getambassador.io/v3alpha1
kind: Host
metadata:
name: wildcard-host
spec:
hostname: "*"
requestPolicy:
insecure:
action: Route
3. 创建路由映射
配置两个 Mapping 资源将流量路由到 Faces 服务:
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
name: gui-mapping
namespace: faces
spec:
hostname: "*"
prefix: /faces/
service: faces-gui.faces
rewrite: /
timeout_ms: 0
---
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
name: face-mapping
namespace: faces
spec:
hostname: "*"
prefix: /face/
service: face.faces
timeout_ms: 0
访问应用
完成上述配置后,可以通过以下方式访问 Faces 应用:
- 通过集群提供的 IP 地址或主机名访问
/faces/路径 - 如果使用端口转发,可通过
http://localhost:8080/faces/访问
常见问题解答
Q: 安装过程中遇到 CRD 相关错误怎么办? A: 确保 Helm 版本为 3.0 或更高,并检查 Kubernetes 集群版本是否兼容。
Q: 如何确认 Emissary 已正确安装? A: 运行 kubectl get pods -n emissary 检查所有 Pod 是否处于 Running 状态。
Q: 端口转发后无法访问服务? A: 确认是否正确配置了 Listener 和 Mapping 资源,并检查服务端口是否匹配。
通过本指南,您应该能够顺利完成 Emissary-ingress 的安装和基本配置。对于更高级的功能和配置选项,建议参考官方文档深入了解。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



