← l-artikli kollha

Kubernetes

Kubernetes Ħassejtha Eħfef Ladarba Fhimt Dawn il-Bażi

Għadni ma ddeplojajtx Kubernetes fi proġett reali, l-istess bħall-biċċa l-kbira ta' dak li naf dwar id-disinn tas-software: rajt, fhimt, għadni ma applikajtx. Il-bażi xorta waqfet tħossha bħal ħajt ta' YAML ladarba kelli mudell mentali għaliha.

Kubernetes Ħassejtha Eħfef Ladarba Fhimt Dawn il-Bażi

Għadni ma ddeplojajtx Kubernetes fi kwalunkwe proġett reali, l-istess bħall-biċċa l-kbira ta' dak li naf dwar id-disinn tas-software ta' .NET: rajt, fhimt, għadni ma applikajtx. Iżda l-bażi waqfet tħossha bħal ħajt ta' YAML ladarba kelli mudell mentali għal x'kienet verament tagħmel kull biċċa.

Pods, Deployments, Services, fajls YAML, ConfigMaps, Secrets, probes, clusters, u tużżani ta' kmandi. Bħala junior .NET developer, bqajt naħseb: għaliex neħtieġ dan kollu biss biex inħaddem API ta' ASP.NET Core?

Sar eħfef ladarba fhimt ftit ideat bażiċi.

Kubernetes iħaddem containers

Kubernetes ma jibnix l-applikazzjoni C# tiegħi. L-ewwel trid tiġi ppubblikata u ippakkjata ġewwa image ta' Docker:

ASP.NET Core API
→ Docker image
→ Kubernetes

Jekk l-applikazzjoni ma taħdimx ġewwa Docker, Kubernetes mhux se jsewwiha.

Il-Pods iħaddmu l-applikazzjoni

Pod huwa fejn container jaħdem. Pod wieħed jista' jkun fih istanza waħda ta' API ta' ASP.NET Core.

Il-Pods huma temporanji. Jistgħu jitħassru, jerġgħu jibdew, jew jinbidlu, għalhekk xejn importanti m'għandu jgħix ġo wieħed. Id-database, is-sessjonijiet, u fajls importanti jappartjenu barra mill-Pod.

Id-Deployments jiġġestixxu l-Pods

Deployment jiddeskrivi kemm istanzi ta' applikazzjoni għandhom ikunu jaħdmu:

spec:
  replicas: 2

Jekk Pod wieħed jikkraxxja, Kubernetes joħloq ieħor biex jieħu postu. Dik hija l-idea ewlenija: tiddeskrivi l-istat mixtieq, u Kubernetes jipprova jżommu.

Is-Services jesponu l-applikazzjoni

Il-Pods jistgħu jbiddlu indirizzi IP meta jinħolqu mill-ġdid. Service jagħti lill-applikazzjoni indirizz stabbli u jibgħat it-talbiet lil liema Pods ikunu disponibbli:

Client
→ Service
→ Pod
→ ASP.NET Core API

Mingħajr Service, il-klijenti kienu jkollhom bżonn jafu l-indirizz ta' kull Pod individwali.

Il-konfigurazzjoni għandha tkun esterna

Connection strings u settings tal-ambjent m'għandhomx ikunu hardcoded ġewwa l-image. ConfigMaps u Secrets jieħdu ħsieb dan minflok, u ASP.NET Core jaqrahom bħala environment variables:

var connectionString =
    builder.Configuration.GetConnectionString("DefaultConnection");

Dak hu li jħalli l-istess image ta' container taħdem fl-iżvilupp, fit-testing, u fil-produzzjoni b'settings differenti.

Il-health checks jimportaw

Kubernetes jista' jiċċekkja jekk API hix b'saħħitha. Readiness probe tistaqsi jekk l-applikazzjoni tistax tirċievi traffiku. Liveness probe tistaqsi jekk għadhiex qed taħdem sew. ASP.NET Core jesponi dan permezz ta' health endpoint:

builder.Services.AddHealthChecks();

app.MapHealthChecks("/health");

Kubernetes juża dan biex jiddeċiedi jekk Pod għandux jirċievi traffiku jew jerġa' jibda.

Il-kmandi li jimportaw l-aktar

Il-ftit kmandi ta' kubectl li jispiċċaw jidhru kontinwament f'kull walkthrough:

kubectl get pods
kubectl get services
kubectl describe pod <pod-name>
kubectl logs <pod-name>
kubectl apply -f deployment.yaml

Il-fluss tad-debugging huwa kważi dejjem l-istess: get pods, imbagħad describe pod, imbagħad iċċekkja l-logs.

Fejn verament ninsab b'dan

Nifhem il-mudell mentali: Docker jippakkja l-applikazzjoni, il-Pods iħaddmuha, id-Deployments jiġġestixxu l-Pods, is-Services jesponuhom, ConfigMaps u Secrets jieħdu ħsieb il-konfigurazzjoni, il-probes jiċċekkjaw is-saħħa. Dak li għad m'għandix huwa proġett reali li verament jaħdem fuq Kubernetes. Huwa l-istess lakuna li għandi ma' ħafna kunċetti ta' disinn tas-software: mifhum biżżejjed biex nispjegah, mhux għadu xi ħaġa li kelli nagħmel taħdem taħt kundizzjonijiet reali. Dak li jmiss.