Skip to content

Fence is an open source project to manage istio custom resources Sidecar.

License

Notifications You must be signed in to change notification settings

hexiaodai/fence

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fence(English

Fence 是一个开源项目,用于自动管理 Istio 自定义资源 Sidecar

背景

服务网格内服务数量过多时,Envoy 配置量太大,新上的应用长时间处于 Not Ready 状态。为此运维人员需要管理自定义资源 Sidecar,手动为应用配置服务依赖关系。

Fence 拥有自动获取服务依赖关系的能力,提供自动管理自定义资源 Sidecar

架构

架构图

性能指标

在 Kubenetes 集群中部署 250 个 Pod。启用 Fence 前 XDS Response Bytes Max 峰值 450 kB/s,Proxy Push Time 峰值 20s;启用 Fence 后 XDS Response Bytes Max 峰值 27 kB/s,Proxy Push Time 峰值 5s。综上,启用 Fence 自动管理 Sidecar 资源后 XDS Response Bytes Max 的峰值减少了约 94%,Proxy Push Time 的峰值减少了约 75%。

启用 Fence 前

xds requests size

启用 Fence 后

xds requests size

安装和使用

Use kubectl

kubectl create namespace fence
kubectl apply -f "https://raw.githubusercontent.com/hexiaodai/fence/0.1.0/deploy/fence.yaml"

Use helm

helm install fence --create-namespace -n fence oci://registry-1.docker.io/hejianmin/chart-fence --version 0.1.0

Fence 有两种自动管理集群中自定义资源 Sidecar 的方式:

注意:Fence 不会管理系统名称空间 kube-systemistio-system 下的 Sidecar。

  • 管理整个集群,这是默认行为
kubectl -n fence set env deployment/fence AUTO_FENCE="true"
  • 指定需要管理的 Namespace 或 Pod
kubectl -n fence set env deployment/fence AUTO_FENCE="false"
# 名称空间
kubectl label namespace ${namespace name} sidecar.fence.io=enabled
# Pod
kubectl label pods ${pod name} sidecar.fence.io=enabled
  • 指定不需要管理的 Namespace 或 Pod
# 名称空间
kubectl label namespace ${namespace name} sidecar.fence.io=disable
# Pod
kubectl label pods ${pod name} sidecar.fence.io=disable

About

Fence is an open source project to manage istio custom resources Sidecar.

Resources

License

Stars

Watchers

Forks

Packages

No packages published