Stavite EKS API iza VPN-a: redoslijed operacija
Omogućite privatni endpoint, dokažite da ga je kubectl dosegnuo, zatim zatvorite javni. Fazni runbook s komandama i provjerama između svakog koraka.
Opasna verzija ove promjene je jedna komanda 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 dozvola. Svaki korak ispod ima provjeru na kojoj možete bezbjedno pasti.
1. Popišite endpoint i zadržite put za povratak
Zabilježite trenutno stanje prije nego što ga promijenite, uključujući javnu CIDR listu dozvoljenih adresa i sigurnosnu grupu klastera. Upravo ta dva ćete upoređivati kada nešto prestane raditi, a lista dozvoljenih 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 pažnju šta privatna zastavica sada pokazuje, jer klaster kreiran s već omogućenim privatnim pristupom zahtijeva drugačiji prvi korak od onog koji ga nikada nije imao. Održavajte barem jedan odobreni administrativni put otvorenim tokom tranzicije; VPN koji zavisi od dostupnosti istog klastera nije put za oporavak.
2. Omogućite privatni pristup uz pripremljenu mrežnu rutu
Uključivanje zastavice je lakša polovina. Tunel treba rutu do privatnih adresa endpointa, a sigurnosna grupa klastera treba TCP 443 sa izvora koji VPN stvarno predstavlja. Client VPN asocijacija, site-to-site gateway i peered VPC mogu svi predstavljati različite izvorne adrese, zato koristite model koji ste implementirali umjesto generičkog privatnog opsega.
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 asinhrono. Provjeravajte id ažuriranja dok ne prijavi uspjeh, umjesto da čekate fiksni broj sekundi i pretpostavljate. Ostavite saobraćaj čvorova i kontrolne ravnine na miru dok to radite: zamjena cijele sigurnosne grupe klastera pravilom za vaš laptop je način na koji radna data 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 opsegu. Ako vaša povezana mreža ne prima privatni prikaz kroz DNS, komanda će uspjeti preko javnog endpointa i povući ćete javni put na osnovu lažnih dokaza. To je najčešći način na koji ova migracija ode naopako i izgleda tač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 tačno kakvi jesu. Zamjena privatnim IP-om u kubeconfig-u i preskakanje TLS provjere nije migracija koju ste opisali u zapisu o promjeni i ponovo ć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 nalogu i postavkama koji zaista mislite.
aws eks update-cluster-config --region REGION --name CLUSTER \
--resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true
U režimu samo privatnog pristupa javno DNS ime se razrješava 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 laptop na drugoj mreži, sada treba vlastiti put unutra.
5. Držite mrežnu politiku i politiku identiteta odvojeno
CIDR lista 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, njegova lista dozvoljenih adresa mora odgovarati javnom izlazu koji vaši API klijenti i čvorovi stvarno koriste; adresa VPN pula 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 dobijati dozvolu 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.