Tegye az EKS API-t VPN mögé: a műveletek sorrendje
Engedélyezze a privát végpontot, bizonyítsa, hogy a kubectl elérte, majd zárja le a nyilvánosat. Szakaszos runbook a parancsokkal és a lépések közötti ellenőrzésekkel.
A változtatás veszélyes változata egyetlen parancs, amely átbillenti a végpontot, és egyidejűleg minden adminisztrátort kizár. A biztonságos változat mindkét utat nyitva tartja, bizonyítja, hogy a privát út működik a VPN-ből, és csak ezután vonja ki a nyilvános végpontot. Tételezzen fel egy meglévő klasztert, egy jóváhagyott alagutat a VPC-jébe és egy már működő kubeconfigot; a feladat a Kubernetes API privát elérése, nem privát node-ok és nem új engedélymodell. Az alábbi lépések mindegyikéhez tartozik egy ellenőrzés, amelynél biztonságosan megbukhat.
1. Leltározza fel a végpontot, és tartson meg egy visszautat
A módosítás előtt rögzítse a jelenlegi állapotot, beleértve a nyilvános CIDR-engedélylistát és a klaszter biztonsági csoportját. Ezt a kettőt fogja összehasonlítani, amikor valami leáll, és az engedélylista egyben a visszaállítási út is, ha a privát útvonal hibásnak bizonyul.
aws eks describe-cluster --region REGION --name CLUSTER \
--query 'cluster.{endpoint:endpoint,public:resourcesVpcConfig.endpointPublicAccess,private:resourcesVpcConfig.endpointPrivateAccess,cidrs:resourcesVpcConfig.publicAccessCidrs}'
A REGION és a CLUSTER itt helyőrző. Figyelje meg, mit mutat most a privát jelző, mert a már engedélyezett privát hozzáféréssel létrehozott klaszter más első lépést igényel, mint az, amelyik soha nem rendelkezett vele. Az átállás alatt tartson nyitva legalább egy jóváhagyott adminisztrációs utat; az a VPN, amely ugyanazon klaszter elérhetőségétől függ, nem helyreállítási út.
2. Engedélyezze a privát hozzáférést, amikor a hálózati út már adott
A jelző bekapcsolása a könnyebbik fele. Az alagútnak útvonalra van szüksége a végpont privát címeihez, a klaszter biztonsági csoportjának pedig TCP 443-ra attól a forrástól, amelyet a VPN ténylegesen megjelenít. A Client VPN társítás, a site-to-site átjáró és a társított VPC mind más-más forráscímet jeleníthet meg, ezért a telepített modellt használja általános privát tartomány helyett.
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 frissítés aszinkron. Kérdezze le a frissítési azonosítót, amíg sikert nem jelent, ahelyett hogy fix számú másodpercet várna és feltételezne. Közben hagyja békén a node-ok és a vezérlési sík forgalmát: a klaszter teljes biztonsági csoportjának lecserélése egy laptopra vonatkozó szabályra az az út, ahogyan egy működő adatsík második incidenssé válik.
Az EKS-végpontok dokumentációja egyszeri teljes elolvasást érdemel, mert kimondja, hogy a csak privát hozzáférés a VPC-ből vagy csatlakoztatott hálózatból jöhet. Ez a mondat a teljes oka annak, hogy ez a migráció lehetséges, és ez az oka annak is, hogy létezik a következő lépés.
3. Bizonyítsa, hogy a munkaállomás a privát utat használta
Ha mindkét végpont engedélyezett, egy sikeres kubectl get ns semmit nem bizonyít arról, melyik válaszolt. Oldja fel a végpont hosztnevét, és ellenőrizze, hogy a kapott cím a privát vagy a nyilvános tartományba tartozik-e. Ha a csatlakoztatott hálózata nem kapja meg a privát nézetet DNS-en keresztül, a parancs a nyilvános végponton át fog sikerülni, és hamis bizonyíték alapján vonja ki a nyilvános utat. Ez a leggyakoribb módja annak, hogy ez a migráció félremegy, és pontosan úgy néz ki, mint a siker.
nslookup HASH.gr7.REGION.eks.amazonaws.com
kubectl cluster-info
kubectl get ns --request-timeout=10s
Tartsa a hosztnevet és a tanúsítvány-ellenőrzést pontosan úgy, ahogy vannak. A privát IP behelyettesítése a kubeconfigba és a TLS-ellenőrzés kihagyása nem az a migráció, amelyet a változási rekordban leírt, és újra meg fog bukni abban a pillanatban, amikor a végpont elfordul.
4. Szándékosan vonja ki a nyilvános hozzáférést
Amint a privát út bizonyított és a helyreállítási folyamat jóváhagyott, zárja le a nyilvános végpontot. Ez valódi változtatás, nem előnézet, ezért azon a fiókon és beállításokon futtassa, amelyeket valóban ért.
aws eks update-cluster-config --region REGION --name CLUSTER \
--resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true
Csak privát módban a nyilvános DNS-név a VPC-n belülről a végpont privát címeire oldódik fel, így a feloldás és az elérhetőség többé nem ugyanaz. Mindennek, ami a nyilvános címre támaszkodott, beleértve a CI-futtatókat vagy egy másik hálózaton lévő laptopot, most saját bejárati útra van szüksége.
5. Tartsa külön a hálózati szabályzatot és az identitásszabályzatot
A nyilvános hozzáférés CIDR-listája csak a nyilvános végpontot szabályozza. Nem korlátozza a privát végpontot, amelyet helyette a klaszter biztonsági csoportja és a csatlakoztatott hálózat szabályzata határol. Ha megtartja a nyilvános végpontot, engedélylistájának meg kell felelnie annak a nyilvános kimenetnek, amelyet az API-ügyfelei és a node-ok ténylegesen használnak; a VPN-pool címe ritkán ez a forrás.
Ezek egyike sem változtatja meg az IAM-ot vagy a Kubernetes RBAC-ot. A végpontbeállítások adminisztratív művelet, és a hétköznapi felhasználók nem kaphatnak engedélyt a határ lazítására csak azért, hogy elérjék az API-t. Írja be a végállapotot, a dátumot és a helyreállítási utat a runbookba, majd tesztelje a helyreállítási utat egyszer, amíg még könnyű.