Selle muudatuse ohtlik versioon on üks käsk, mis pöörab lõpp-punkti ümber ja lukustab kõik administraatorid korraga välja. Ohutu versioon hoiab mõlemad teed avatuna, tõestab, et privaatne tee töötab VPN-ist, ja alles siis taandab avaliku lõpp-punkti. Eeldage olemasolevat klastrit, kinnitatud tunnelit selle VPC-sse ja juba töötavat kubeconfigi; ülesanne on privaatne juurdepääs Kubernetes API-le, mitte privaatsed noodid ja mitte uus õiguste mudel. Igal alloleval sammul on kontroll, mille juures saate turvaliselt ebaõnnestuda.

1. Inventeerige lõpp-punkt ja hoidke tagasitee

Enne muutmist kirjutage üles praegune olek, sealhulgas avalik CIDR-lubatud aadresside loend ja klastri turbegrupp. Just neid kahte võrdlete, kui midagi lakkab töötamast, ja lubatud loend on ka teie tagasipööramise tee, kui privaatne marsruut osutub valeks.

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

REGION ja CLUSTER on siin kohatäited. Pange tähele, mida privaatne lipp praegu näitab, sest klastril, mis on loodud juba lubatud privaatse juurdepääsuga, on vaja teistsugust esimest sammu kui sellisel, millel seda kunagi polnud. Hoidke ülemineku ajal avatuna vähemalt üks kinnitatud haldustee; VPN, mis sõltub sama klastri kättesaadavusest, ei ole taastamistee.

2. Lubage privaatne juurdepääs, kui võrgutee on olemas

Lipu sisselülitamine on lihtsam pool. Tunnel vajab marsruuti lõpp-punkti privaatsete aadressideni ja klastri turbegrupp vajab TCP 443 allikast, mida VPN tegelikult esitab. Client VPN-i seos, saidi-ja-saidi lüüs ja peeritud VPC võivad kõik esitada erinevaid lähteaadresse, seega kasutage mudelit, mille juurutasite, mitte üldist privaatset vahemikku.

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

Värskendus on asünkroonne. Küsige värskenduse id-d, kuni see teatab edust, selle asemel et oodata kindel arv sekundeid ja eeldada. Jätke sõlmede ja juhtimistasandi liiklus rahule, kuni seda teete: klastri kogu turbegrupi asendamine teie sülearvuti jaoks mõeldud reegliga on viis, kuidas töötav andmetasand muutub teiseks intsidendiks.

EKS-i lõpp-punktide dokumentatsioon tasub üks kord täielikult läbi lugeda, sest see ütleb, et ainult privaatne juurdepääs võib tulla VPC-st või ühendatud võrgust. See lause on kogu põhjus, miks see migratsioon on võimalik, ja samuti põhjus, miks järgmine samm olemas on.

3. Tõestage, et tööjaam kasutas privaatset teed

Kui mõlemad lõpp-punktid on lubatud, ei tõesta õnnestunud kubectl get ns midagi selle kohta, milline neist vastas. Lahendage lõpp-punkti hostinimi ja kontrollige, kas saadud aadress kuulub privaatsesse või avalikku vahemikku. Kui teie ühendatud võrk ei saa DNS-i kaudu privaatset vaadet, õnnestub käsk avaliku lõpp-punkti kaudu ja te taandate avaliku tee vale tõestuse põhjal. See on kõige levinum viis, kuidas see migratsioon untsu läheb, ja see näeb välja täpselt nagu edu.

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

Hoidke hostinimi ja sertifikaadi valideerimine täpselt nii, nagu need on. Privaatse IP-ga asendamine kubeconfigis ja TLS-i kontrollimise vahelejätmine ei ole migratsioon, mida te muudatuse kirjes kirjeldasite, ja see ebaõnnestub uuesti hetkel, kui lõpp-punkt pöörleb.

4. Taandage avalik juurdepääs teadlikult

Kui privaatne tee on tõestatud ja taastamisprotsess kinnitatud, sulgege avalik lõpp-punkt. See on tegelik muudatus, mitte eelvaade, seega käivitage see konto ja seadete vastu, mida te tegelikult mõtlete.

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

Ainult privaatses režiimis lahendatakse avalik DNS-nimi VPC seest lõpp-punkti privaatseteks aadressideks, nii et lahendamine ja kättesaadavus ei ole enam sama asi. Kõik, mis tugines avalikule aadressile, sealhulgas CI-jooksjad või sülearvuti teises võrgus, vajab nüüd oma sissepääsuteed.

5. Hoidke võrgupoliitika ja identiteedipoliitika eraldi

Avaliku juurdepääsu CIDR-loend juhib ainult avalikku lõpp-punkti. See ei piira privaatset lõpp-punkti, mida selle asemel piiravad klastri turbegrupp ja ühendatud võrgu poliitika. Kui jätate avaliku lõpp-punkti alles, peab selle lubatud loend vastama avalikule väljundile, mida teie API-kliendid ja sõlmed tegelikult kasutavad; VPN-i pooli aadress on harva see allikas.

Miski sellest ei muuda IAM-i ega Kubernetes RBAC-i. Lõpp-punkti seaded on haldustoiming ja tavalised kasutajad ei peaks saama luba piiri lõdvendada ainult API-le jõudmiseks. Kirjutage lõplik olek, kuupäev ja taastamistee runbooki, seejärel testige taastamisteed üks kord, kui see on veel lihtne.

Seotud artiklid