Versioni i rrezikshëm i këtij ndryshimi është një komandë e vetme që kthen endpoint-in dhe bllokon të gjithë administratorët në të njëjtën kohë. Versioni i sigurt mban të hapura të dyja rrugët, provon se ajo private funksionon nga VPN, dhe vetëm pastaj tërheq endpoint-in publik. Supozoni një cluster ekzistues, një tunel të miratuar në VPC-në e tij dhe një kubeconfig që funksionon tashmë; detyra është aksesi privat në API-n e Kubernetes, jo nyjet private dhe jo një model i ri lejesh. Çdo hap më poshtë ka një kontroll ku mund të dështoni në mënyrë të sigurt.

1. Inventarizoni endpoint-in dhe mbani një rrugë kthimi

Regjistroni gjendjen aktuale përpara se ta ndryshoni, duke përfshirë listën publike CIDR të lejuar dhe grupin e sigurisë së cluster-it. Janë pikërisht këto të dyja që do të krahasoni kur diçka ndalon së funksionuari, dhe lista e lejuar është gjithashtu rruga juaj e kthimit nëse rruga private rezulton e gabuar.

aws eks describe-cluster --region REGION --name CLUSTER \
  --query 'cluster.{endpoint:endpoint,public:resourcesVpcConfig.endpointPublicAccess,private:resourcesVpcConfig.endpointPrivateAccess,cidrs:resourcesVpcConfig.publicAccessCidrs}'

REGION dhe CLUSTER janë këtu vendmbajtëse. Vini re çfarë lexon tani flamuri privat, sepse një cluster i krijuar me akses privat tashmë të aktivizuar kërkon një hap të parë të ndryshëm nga ai që nuk e ka pasur kurrë. Mbani të hapur të paktën një rrugë administrative të miratuar gjatë tranzicionit; një VPN që varet nga aksesueshmëria e të njëjtit cluster nuk është rrugë rikuperimi.

2. Aktivizoni aksesin privat me rrugën e rrjetit në vend

Ndërtimi i flamurit është gjysma e lehtë. Tuneli ka nevojë për një rrugë drejt adresave private të endpoint-it, dhe grupi i sigurisë së cluster-it ka nevojë për TCP 443 nga burimi që VPN paraqet në të vërtetë. Një asociim Client VPN, një portë site-to-site dhe një VPC i peer-uar mund të paraqesin të gjithë adresa burimi të ndryshme, prandaj përdorni modelin që keni vendosur në vend të një diapazoni privat gjenerik.

aws eks update-cluster-config --region REGION --name CLUSTER \
  --resources-vpc-config endpointPublicAccess=true,endpointPrivateAccess=true

aws eks describe-update --region REGION --name CLUSTER --update-id UPDATE_ID

Përditësimi është asinkron. Pyetni id-në e përditësimit derisa të raportojë sukses në vend që të prisni një numër fiks sekondash dhe të supozoni. Lërini trafikun e nyjeve dhe të planit të kontrollit të qetë ndërsa e bëni këtë: zëvendësimi i të gjithë grupit të sigurisë së cluster-it me një rregull për laptopin tuaj është mënyra se si një plan të dhënash që funksionon bëhet një incident i dytë.

Dokumentacioni i endpoint-eve të EKS meriton një lexim të plotë, sepse thotë që aksesi vetëm privat mund të vijë nga VPC ose nga një rrjet i lidhur. Ajo fjali është e gjithë arsyeja pse ky migrim është i mundur, dhe është gjithashtu arsyeja pse ekziston hapi tjetër.

3. Provoni që stacioni i punës përdori rrugën private

Me të dy endpoint-et të aktivizuar, një kubectl get ns i suksesshëm nuk provon asgjë për atë se cili u përgjigj. Zgjidhni emrin e hostit të endpoint-it dhe kontrolloni nëse adresa që morët i përket diapazonit privat apo atij publik. Nëse rrjeti juaj i lidhur nuk merr pamjen private përmes DNS, komanda do të ketë sukses përmes endpoint-it publik dhe ju do të tërhiqni rrugën publike mbi prova të rreme. Kjo është mënyra më e zakonshme se si ky migrim shkon keq, dhe duket saktësisht si sukses.

nslookup HASH.gr7.REGION.eks.amazonaws.com
kubectl cluster-info
kubectl get ns --request-timeout=10s

Mbani emrin e hostit dhe validimin e certifikatës saktësisht siç janë. Zëvendësimi me një IP private në kubeconfig dhe anashkalimi i verifikimit TLS nuk është migrimi që përshkruat në regjistrin e ndryshimeve, dhe do të dështojë përsëri në momentin që endpoint-i rrotullohet.

4. Tërhiqni aksesin publik me qëllim

Pasi rruga private të jetë demonstruar dhe rrjedha e rikuperimit të miratohet, mbyllni endpoint-in publik. Ky është një ndryshim i vërtetë dhe jo një pamje paraprake, prandaj ekzekutoni atë kundër llogarisë dhe cilësimeve që keni vërtet parasysh.

aws eks update-cluster-config --region REGION --name CLUSTER \
  --resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true

Në modalitetin vetëm privat, emri publik DNS zgjidhet në adresat private të endpoint-it nga brenda VPC-së, kështu që zgjidhja dhe arritshmëria nuk janë më e njëjta gjë. Çdo gjë që mbështetej në adresën publike, duke përfshirë ekzekutuesit CI ose një laptop në një rrjet tjetër, tani ka nevojë për rrugën e vet të hyrjes.

5. Mbani të ndara politikën e rrjetit dhe politikën e identitetit

Lista CIDR e aksesit publik rregullon vetëm endpoint-in publik. Ajo nuk e kufizon endpoint-in privat, i cili në vend të kësaj kufizohet nga grupi i sigurisë së cluster-it dhe politika e rrjetit të lidhur. Nëse e mbani endpoint-in publik, lista e tij e lejuar duhet të përputhet me daljen publike që klientët tuaj API dhe nyjet përdorin vërtet; një adresë e grupit VPN rrallë është ai burim.

Asgjë nga kjo nuk ndryshon IAM ose Kubernetes RBAC. Cilësimet e endpoint-it janë një veprim administrativ, dhe përdoruesit e zakonshëm nuk duhet të marrin leje për të lehtësuar kufirin vetëm për të arritur API-n. Shkruani gjendjen përfundimtare, datën dhe rrugën e rikuperimit në runbook, pastaj provoni rrugën e rikuperimit një herë ndërsa është ende e lehtë.

Artikuj të ngjashëm