Istio MultiCluster网络策略

时间:2020-02-05 07:42:07

标签: security networking kubernetes devops istio

我在两个kubernetes集群上都有一个ISTIO作为复制控制平面。就我而言,某些网络策略限制了标记的部署对象访问,但是这些策略仅在一个集群上起作用。

如何在Istio上的两个集群之间实现域和服务限制?你有什么建议吗?

谢谢

示例网络策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: policy-new
  namespace: point-1
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          run: app2
  podSelector:
    matchLabels:
      run: app

1 个答案:

答案 0 :(得分:0)

Kubernetes NetworkPolicy对于多集群的使用可能有限。

最好使用Istio的AuthorizationPolicy。根据istio文档:

要配置Istio授权策略,请创建一个AuthorizationPolicy resource

授权策略包括选择器和规则列表。选择器指定策略适用的目标,而规则指定可以在条件下执行做什么。强>。具体来说:

  • 目标是指selector中的AuthorizationPolicy部分。
  • 是指from的{​​{1}}中的rule部分。
  • 什么是指AuthorizationPolicy的{​​{1}}中的to部分。
  • 条件是指rule的{​​{1}}中的AuthorizationPolicy部分。

每个规则都有以下标准字段:

  • when :来源列表。
  • rule :操作列表。
  • AuthorizationPolicy :自定义条件列表。

以下示例显示了一个from,它允许两个源(服务帐户to和名称空间when)访问带有标签AuthorizationPolicycluster.local/ns/default/sa/sleep的工作负载当使用有效的JWT令牌发送请求时,在foo名称空间中。

dev

我还建议阅读thisthis的istio博客文章,其中涉及多集群安全性,以及有关Admiral的istio-ecosystem开源项目,该项目提供自动配置生成,同步和多集群Istio服务网格的服务发现。

除我们使用app: httpbinversion: v1apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: httpbin namespace: foo spec: selector: matchLabels: app: httpbin version: v1 rules: - from: - source: principals: ["cluster.local/ns/default/sa/sleep"] - source: namespaces: ["dev"] to: - operation: methods: ["GET"] when: - key: request.auth.claims[iss] values: ["https://accounts.google.com"] 对象指定的流量外,可以将“ Ambassador”配置为锁定通信。

希望这会有所帮助。