Nätverksprinciper för isolering
Styr trafikflödet mellan Pods och namnrymder med Kubernetes Network Policies.
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örIngress,Egresseller 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 trafficTillå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: frontendStyra 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: databaseRikta 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 namespacePolicyutmaning
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,policyTypesoch 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”!
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
- Rollbaserad åtkomstkontroll (RBAC)
- Nätverksprinciper för isolering
- Säkerhetsstandarder för Pods
- Service Accounts och Workload Identity