DevOps-bootcamp · Lektion

Nätverksprinciper för isolering

Styr trafikflödet mellan Pods och namnrymder med Kubernetes Network Policies.

Lektion 2 av 411 steg

Nätverksprinciper för isolering är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Network Policies: trafikpoliser

I Kubernetes kan Pods som standard kommunicera fritt med varandra. Det är praktiskt och flexibelt, men inte alltid optimalt ur säkerhetssynpunkt.

Network Policies fungerar som brandväggar för dina Pods och styr vilken nätverkstrafik som tillåts in (ingress) och ut (egress).

Som standard kan alla Pods kommunicera

Som standard kan en Pod, när den har distribuerats, kommunicera med alla andra Pods i klustret, oavsett namespace. Denna modell med ett ”platt nätverk” förenklar konfigurationen men saknar isolering.

I produktionsmiljöer behöver du ofta begränsa kommunikationen för att öka säkerheten och förhindra obehörig åtkomst mellan applikationskomponenter.

Ingress- och egressregler

Network Policies definierar regler för hur Pods får kommunicera. De fokuserar främst på två typer av trafik:

  • Ingress: Inkommande trafik till en Pod.
  • Egress: Utgående trafik från en Pod.

Reglerna tillämpas på specifika Pods med hjälp av etiketter och kan rikta sig mot andra Pods, namespaces eller IP-block.

Krav på CNI-plugin

Network Policies är ingen magi! För att de ska fungera måste Kubernetes-klustret ha en Container Network Interface (CNI)-plugin som stöder dem.

Populära CNI-plugins som Calico, Cilium och Weave Net tillhandahåller denna funktion. Utan en CNI-plugin med stöd för Network Policies får de ingen effekt.

En policys uppbyggnad

Network Policies definieras med YAML. Viktiga fält är:

  • metadata.name: Ett unikt namn för din policy.
  • spec.podSelector: Väljer de Pods som policyn gäller för.
  • spec.policyTypes: Anger om policyn gäller för Ingress, Egress eller båda.
  • spec.ingress/spec.egress: Anger reglerna för tillåten trafik.

Blockera all inkommande trafik

Vi skapar en policy som nekar all inkommande trafik till Pods med etiketten app: backend i det aktuella namespace:t. Detta är en vanlig utgångspunkt för en säkerhetsmodell med ”neka som standard”.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-backend-ingress
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress: [] # An empty ingress list denies all incoming traffic

Tillåt ingress från frontend

Nu ändrar vi policyn så att inkommande trafik endast tillåts från Pods med etiketten app: frontend i samma namespace, till våra Pods med app: backend.

Observera avsnittet from, som anger käll-Pods.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

Styra utgående trafik

Precis som med ingress kan du styra egress (utgående) trafik. Här skapar vi en policy som tillåter Pods med app: backend att skicka utgående förfrågningar endast till Pods med etiketten app: database.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-egress-to-db
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: database

Rikta in sig på andra namespaces

Vad händer om frontend ligger i ett annat namespace, till exempel web-apps? Du kan använda namespaceSelector för att rikta dig mot Pods i olika namespaces.

Denna policy tillåter ingress till Pods med app: backend från alla Pods i namespace:t web-apps.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-web-apps-ingress
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: web-apps
      podSelector: {} # All pods in the selected namespace

Policyutmaning

Anta att en Pod har etiketterna app: web och env: prod. Vilken Network Policy skulle tillåta endast inkommande trafik från Pods i namespace:t monitoring?

Sammanfattning: säkra ditt nätverk

Bra jobbat! Du har lärt dig hur Kubernetes Network Policies ger dina applikationer viktig nätverksisolering.

  • De fungerar som brandväggar för Pods.
  • De styr både ingress- (in) och egress- (ut) trafik.
  • De kräver en CNI-plugin som stöder dem.
  • De definieras med YAML och använder podSelector, policyTypes och regeldefinitioner.
  • De kan rikta sig mot Pods med hjälp av etiketter och även mot hela namespaces.

Använd dem för att upprätthålla en nätverksmodell med ”minsta möjliga behörighet”!

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Nätverksprinciper för isolering” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Nätverksprinciper för isolering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Nätverksprinciper för isolering”?

Styr trafikflödet mellan Pods och namnrymder med Kubernetes Network Policies. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Nätverksprinciper för isolering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Rollbaserad åtkomstkontroll (RBAC)
  2. Nätverksprinciper för isolering
  3. Säkerhetsstandarder för Pods
  4. Service Accounts och Workload Identity
← Tillbaka till DevOps-bootcamp