EKS API'син VPN артына коюу: операциялардын тартиби
Жеке endpoint'ти күйгүзүңүз, kubectl ага жеткенин далилдеңиз, анан жалпыга ачык endpoint'ти жабыңыз. Ар бир кадамдын ортосундагы буйруктар жана текшерүүлөр менен этаптуу runbook.
Бул өзгөртүүнүн кооптуу версиясы — endpoint'ти буруп, бардык администраторлорду бир убакта кулпулаган бир буйрук. Коопсуз версия эки жолду тең ачык кармайт, жеке жолдун VPN'ден иштешин далилдейт, жана ошондон кийин гана жалпыга ачык endpoint'ти алып салат. Бар кластер, анын VPC'сине бекитилген туннель жана мурунтан иштеп турган kubeconfig бар деп эсептеңиз; милдет — Kubernetes API'ге жеке кирүү, жеке түйүндөр эмес жана жаңы уруксат модели эмес. Төмөнкү ар бир кадамдын коопсуз ийгиликсиз боло турган текшерүүсү бар.
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 бирикмеси, сайттар аралык шлюз жана теңдештирилген 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 ийгилик тууралуу билдиргенге чейин сураңыз. Муну жасап жатканда түйүндөрдүн жана башкаруу тегиздигинин трафигин тынч калтырыңыз: кластердин бүт коопсуздук тобун ноутбукуңуз үчүн эреже менен алмаштыруу — иштеп турган маалымат тегиздигин экинчи окуяга айландыруунун жолу.
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 кардарларыңыз жана түйүндөрүңүз чындап колдонгон жалпыга ачык чыгууга дал келиши керек; VPN пулунун дареги бул булак боло бербейт.
Булардын эч бири IAM же Kubernetes RBAC'ти өзгөртпөйт. Endpoint жөндөөлөрү — административдик аракет, жана жөнөкөй колдонуучулар API'ге жетүү үчүн гана чекти бошотууга уруксат албашы керек. Акыркы абалды, күндү жана калыбына келтирүү жолун runbook'ка жазыңыз, анан калыбына келтирүү жолун али жеңил кезде бир жолу текшериңиз.