Ingress för extern åtkomst
Konfigurera Ingress för att hantera extern åtkomst till Services med HTTP-/S-routing och lastbalansering.
Ingress för extern åtkomst är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 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.
Bortom NodePort och LoadBalancer
Vi har utforskat olika Kubernetes Service-typer, som NodePort och LoadBalancer, för att exponera applikationer externt.
Även om de är användbara kan de bli svårhanterliga när kraven på extern åtkomst är komplexa, särskilt när du behöver vara värd för många applikationer eller API:er på en enda IP-adress med specifika dirigeringsregler.
Det är här Ingress kommer in i bilden och erbjuder en kraftfullare och mer flexibel lösning.
Introduktion till Kubernetes Ingress
Ingress är ett Kubernetes-API-objekt som hanterar extern åtkomst till tjänsterna i ett kluster, främst för HTTP- och HTTPS-trafik.
- Det fungerar som en enda ingångspunkt för externa förfrågningar.
- Det möjliggör HTTP/S-dirigering baserad på värdnamn eller URL-sökvägar.
- Det kan även erbjuda funktioner som SSL/TLS-terminering och lastbalansering.
Se Ingress som en intelligent trafikdirigerare som leder webbtrafik till rätt interna Services.
Ingress Controller
En Ingress-resurs består bara av en uppsättning regler; den hanterar inte trafiken direkt. För att Ingress ska fungera behöver du en Ingress Controller som körs i klustret.
Ingress Controller övervakar Ingress-resurser och konfigurerar en extern lastbalanserare (eller reverse proxy) enligt de definierade reglerna.
Populära Ingress Controllers är Nginx, Traefik och molnspecifika alternativ som GCE Ingress för Google Cloud eller AWS Load Balancer Controller.
Så fungerar Ingress-regler
Ingress definierar regler som mappar inkommande externa förfrågningar till specifika backend-Services i klustret. Dessa regler anger vanligtvis:
- Host: Domännamnet (till exempel
www.my-app.com). - Path: URL-sökvägen (till exempel
/api,/blog). - Backend Service: Kubernetes-Service och port som trafiken ska vidarebefordras till.
Ingress Controller utvärderar dessa regler för varje inkommande förfrågan för att avgöra rätt destination.
Skapa en Ingress-YAML
Precis som andra Kubernetes-resurser definieras Ingress med ett YAML-manifest. Här är en grundläggande struktur som visar de viktigaste fälten:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 80Enkel sökvägsbaserad Ingress
Vi skapar en Ingress-resurs som dirigerar all trafik för rotsökvägen (/) på myapp.example.com till en Service med namnet my-web-service på port 80.
Se till att du har en Deployment och en Service med namnet my-web-service som körs i klustret innan du tillämpar denna Ingress.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 80Distribuera din Ingress
För att distribuera din Ingress-resurs sparar du YAML-innehållet i en fil (till exempel basic-ingress.yaml) och använder kubectl apply:
kubectl apply -f basic-ingress.yaml
Du kan kontrollera statusen för din Ingress med kubectl get ingress. Ingress Controller konfigurerar sedan den externa lastbalanseraren utifrån dessa regler.
För att testa behöver du vanligtvis uppdatera din lokala /etc/hosts-fil (eller DNS) så att myapp.example.com pekar på den externa IP-adressen för din Ingress Controller.
Exempel på värdbaserad dirigering
Ingress passar perfekt för att vara värd för flera applikationer på en enda extern IP-adress genom att använda olika värdnamn. Här dirigeras app1.example.com till service-app1 och app2.example.com till service-app2.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: host-routing-ingress
spec:
rules:
- host: app1.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-app1
port:
number: 80
- host: app2.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-app2
port:
number: 80Flera sökvägar, en värd
Du kan också dirigera olika URL-sökvägar på samma värdnamn till olika backend-tjänster. Detta är idealiskt för mikrotjänstarkitekturer eller olika delar av en och samma applikation.
Förfrågningar till api.example.com/users går till exempel till users-service, medan förfrågningar till api.example.com/products går till products-service.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-routing-ingress
spec:
rules:
- host: api.example.com
http:
paths:
- path: /users
pathType: Prefix
backend:
service:
name: users-service
port:
number: 80
- path: /products
pathType: Prefix
backend:
service:
name: products-service
port:
number: 80Kontroll av Ingress syfte
Vilka av följande är de viktigaste fördelarna med att använda Kubernetes Ingress?
Sammanfattning: Ingress för intelligent dirigering
Bra jobbat! Du har lärt dig om Kubernetes Ingress, en viktig komponent för att hantera hur externa användare interagerar med dina applikationer.
- Ingress erbjuder flexibel HTTP/S-dirigering baserad på värdnamn och URL-sökvägar.
- Det kräver en Ingress Controller (som Nginx) för att övervaka Ingress-regler och konfigurera dirigeringen.
- Det förenklar exponeringen av flera tjänster via en enda extern IP-adress, vilket gör klustret effektivare och enklare att hantera.
Att behärska Ingress är avgörande för att bygga robusta och åtkomliga molnbaserade applikationer!
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 ”Ingress för extern åtkomst” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Ingress för extern åtkomst”, 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 ”Ingress för extern åtkomst”?
Konfigurera Ingress för att hantera extern åtkomst till Services med HTTP-/S-routing och lastbalansering. 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 3 av 4.
Hur lång tid tar lektionen ”Ingress för extern åtkomst”?
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
- Exponera appar med Services
- Service-typer: ClusterIP, NodePort, LoadBalancer
- Ingress för extern åtkomst
- DNS och tjänsteidentifiering