EKS API-г VPN-ийн ард байрлуулах: үйлдлийн дараалал
Хувийн endpoint-ийг идэвхжүүлж, kubectl түүнд хүрснийг нотолж, дараа нь нийтийн endpoint-ийг хаа. Алхам бүрийн хоорондох командууд болон шалгалтуудтай үе шаттай runbook.
Энэ өөрчлөлтийн аюултай хувилбар нь endpoint-ийг эргүүлж, бүх админстрийг нэгэн зэрэг түгжих нэг команд юм. Аюулгүй хувилбар нь хоёр замыг нээлттэй байлгаж, хувийн зам нь VPN-ээс ажиллаж байгааг нотолж, зөвхөн дараа нь нийтийн endpoint-ийг буцаана. Одоо байгаа кластер, түүний VPC руу зөвшөөрөгдсөн туннель, аль хэдийн ажиллаж буй kubeconfig байна гэж үзнэ; ажил нь Kubernetes API руу хувийн хандалт бөгөөд хувийн node биш, шинэ зөвшөөрлийн загвар ч биш. Доорх алхам бүр аюулгүйгээр бүтэлгүйтэж болох шалгалттай.
1. Endpoint-ийг бүртгэж, буцах замаа хадгал
Өөрчлөхөөс өмнө одоогийн төлөвийг бүртгэ, үүнд нийтийн CIDR зөвшөөрөгдсөн жагсаалт болон кластерийн аюулгүй байдлын бүлэг орно. Ямар нэгэн зүйл ажиллахаа болих үед харьцуулах хоёр зүйл нь эдгээр бөгөөд хувийн маршрут буруу болж таарвал зөвшөөрөгдсөн жагсаалт нь таны буцаах зам мөн.
aws eks describe-cluster --region REGION --name CLUSTER \
--query 'cluster.{endpoint:endpoint,public:resourcesVpcConfig.endpointPublicAccess,private:resourcesVpcConfig.endpointPrivateAccess,cidrs:resourcesVpcConfig.publicAccessCidrs}'
REGION болон CLUSTER энд орлуулагч юм. Хувийн туг одоо юу гэж харуулж байгааг анхаар, учир нь хувийн хандалт аль хэдийн идэвхжсэн кластерт хэзээ ч байгаагүй кластерээс өөр эхний алхам хэрэгтэй. Шилжилтийн үеэр дор хаяж нэг зөвшөөрөгдсөн удирдлагын замыг нээлттэй байлга; ижил кластерт хүрэх боломжоос хамааралтай VPN нь сэргээх зам биш.
2. Сүлжээний зам бэлэн болсон үед хувийн хандалтыг идэвхжүүл
Тугийг асаах нь хялбар хагас. Туннель нь endpoint-ийн хувийн хаягууд руу чиглэсэн маршрут хэрэгтэй, кластерийн аюулгүй байдлын бүлэгт VPN-ээс бодитоор танилцуулж буй эх сурвалжаас TCP 443 хэрэгтэй. Client VPN-ийн холбоо, site-to-site гарц, peer хийсэн VPC бүгд өөр өөр эх хаяг танилцуулж болох тул ерөнхий хувийн мужийн оронд таны байршуулсан загварыг ашигла.
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
Шинэчлэлт нь асинхрон. Тодорхой тооны секунд хүлээж таамаглахын оронд шинэчлэлтийн id амжилтыг мэдэгдэх хүртэл асуу. Үүнийг хийхдээ node болон хяналтын хавтгайн урсгалыг тайван үлдээ: кластерийн бүх аюулгүй байдлын бүлгийг зөөврийн компьютерт зориулсан дүрмээр солих нь ажиллаж буй өгөгдлийн хавтгайг хоёр дахь осол болгох зам юм.
EKS endpoint-ийн баримт бичиг нэг удаа бүрэн уншихад үнэ цэнэтэй, учир нь зөвхөн хувийн хандалт нь VPC эсвэл холбогдсон сүлжээнээс ирж болно гэж бичсэн байдаг. Тэр өгүүлбэр нь энэ шилжилт боломжтой байх бүх шалтгаан бөгөөд дараагийн алхам байх шалтгаан ч мөн.
3. Ажлын станц хувийн замыг ашигласныг нотол
Хоёр endpoint идэвхтэй үед амжилттай kubectl get ns аль нь хариулсныг юу ч нотлохгүй. Endpoint-ийн хост нэрийг шийдэж, авсан хаяг нь хувийн эсвэл нийтийн мужид хамаарах эсэхийг шалга. Хэрэв таны холбогдсон сүлжээ DNS-ээр дамжуулан хувийн үзэмжийг авахгүй бол команд нь нийтийн endpoint-ээр амжилттай болж, худал нотолгоонд үндэслэн нийтийн замыг буцаах болно. Энэ нь энэ шилжилт буруу болох хамгийн түгээмэл зам бөгөөд амжилттай яг адил харагдана.
nslookup HASH.gr7.REGION.eks.amazonaws.com
kubectl cluster-info
kubectl get ns --request-timeout=10s
Хост нэр болон сертификатын баталгаажуулалтыг яг байгаагаар нь үлдээ. kubeconfig дээр хувийн IP тавьж, TLS шалгалтыг алгасах нь өөрчлөлтийн бүртгэлд тайлбарласан шилжилт биш бөгөөд endpoint эргэх тэр мөчид дахин бүтэлгүйтнэ.
4. Нийтийн хандалтыг санаатайгаар буцаа
Хувийн зам нотлогдож, сэргээх урсгал зөвшөөрөгдсөний дараа нийтийн endpoint-ийг хаа. Энэ нь урьдчилан харах биш бодит өөрчлөлт тул үнэхээр санаж буй бүртгэл болон тохиргоон дээр ажиллуул.
aws eks update-cluster-config --region REGION --name CLUSTER \
--resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true
Зөвхөн хувийн горимд нийтийн DNS нэр нь VPC-ийн дотроос endpoint-ийн хувийн хаягууд руу шийдэгддэг тул шийдэл болон хүрэх боломж нэг зүйл байхаа болино. Нийтийн хаягт найдаж байсан бүхэн, үүнд CI гүйцэтгэгч эсвэл өөр сүлжээн дэх зөөврийн компьютер, одоо өөрийн орох зам хэрэгтэй.
5. Сүлжээний бодлого болон таних бодлогыг тусдаа байлга
Нийтийн хандалтын CIDR жагсаалт зөвхөн нийтийн endpoint-ийг удирддаг. Энэ нь хувийн endpoint-ийг хязгаарлахгүй, харин түүнийг кластерийн аюулгүй байдлын бүлэг болон холбогдсон сүлжээний бодлого хязгаарлана. Хэрэв нийтийн endpoint-ийг үлдээвэл түүний зөвшөөрөгдсөн жагсаалт нь таны API клиентүүд болон node-ууд бодитоор ашигладаг нийтийн гаралттай тохирох ёстой; VPN-ийн пулын хаяг тэр эх сурвалж байх нь ховор.
Эдгээрийн аль нь ч IAM эсвэл Kubernetes RBAC-ийг өөрчлөхгүй. Endpoint-ийн тохиргоо нь захиргааны үйлдэл бөгөөд энгийн хэрэглэгчид зөвхөн API-д хүрэхийн тулд хил хязгаарыг сулруулах зөвшөөрөл авах ёсгүй. Эцсийн төлөв, огноо, сэргээх замыг runbook-д бичээд, дараа нь сэргээх замыг одоо ч хялбар байхад нь нэг удаа туршиж үз.