Hur man använder Kubernetes Ingress API

Kubernetes ser antagandet i hela teknikindustrin och är på väg att bli de facto orkestrationsplattform för modern leverans av molntjänster. Kubernetes tillhandahåller inte bara primitiver för att distribuera mikrotjänster i molnet utan går ett steg längre och hjälper utvecklare att definiera interaktioner och hantera livscykeln för sina API: er. 

Ingress API i Kubernetes låter dig exponera din mikrotjänst för omvärlden och definiera dirigeringspolicyer för din nord-sydtrafik, dvs. den trafik som kommer in i ditt virtuella datacenter. 

Fördelarna med att hantera API-livscykler med kontinuerlig integration och kontinuerlig leverans (CI / CD) -rörledningar med Ingress är rikliga, men innan vi täcker detta, låt oss börja med grundläggande kunskap.

Ingress-resursens design och syfte

Den enklaste beskrivningen av ett Kubernetes-kluster är en uppsättning hanterade noder som kör applikationer i behållare. I de flesta fall är noderna i ett Kubernetes-kluster inte direkt exponerade för det offentliga internet. Detta är vettigt, eftersom exponering av alla tjänster på en nod skulle skapa en otrolig mängd risk. För att ge allmänheten tillgång till utvalda tjänster tillhandahåller Kubernetes Ingress-resursen.

Ingress-resursen exponerar HTTP- och HTTPS-rutter från utanför klustret för utvalda tjänster inom. Ingress-resursen innehåller också regler för att kontrollera trafiken. Detta gör Ingress-resursen till en utmärkt lösning för hantering av olika API: er som tillhandahålls av en stor mängd enskilda tjänster. Det gör det genom att tillhandahålla en enda ingångspunkt för alla klienter och sedan hantera förfrågningar till back-end-tjänsterna. Detta är allmänt känt som en fanout-konfiguration.

Kong

Ingress-resursen kan också ställas in för namnbaserad virtuell hosting, där den dirigerar förfrågningar baserat på värdhuvudet:

Kong

För att Ingress-resursen ska fungera måste en Ingress-controller installeras på Kubernetes-klustret. Styrenheten skapar bryggan mellan Kubernetes-klustret och de olika offentliga gränssnitt som finns. Till exempel erbjuder de flesta molnleverantörer som är värd för Kubernetes en unik Ingress-styrenhet för gränssnitt med sina föreskrivna offentliga metoder. De olika styrenheterna fungerar alla olika från varandra och kan erbjuda en varierande mängd ytterligare funktioner.

Fördelarna med att använda Ingress för att hantera API-livscykeln med CI / CD-pipelines

Ingress-resursen definieras genom en deklarativ konfigurationsfil, som vanligtvis beskrivs i YAML. Detta överensstämmer med alla Kubernetes-resurser och möjliggör enkel integrering i moderna distributionsmönster, såsom kombinerad övning av CI / CD. Vad det här är är möjligheten att distribuera Ingress-förändringar snabbt, ofta och säkert. På så sätt kan Ingress-resursen införlivas i samma typ av programvaruutvecklingslivscykelmönster som själva applikationerna.

Hur utvecklare kan åstadkomma Ingress med Kong för Kubernetes

En populär öppen källkod och molnagnostisk Ingress-controller är Kong för Kubernetes . Kong for Kubernetes Ingress Controller är byggd som anpassade resursdefinitioner (CRD) inom Kubernetes. Detta skapar en Kubernetes-upplevelse för dem som redan är vana vid att definiera resurser inom denna plattform.

Liksom dina appar och tjänster kan Kong for Kubernetes installeras via Manifest, Helm eller Kustomize.

Kong for Kubernetes Ingress Controller utökar kapaciteten för Ingress-resursen genom att tillhandahålla en omfattande uppsättning plugin-program som täcker ett brett spektrum av funktioner inklusive autentisering, analys, övervakning och begäran och svarstransformationer, för att bara nämna några. Genom att tillhandahålla dessa vanliga (och ibland inte så vanliga) krav på Ingress-styrenheten, tillåter Kong for Kubernetes utvecklare att fokusera mer på kärnkraven för tjänsterna. Värdet av detta blir särskilt uppenbart när en organisation flyttar från en handfull monolitiska applikationer till hundratals, om inte tusentals mikrotjänster.

För en lista över vanliga plug-ins, kolla in //docs.konghq.com/hub/.

