Cilium Istio集成起步

备注

YouTube上 LF Live Webinar: Proxyful or Proxyless: Digging into Istio with Cilium 对Cilium集成Istio进行了解析,视频演讲者是 Istio in Action 的作者( solo.io 的CTO )。

Cilium集成Istio的方案为Cilium增强了通过Istio sidecar代理实现的具有mTLS加密流量的HTTP L7网络策略。需要注意,Istio也可以独立于Cilium集成单独部署,此时运行标准版 istioctl 。这个模式下,Cilium增强型HTTP L7策略不是通过Istio sidecar proxy实现的,虽然这个模式也能工作,但是不能使用mTLS。

设置Cilium

备注

如果采用 Cilium完全取代kube-proxy运行Kubernetes 架构(我部署 Kubernetes集群(z-k8s) 采用该模式),就需要在 cilium CLI 传递 --config bpf-lb-sock-hostns-only=true 或者 在 helm 选项中使用 socketLB.hostNamespaceOnly 。如果没有这个选项,当Cilium通过socket负载均衡提供服务解析(service resolution)时,会bypass掉Istio sidecar,这就导致Istio的加密(encryption)和遥测(telemetry)功能无效。

我在 Cilium完全取代kube-proxy运行Kubernetes 更新 Socket LoadBalancer Bypass in Pod Namespace :

简化且正确配置方法: 更新Cilium kube-proxy free配置,激活 socketLB.hostNamespaceOnly 以集成Istio(不修改默认配置)
API_SERVER_IP=z-k8s-api.staging.huatai.me
API_SERVER_PORT=6443
helm upgrade cilium cilium/cilium --version 1.12.1 \
   --namespace kube-system \
   --reuse-values \
   --set kubeProxyReplacement=strict \
   --set socketLB.hostNamespaceOnly=true \
   --set k8sServiceHost=${API_SERVER_IP} \
   --set k8sServicePort=${API_SERVER_PORT}

安装cilium-istioctl

  • 检查确认cilium已经运行在集群中:

    cilium status
    
  • 下载 cilium enhanced istioctl :

下载cilium增强istioctl
curl -L https://github.com/cilium/istio/releases/download/1.10.6-1/cilium-istioctl-1.10.6-1-linux-amd64.tar.gz | tar xz
  • 部署默认istio配置到Kubernetes:

安装cilium增强istioctl
./cilium-istioctl install -y

提示信息:

✔ Istio core installed
✔ Istiod installed
✔ Ingress gateways installed
✔ Installation complete
Thank you for installing Istio 1.10.  Please take a few minutes to tell us about your install/upgrade experience!  https://forms.gle/KjkrDnMPByq7akrYA
为namespace添加标签,以便istio能够自动注入sidecar proxy
kubectl label namespace default istio-injection=enabled

备注

Cilium Getting Started Using Istio 提供了Istio官方案例部署步骤,用于验证,我还没有实践。我准备系统学习istio,可能会补充

参考