
背景
Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。提供负载均衡、SSL 终结和基于名称的虚拟托管。为了让 Ingress 资源工作,集群必须有一个正在运行的 Ingress 控制器。
Ingress 控制器 通过监控集群中的 Ingress 资源,对 HTTP 负载均衡器进行配置。
FSM 是 Flomesh 的另一款开源产品,用于 Kubernetes 南北向的流量管理。FSM 以可编程代理 Pipy 为核心,提供了 Ingress 管理器、Gateway API* 实现、负载均衡器以及跨集群的服务注册发现等功能。
从这篇开始,我们将通过多篇文章以演示的方式对 Flomesh Ingress 功能进行介绍。
演示
创建集群
export INSTALL_K3S_VERSION=v1.23.8+k3s2
curl -sfL https://get.k3s.io | sh -s - --disable traefik --disable servicelb --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config
部署架构

安装 Flomesh Ingress
通过 Helm 安装 fsm。
helm repo add fsm https://flomesh-io.github.io/fsm
helm repo update
helm install \
--namespace fsm \
--create-namespace \
--set fsm.version=0.2.1-alpha.2 \
--set fsm.ingress.tls.enabled=true \
--set fsm.serviceLB.enabled=true \
fsm fsm/fsm
示例应用
这里使用的示例应用同时提供了 HTTP 8000 和 HTTPS 8443 访问,有下面几个 path:
/返回一个简单的 HTML 页面/hi返回200Hi, there!/api/private返回401Staff only
为了提供 HTTPS,需要为应用先签发 ca 和服务端证书。
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 365000 \
-key ca-key.pem \
-out ca-cert.pem \
-subj '/CN=flomesh.io'
openssl genrsa -out server-key.pem 2048
openssl req -new -key server-key.pem -out server.csr -subj '/CN=example.com'
openssl x509 -req -in server.csr -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365
部署示例应用,先创建 Secret 将证书和密钥保存在 secret 中并挂载到应用 pod 中。
kubectl create namespace httpbin
# mount self-signed cert to sample app pod via secret
kubectl create secret generic -n httpbin server-cert \
--from-file=./server-cert.pem \
--from-file=./server-key.pem
kubectl apply -n httpbin -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: httpbin
---
apiVersion: v1
kind: Service
metadata:
name: httpbin
labels:
app: httpbin
service

本文介绍了FlomeshFSM如何作为Kubernetes的Ingress控制器,管理HTTP和HTTPS流量,包括负载均衡、证书配置、路径重写和会话保持等功能。通过示例展示了从集群创建、FlomeshFSM安装到应用配置的全过程。
最低0.47元/天 解锁文章
7719

被折叠的 条评论
为什么被折叠?



