Kubernetes/Rancher: นโยบายเครือข่ายกับ Traefik

เรากำลังใช้ Rancher เพื่อตั้งค่าคลัสเตอร์โดยมี Canal เป็น CNI เราตัดสินใจใช้ Traefik เป็น Ingress Controller และต้องการสร้าง NetworkPolicy เราปิดการใช้งาน ProjectIsolation และ Traefik กำลังทำงานอยู่ในโปรเจ็กต์ System ในเนมสเปซของระบบ kube

ฉันสร้างนโยบายนี้:

# deny all ingress traffic
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  ingress:
  - from:
    - podSelector: {}

---
# allow traefik
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-allow-traefik
spec:
  podSelector: {}
  ingress:
    - from:
      - namespaceSelector:
          matchLabels:
            namespace: kube-system
        podSelector:
          matchLabels:
            app: traefik

---
# allow backnet
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-allow-backnet
spec:
  podSelector: {}
  ingress:
    - from:
      - ipBlock:
          cidr: 10.0.0.0/24
      - ipBlock:
          cidr: 10.1.0.0/24
      - ipBlock:
          cidr: 10.2.0.0/24
      - ipBlock:
          cidr: 192.168.0.0/24

แต่อย่างใดเราไม่สามารถทำให้มันทำงานได้ การเชื่อมต่อหมดเวลาก็แค่นั้นแหละ นโยบายนี้มีปัญหาสำคัญหรือไม่? มีบางอย่างที่ฉันไม่เข้าใจเกี่ยวกับ NetworkPolicies

ขอบคุณล่วงหน้า


person mreiners    schedule 03.11.2020    source แหล่งที่มา
comment
คุณลองเพิ่ม policyTypes Ingress ลงในไฟล์ yaml ของคุณตามที่อธิบายไว้ในตัวอย่างใน เอกสาร?   -  person acid_fuji    schedule 04.11.2020
comment
@thomas ฉันเพิ่งเพิ่ม policyTypes ตามที่คุณพูดถึง แต่มันใช้งานไม่ได้   -  person mreiners    schedule 04.11.2020
comment
คุณเปิดใช้งานปลั๊กอิน CNI หรือไม่ จะต้องเปิดใช้งานเพื่อบังคับใช้นโยบายเครือข่าย ข้อมูลเพิ่มเติมที่นี่   -  person acid_fuji    schedule 04.11.2020
comment
ใช่ มันถูกเปิดใช้งานตามค่าเริ่มต้นในขณะที่เราสร้างคลัสเตอร์   -  person mreiners    schedule 05.11.2020


คำตอบ (1)


ฉันแก้ไขปัญหาแล้ว มันเป็นความผิดพลาดของมือใหม่:

- namespaceSelector:
    matchLabels:
      namespace: kube-system

ฉันไม่ได้เพิ่ม Label namespace: kube-system ไปที่ Namespace kube-system

หลังจากเพิ่มป้ายกำกับแล้ว มันก็ทำงานได้ทันที

person mreiners    schedule 04.11.2020