Nevarna različica te spremembe je en sam ukaz, ki obrne endpoint in obenem zaklene vse skrbnike. Varna različica ohranja obe poti odprti, dokaže, da zasebna deluje iz VPN, in šele nato umakne javni endpoint. Predpostavite obstoječi cluster, odobren tunel v njegov VPC in kubeconfig, ki že deluje; naloga je zasebni dostop do API Kubernetes, ne zasebna vozlišča in ne nov model dovoljenj. Vsak spodnji korak ima preverjanje, pri katerem lahko varno odpoveste.

1. Popišite endpoint in obdržite pot nazaj

Pred spremembo zabeležite trenutno stanje, vključno z javnim seznamom dovoljenih CIDR in varnostno skupino clusterja. Prav ta dva boste primerjali, ko bo nekaj prenehalo delovati, seznam dovoljenih pa je tudi vaša pot za razveljavitev, če se zasebna pot izkaže za napačno.

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

REGION in CLUSTER sta tukaj nadomestna znaka. Bodite pozorni, kaj zasebna zastavica zdaj prikazuje, saj cluster, ustvarjen z že omogočenim zasebnim dostopom, potrebuje drugačen prvi korak kot tisti, ki ga ni nikoli imel. Med prehodom ohranite odprto vsaj eno odobreno skrbniško pot; VPN, ki je odvisen od dosegljivosti istega clusterja, ni pot za obnovitev.

2. Omogočite zasebni dostop, ko je omrežna pot pripravljena

Vklop zastavice je lažja polovica. Tunel potrebuje pot do zasebnih naslovov endpointa, varnostna skupina clusterja pa potrebuje TCP 443 iz vira, ki ga VPN dejansko predstavlja. Povezava Client VPN, prehod site-to-site in povezan VPC lahko vsi predstavljajo različne izvorne naslove, zato uporabite model, ki ste ga uvedli, namesto splošnega zasebnega obsega.

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

Posodobitev je asinhrona. Povprašujte po id posodobitve, dokler ne poroča o uspehu, namesto da čakate določeno število sekund in domnevate. Medtem pustite promet vozlišč in krmilne ravnine pri miru: zamenjava celotne varnostne skupine clusterja s pravilom za vaš prenosnik je način, kako delujoča podatkovna ravnina postane drugi incident.

Dokumentacija o endpointih EKS si zasluži eno celotno branje, ker pravi, da lahko dostop samo prek zasebne poti prihaja iz VPC ali povezanega omrežja. Prav ta stavek je ves razlog, da je ta migracija mogoča, in je tudi razlog, da naslednji korak obstaja.

3. Dokažite, da je delovna postaja uporabila zasebno pot

Ko sta omogočena oba endpointa, uspešen kubectl get ns ne dokaže ničesar o tem, kateri je odgovoril. Razrešite ime gostitelja endpointa in preverite, ali dobljeni naslov pripada zasebnemu ali javnemu obsegu. Če vaše povezano omrežje ne prejme zasebnega pogleda prek DNS, bo ukaz uspel prek javnega endpointa in javno pot boste umaknili na podlagi lažnih dokazov. To je najpogostejši način, kako ta migracija gre narobe, in izgleda natanko kot uspeh.

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

Ohranite ime gostitelja in preverjanje certifikata natanko takšna, kot sta. Zamenjava z zasebnim IP v kubeconfig in preskok preverjanja TLS ni migracija, ki ste jo opisali v zapisu o spremembi, in znova bo spodletela v trenutku, ko se endpoint obrne.

4. Namerno umaknite javni dostop

Ko je zasebna pot dokazana in postopek obnovitve odobren, zaprite javni endpoint. To je resnična sprememba in ne predogled, zato jo izvedite na računu in nastavitvah, ki jih resnično mislite.

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

V načinu samo zasebno se javno ime DNS razreši na zasebne naslove endpointa znotraj VPC, zato razreševanje in dosegljivost nista več ista stvar. Vse, kar se je zanašalo na javni naslov, vključno s CI izvajalci ali prenosnikom v drugem omrežju, zdaj potrebuje svojo pot noter.

5. Ločite omrežno politiko in politiko identitete

Seznam CIDR za javni dostop upravlja samo javni endpoint. Ne omejuje zasebnega endpointa, ki ga namesto tega omejujeta varnostna skupina clusterja in politika povezanega omrežja. Če obdržite javni endpoint, mora njegov seznam dovoljenih ustrezati javnemu izhodu, ki ga vaši odjemalci API in vozlišča dejansko uporabljajo; naslov iz bazena VPN je redko ta vir.

Nič od tega ne spremeni IAM ali Kubernetes RBAC. Nastavitve endpointa so skrbniško dejanje in običajni uporabniki ne bi smeli prejeti dovoljenja za omilitev meje samo zato, da dosežejo API. Zapišite končno stanje, datum in pot za obnovitev v runbook, nato pot za obnovitev enkrat preizkusite, dokler je še enostavno.

Sorodni članki