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ű.

Kapcsolódó cikkek