IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    istio: 隔离

    Zlatan Eevee发表于 2022-06-27 08:11:12
    love 0
    • namespace级别开关服务网格
    • Pod级别开关服务网格
    • exportTo

    namespace级别开关服务网格

    kubectl label ns xxx istio-injection=enable --overwrite
    

    关闭服务网格

    kubectl label namespace default istio-injection-
    

    全集群所有ns查看开启服务网格的namespace

    kubectl get namespace -L istio-injection
    

    Pod级别开关服务网格

    可以通过在Pod的label上设置sidecar.istio.io/inject为true/false,在Pod级别进行控制是否开启服务网格。

      template:
        metadata:
          labels:
            app: nginx
            sidecar.istio.io/inject: "false"
        spec:
          containers:
          - image: nginx
    

    从而针对性的对服务开启或关闭服务网格,即使这个namespace整体开启了服务网格。

    kubectl get pods
    NAME                                          READY   STATUS    RESTARTS   AGE
    debian-77dc9c5f4f-q2hb2                       2/2     Running   0          14h
    nginx-58df487b65-4n2qc                        1/1     Running   0          4m38s
    

    exportTo

    istio的策略(service entry, virtual service 等)支持namespace隔离。默认策略是全服务网格集群内可见,用户可以配置exportTo,从而限制其可见范围。

    如下,将限制该service entry 仅 namespace istio-demo可见。

    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: nginx
      namespace: istio-demo
    spec:
      exportTo:
      - .
      hosts:
      - nginx.example.com
      location: MESH_INTERNAL
      ports:
      - name: http
        number: 80
        protocol: HTTP
      resolution: STATIC
      workloadSelector:
        labels:
          app: nginx
    

    如果需要其他namespace可见,则需要在exportTo中增加对应的namespace。

    Ref:

    https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#controlling-the-injection-policy



沪ICP备19023445号-2号
友情链接