Nebezpečná verzia tejto zmeny je jediný príkaz, ktorý prepne endpoint a súčasne zamkne všetkých administrátorov. Bezpečná verzia necháva obe cesty otvorené, dokáže, že privátna cesta funguje z VPN, a až potom vyradí verejný endpoint. Predpokladajte existujúci cluster, schválený tunel do jeho VPC a kubeconfig, ktorý už funguje; úlohou je privátny prístup k API Kubernetes, nie privátne uzly a nie nový model oprávnení. Každý krok nižšie má kontrolu, pri ktorej môžete bezpečne zlyhať.

1. Zinventarizujte endpoint a ponechajte si cestu späť

Pred zmenou si zapíšte súčasný stav, vrátane verejného zoznamu povolených CIDR a bezpečnostnej skupiny clusteru. Práve tieto dve budete porovnávať, keď niečo prestane fungovať, a zoznam povolených je aj vaša cesta späť, ak sa privátna trasa ukáže ako nesprávna.

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

REGION a CLUSTER sú tu zástupné hodnoty. Všimnite si, čo privátny príznak teraz ukazuje, pretože cluster vytvorený s už zapnutým privátnym prístupom potrebuje iný prvý krok ako ten, ktorý ho nikdy nemal. Počas prechodu udržujte otvorenú aspoň jednu schválenú administratívnu cestu; VPN, ktorá závisí od dostupnosti toho istého clusteru, nie je cestou obnovy.

2. Zapnite privátny prístup s pripravenou sieťovou cestou

Zapnutie príznaku je tá ľahšia polovica. Tunel potrebuje trasu k privátnym adresám endpointu a bezpečnostná skupina clusteru potrebuje TCP 443 zo zdroja, ktorý VPN skutočne prezentuje. Priradenie Client VPN, brána site-to-site a prepojené VPC môžu prezentovať rôzne zdrojové adresy, preto použite model, ktorý ste nasadili, a nie všeobecný privátny rozsah.

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

Aktualizácia je asynchrónna. Pýtajte sa na id aktualizácie, kým neohlási úspech, namiesto čakania pevného počtu sekúnd a predpokladu. Nechajte prevádzku uzlov a riadiacej roviny na pokoji, kým to robíte: nahradenie celej bezpečnostnej skupiny clusteru pravidlom pre váš notebook je spôsob, akým sa z fungujúcej dátovej roviny stane druhý incident.

Dokumentácia k endpointom EKS stojí za jedno celé prečítanie, pretože hovorí, že prístup iba cez privátnu cestu môže prichádzať z VPC alebo z pripojenej siete. Práve tá veta je celým dôvodom, prečo je táto migrácia možná, a je aj dôvodom, prečo existuje ďalší krok.

3. Dokážte, že pracovná stanica použila privátnu cestu

Keď sú zapnuté oba endpointy, úspešný kubectl get ns nič nedokazuje o tom, ktorý odpovedal. Preložte názov hostiteľa endpointu a skontrolujte, či získaná adresa patrí do privátneho alebo verejného rozsahu. Ak vaša pripojená sieť nedostáva privátny pohľad cez DNS, príkaz uspeje cez verejný endpoint a vyradíte verejnú cestu na základe falošných dôkazov. To je najčastejší spôsob, akým táto migrácia zlyhá, a vyzerá presne ako úspech.

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

Ponechajte názov hostiteľa a overovanie certifikátu presne tak, ako sú. Nahradenie privátnou IP v kubeconfig a vynechanie overenia TLS nie je migrácia, ktorú ste opísali v zázname o zmene, a zlyhá znova v okamihu, keď sa endpoint otočí.

4. Úmyselne vyraďte verejný prístup

Keď je privátna cesta preukázaná a postup obnovy schválený, zatvorte verejný endpoint. Toto je skutočná zmena, nie náhľad, preto ju spustite proti účtu a nastaveniam, ktoré skutočne máte na mysli.

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

V režime iba privátny sa verejný názov DNS prekladá na privátne adresy endpointu zvnútra VPC, takže preklad a dostupnosť prestávajú byť to isté. Všetko, čo sa spoliehalo na verejnú adresu, vrátane CI runnerov alebo notebooku v inej sieti, teraz potrebuje vlastnú cestu dnu.

5. Držte sieťovú politiku a politiku identity oddelene

Zoznam CIDR pre verejný prístup riadi iba verejný endpoint. Neobmedzuje privátny endpoint, ktorý namiesto toho ohraničuje bezpečnostná skupina clusteru a politika pripojenej siete. Ak si verejný endpoint ponecháte, jeho zoznam povolených musí zodpovedať verejnému výstupu, ktorý vaši klienti API a uzly skutočne používajú; adresa z fondu VPN je len zriedka tým zdrojom.

Nič z toho nemení IAM ani Kubernetes RBAC. Nastavenia endpointu sú administratívna akcia a bežní používatelia by nemali dostávať oprávnenie uvoľniť hranicu len preto, aby dosiahli na API. Zapíšte konečný stav, dátum a cestu obnovy do runbooku a potom cestu obnovy raz otestujte, kým je to ešte ľahké.

Súvisiace články