Opasna verzija ove promjene je jedna naredba koja preokrene endpoint i zaključa sve administratore u isto vrijeme. Sigurna verzija drži oba puta otvorena, dokaže da privatni radi s VPN-a i tek onda povuče javni endpoint. Pretpostavite postojeći klaster, odobreni tunel u njegov VPC i kubeconfig koji već radi; zadatak je privatni pristup Kubernetes API-ju, a ne privatni čvorovi i ne novi model dopuštenja. Svaki korak ispod ima provjeru na kojoj možete sigurno pasti.

1. Popišite endpoint i zadržite put za povratak

Zabilježite trenutno stanje prije nego što ga promijenite, uključujući javni CIDR popis dopuštenih adresa i sigurnosnu grupu klastera. Upravo ta dva ćete uspoređivati kada nešto prestane raditi, a popis dopuštenih adresa je i vaš put za vraćanje ako se privatna ruta pokaže pogrešnom.

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

REGION i CLUSTER su ovdje zamjenske vrijednosti. Obratite pozornost što privatna zastavica sada pokazuje, jer klaster stvoren s već omogućenim privatnim pristupom zahtijeva drugačiji prvi korak od onoga koji ga nikada nije imao. Održavajte barem jedan odobreni administrativni put otvorenim tijekom tranzicije; VPN koji ovisi o dostupnosti istog klastera nije put za oporavak.

2. Omogućite privatni pristup uz pripremljenu mrežnu rutu

Uključivanje zastavice je lakša polovica. Tunel treba rutu do privatnih adresa endpointa, a sigurnosna grupa klastera treba TCP 443 s izvora koji VPN stvarno predstavlja. Client VPN asocijacija, site-to-site gateway i peerani VPC mogu svi predstavljati različite izvorne adrese, zato koristite model koji ste implementirali umjesto generičkog privatnog raspona.

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

Ažuriranje je asinkrono. Provjeravajte id ažuriranja dok ne prijavi uspjeh, umjesto da čekate fiksni broj sekundi i pretpostavljate. Ostavite promet čvorova i kontrolne ravnine na miru dok to radite: zamjena cijele sigurnosne grupe klastera pravilom za vaše prijenosno računalo je način na koji radna podatkovna ravnina postaje drugi incident.

Dokumentacija o EKS endpointima vrijedi jednom pročitati u cijelosti, jer kaže da pristup samo preko privatnog puta može doći iz VPC-a ili povezane mreže. Ta rečenica je cijeli razlog zašto je ova migracija moguća i ujedno razlog zašto sljedeći korak postoji.

3. Dokažite da je radna stanica koristila privatni put

Kada su oba endpointa omogućena, uspješan kubectl get ns ne dokazuje ništa o tome koji je odgovorio. Razriješite ime hosta endpointa i provjerite pripada li adresa koju ste dobili privatnom ili javnom rasponu. Ako vaša povezana mreža ne prima privatni prikaz kroz DNS, naredba će uspjeti preko javnog endpointa i povući ćete javni put na temelju lažnih dokaza. To je najčešći način na koji ova migracija pođe po zlu i izgleda točno kao uspjeh.

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

Zadržite ime hosta i validaciju certifikata točno kakvi jesu. Zamjena privatnim IP-om u kubeconfigu i preskakanje TLS provjere nije migracija koju ste opisali u zapisu o promjeni i ponovno će pasti u trenutku kada se endpoint rotira.

4. Namjerno povucite javni pristup

Kada je privatni put dokazan i tok oporavka odobren, zatvorite javni endpoint. Ovo je stvarna promjena, a ne pregled, zato je izvršite na računu i postavkama koje zaista mislite.

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

U načinu rada samo privatno javno DNS ime razrješava se na privatne adrese endpointa iz unutrašnjosti VPC-a, pa razrješavanje i dostupnost prestaju biti ista stvar. Sve što se oslanjalo na javnu adresu, uključujući CI runner-e ili prijenosno računalo na drugoj mreži, sada treba vlastiti put unutra.

5. Držite mrežnu politiku i politiku identiteta odvojeno

CIDR popis javnog pristupa upravlja samo javnim endpointom. Ona ne ograničava privatni endpoint, koji umjesto toga ograničavaju sigurnosna grupa klastera i politika povezane mreže. Ako zadržite javni endpoint, njegov popis dopuštenih adresa mora odgovarati javnom izlazu koji vaši API klijenti i čvorovi stvarno koriste; adresa VPN poola rijetko je taj izvor.

Ništa od ovoga ne mijenja IAM ili Kubernetes RBAC. Postavke endpointa su administrativna radnja i obični korisnici ne bi trebali dobivati dopuštenje da olabave granicu samo da bi dosegnuli API. Zapišite konačno stanje, datum i put oporavka u runbook, zatim testirajte put oporavka jednom dok je još lak.

Povezani članci