基于Kubernetes中networkPolicy的隔離策略測試(2018-08-23)

前言

Kubernetes提供了namesapce,用來做多租戶隔離,但是如果不配置網(wǎng)絡(luò)策略,namespace的隔離也僅僅是作用于在kubernetes編排調(diào)度時的隔離,實際上不同namespace下的pod還是可以相互串通的。此時就需要使用Kubernetes提供的networkPolicy,用于隔離不同租戶的應用并減少攻擊面。networkpolicy通過標簽選擇器來模擬傳統(tǒng)的網(wǎng)絡(luò)物理隔離,并通過不同的策略完成訪問方向的管控。

環(huán)境

  • Kubernetes 1.10.2
  • Calico 3.1.0

步驟

calico 預先已部署完畢,參考官網(wǎng)即可,沒有特殊配置

(下述代碼中類似的均只寫一份)

  1. 創(chuàng)建兩個namespace: test1-ns test2-ns

    test1-ns.yml

apiVersion:v1
kind: Namespace
metadata:
  name: test1-ns
  labels:
    project: test1-ns
  1. 分別在兩個namespace下創(chuàng)建pod: test1.yml test2.yml

    test1.yml

    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: test1
      namespace: test1-ns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test1
      template:
        metadata:
          name: test1
          labels:
            app: test1
            project: test1-ns
        spec:
          containers:
          - name: test1
            image: hub.xxxxxxxx.com.cn/private/caiyt/hello:1.0.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: test1
      namespace: test1-ns
    spec:
      selector:
        app: test1
      type: NodePort
      ports:
         - name: test1-http
         port: 8080
         targetPort: 8080
         nodePort: 30451
    
    
    
  1. 測試互訪


    互訪測試

    目前可以看到,test1和test2是可以互相連通的

  2. 創(chuàng)建networkPolicy.yml

    apiVersion: networking.k8s.io/v1
    metadata:
      name: test
      namespace: test1-ns
    spec:
      podSelector:
        matchLabels:
          project: test1-ns
      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              project: test1-ns
    
  3. 測試聯(lián)通性


    添加策略后的互訪

因為針對test1的namespace做了策略限制,可見到由其他的命名空間中的pod無法訪問test1-ns中的pod,但是反向即可。

  1. 外網(wǎng)訪問測試

    - ipBlock:
        cidr: 10.20.1.0/24
    

    添加calico所創(chuàng)建tunl0@NONE網(wǎng)段訪問策略后,外網(wǎng)訪問可成功


    外網(wǎng)訪問
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容