Kong-plugin-program definieras som en Kubernetes-resurs, där en konfigurationssektion tillhandahåller de enskilda insticksprogrammets inställningar.

Nedan följer ett exempel på ett hastighetsbegränsande plugin-program som begränsar trafiken till fem förfrågningar per minut:

Kong

Att lägga till ett Kong-plugin-program till en Kubernetes-resurs görs genom en enkel kommentar i resursens metadata. Detta möjliggör att plug-ins kan tillämpas på olika nivåer. Du kan till exempel tillämpa ett plugin-program på hela Ingress-resursen eller använda en på ett mer detaljerat sätt på en enskild tjänstresurs.

Här är ett exempel på ovanstående plugin-program som tillämpas på en Ingress-resurs:

Kong

Kong for Kubernetes kan också integreras i hela paketet med Kong Enterprise-produkter inklusive Kong Studio, Kong Dev Portal, Kong Manager, Kong Brain och Kong Immunity. Detta möjliggör ännu mer avancerade Kong-plugin-program samt en fullständig API-livscykellösning. Denna produktpaket omfattar redigering och publicering av API-specifikationer samt hantering av dina Kong-resurser och till och med analys av trafik.

Du kan ta en "spec-first" strategi för att utveckla dina API: er med hjälp av Kong Studio, där du hittar verktyg för att skriva dokumentation i standard OpenAPI-specifikationen tillsammans med testverktyg för omedelbar feedback. Kong Studio tillhandahåller också verktyg för att arbeta med GraphQL. Kong Studio synkroniseras direkt i Git, vilket gör att dina spec-filer kan integreras i ett CI / CD-arbetsflöde som kan automatisera uppdateringar till Kong Dev Portal.

Kong Dev Portal är värd för din API-dokumentation (som kan vara privat eller offentlig). Det är extremt anpassningsbart, så att du kan anpassa det till din organisations stil och varumärke. Att ha ett väldokumenterat API är viktigt för produktiviteten och att ha ett väl hanterat flöde mellan Kong Studio och Dev Portal kan bidra till att dokumentationen är så uppdaterad som möjligt.

Kong Manager erbjuder ett grafiskt gränssnitt för att observera och hantera Kong-sviten av produkter som helhet. Härifrån kan du observera relationerna mellan dina rutter, tjänster och plug-ins. Du kan få koll på trafik i realtid och spåra dina konsumenter.

Kong Brain analyserar trafik som kommer genom Ingress och skapar en visuell servicekarta över beroenden mellan tjänster. Det har också förmågan att automatiskt generera OpenAPI spec-dokument baserat på de kartor det genererar. Detta är en värdefull funktion, eftersom även de bästa avsikterna att tjänster som används kanske inte dokumenteras ordentligt. 

Kong Immunity analyserar all trafik som kommer genom Ingress och lär sig mönster för att identifiera avvikelser. Det här är ofta subtila förfrågningar som inte sticker ut men kan vara av intresse, till exempel en okänd parameter som fortsätter att försöka komma igenom. Detta är också en mycket värdefull funktion eftersom det inte är lätt att upptäcka dessa nålar i höstacken för hundratusentals loggposter.

Kong

Få ut det mesta av Ingress

Kubernetes Ingress-resurs ger en enda ingångspunkt utanför Kubernetes till back-end-tjänster inom. Genom att utnyttja deklarativa definitionsfiler kan Ingress-resursen behandlas som alla andra former av kod och integreras i vanliga programvaruutvecklingslivscykler.

För att överbrygga kommunikation utanför Kubernetes krävs en Ingress-controller. Kong for Kubernetes är en Ingress-controller som använder anpassade resursdefinitioner för att kraftigt utöka kapaciteten hos Ingress-resursen genom att tillhandahålla ett stort antal plug-ins, så att utvecklare kan fokusera på kärnverksamhetens värde. Kong har en uppsättning företagsverktyg som avsevärt kan förbättra produktiviteten och säkerheten under hela din API-livscykel.

Marco Palladino, en uppfinnare, mjukvaruutvecklare och internetentreprenör med säte i San Francisco, är CTO och grundare av Kong Inc.

-

New Tech Forum är en plats för att utforska och diskutera framväxande företagsteknologi i oöverträffat djup och bredd. Urvalet är subjektivt, baserat på vårt val av den teknik som vi anser vara viktig och av största intresse för läsarna. accepterar inte marknadsföringssäkerhet för publicering och förbehåller sig rätten att redigera allt innehåll som har bidragit. Skicka alla förfrågningar till [email protected]