В предишната статия разгледахме стъпките за инсталиране на EKS Cluster в платформата Amazon Cloud. Amazon Elastic Kubernetes Service (Amazon EKS) е напълно управлявана услуга Kubernetes, която премахва главоболието при управлението на самолет за управление, включително etcd от SysAdmin. Надстройването на клъстер може лесно да се направи с едно щракване на бутон. В това кратко ръководство ще ви преведа през процеса на предоставяне на достъп на разработчиците до пространството от имена на Kubernetes, използвайки правила на IAM и родния RBAC на Kubernetes.
За да ви помогне това ръководство, някои предпоставки, които трябва да бъдат маркирани, са:
- Работещ клъстер EKS: Проверете инсталирането на EKS клъстер
- Работна конфигурация на AWS CLI: Инсталирайте и използвайте AWS CLI на Linux
- Потребител на IAM с необходимите административни разрешения
- Достъп до AWS Web Console за управление. Същите операции могат да се извършват изцяло в CLI, но ще използваме и двете.
Преди да започнете
Потвърдете, че можете да изброите вашия клъстер от вашата локална машина или Bastion сървър, който има достъп до EKS Control Plane.
$ eksctl получи клъстер ИМЕ РЕГИОН prod-eks-cluster eu-west-1
Или с команда aws.
$ aws eks списък-клъстери
Ако вашата команда не върне никакви изходи, проверете дали използвате правилни идентификационни данни и регион.
От уеб конзола:
По подразбиране само създателят на клъстера Amazon EKS има система: master разрешения, която отключва всички операции на клъстера Kubernetes, които трябва да бъдат изпълнени от kubectl. За да разширите функционалността, така че другите потребители да имат достъп до клъстера, aws-auth ConfigMap ще бъде модифициран.
Ще трябва да създадем IAM роля с AWS Услуга за токени за сигурност (STS) разрешения, което позволява на потребителите да искат временни идентификационни данни с ограничени привилегии.
Стъпка 1: Създайте IAM роля
Следващото е да създадете роля на IAM> Роли> Създаване на роля.
Изберете „Друг акаунт в AWS ” като тип доверен обект:
Не прилагайте никакво разрешение
Добавете подходящи тагове.
Дайте име на роля и я създайте с помощта на „Създаване на роляБутон в долната част. Моята ще се извика k8s-devs-role, това е същото име, зададено при създаването на политики.
Стъпка 2: Създайте IAM политика със STS да приеме разрешения за роля
Влезте в уеб конзолата на AWS и отидете до IAM> Политики> Създаване на политика > JSON и поставете под json съдържанието, заместващо
"Версия": "2012-10-17", "Изявление": ["Ефект": "Разрешаване", "Действие": "sts: AssumeRole", "Ресурс": "arn: aws: iam ::: role / k8s-devs-role ", " Effect ":" Allow "," Action ": [" eks: DescribeCluster "," eks: ListClusters "]," Resource ":" * "]
Пример за идентификатор на акаунт 293759796572
"Версия": "2012-10-17", "Изявление": ["Ефект": "Разрешаване", "Действие": "sts: AssumeRole", "Ресурс": "arn: aws: iam :: 293759796572 : role / k8s-devs-role ", " Effect ":" Allow "," Action ": [" eks: DescribeCluster "," eks: ListClusters "]," Resource ":" * "]
Дайте име на правилото и натиснете бутона за създаване.
Стъпка 3: Създайте IAM потребителска група
Създайте IAM група с име k8s-devs
Прикачете политиката, създадена в стъпка 2.
Прегледайте политиката и завършете процеса на създаване.
Стъпка 4: Добавете IAM потребители към групата
Последната ни стъпка е добавяне на потребители на IAM, които се нуждаят от достъп до клъстер Kubernetes, към групата, която току-що създадохме.
Отидете на АЗ СЪМ > Групи > k8s-devs > Добавяне на потребители към групата за да добавите потребители към групата.
Добавете всички други потребители, на които искате да предоставите достъп.
Стъпка 5: Създайте Kubernetes RBAC за разработчици
Ролевият контрол на достъпа (RBAC) е метод за регулиране на достъпа до компютърни или мрежови ресурси въз основа на ролите на отделни потребители във вашата организация. RBAC API декларира четири вида Kubernetes обект: Роля, ClusterRole, RoleBinding и ClusterRoleBinding.
Ще започна, като създам три пространства от имена, до които ще дам достъп на разработчиците: прод, уат и разработчик
$ kubectl създаване на пространство от имена prod пространство на име / прод създадено $ kubectl създаване пространство на имена uat пространство на имена / uat създадено $ kubectl създаване на пространство на имена пространство на име / създадено dev
Избройте всички пространства от имена, за да потвърдите творенията.
$ kubectl get ns ИМЕ СТАТУС ВЪЗРАСТ по подразбиране Активен 25d dev Активен 9s istio-оператор Активен 14d istio-система Активен 14d kube-node-lease Активен 25d kube-публичен Активен 25d kube-система Активен 25d мониторинг Активен 17d прод Активен 40s uat Активен 26s
Създаване на клъстерна роля
Ще създам клъстерна роля, наречена dev-пълен достъп чийто файл на манифеста изглежда по-долу:
kubectl прилага -f - <
Очакван резултат:
клъстерол.rbac.упълномощаване.k8s.io / dev-пълен достъп е създаден
Потвърдете настройките:
$ kubectl получи клъстери за dev-пълен достъп -o yaml
Ако имате инсталиран Metrics Server, можете да добавите достъп до ресурса Api по-долу:
- apiGroups: ["метрики.k8s.io "] ресурси: [" * "] глаголи: [" * "]
Създаване на RoleBindings
Следва създаването на обвързване на групови роли за нашите разработчици.
$ vim k8s-access.ш
Групата се нарича k8s-devs
# Достъп до Prod namespace NAMESPACE = "prod" CLUSTERROLE = "dev-full-access" kubectl apply -f - <
Приложете конфигурацията:
sh k8s-access.ш
Подобна конфигурация се използва за разрешаване на достъп за други пространства от имена:
# Достъп до UAT пространство от имена NAMESPACE = "uat" CLUSTERROLE = "dev-full-access" kubectl apply -f - <
Стъпка 6: Редактирайте Kubernetes aws-auth ConfigMap
За да предоставите на допълнителни потребители или роли на AWS способността да взаимодействат с вашия клъстер, трябва да редактирате aws-auth
ConfigMap в Kubernetes.
Проверете дали вече сте приложили aws-auth ConfigMap.
$ kubectl описва configmap -n kube-system aws-auth
Добавяне на IAM потребител или роля към Amazon EKS клъстер
Ще добавим нашата IAM роля, създадена в Стъпка 1 към EKS клъстер чрез редактиране на aws-auth ConfigMap.
$ kubectl редактиране -n kube-system configmap / aws-auth
Актуализирайте данни.mapRoles раздел за разрешаване на достъп с ролята на IAM и групата Kubernetes RBAC.
apiVersion: v1 данни: mapRoles: | - групи: - k8s-devs rolearn: arn: aws: iam ::: role / k8s-devs-role потребителско име: разработчик
Замяна:
с идентификатора на акаунта на вашия акаунт в AWS.
Ето екранна снимка на моята конфигурация:
Ако искате да дадете на конкретен потребител главен администраторски достъп, добавете подобно по-долу.
mapUsers: | - групи: - система: master userarn: arn: aws: iam ::: потребител / потребителско име: arn: aws: iam ::: потребител /
Или просто достъп до определени пространства от имена, както е зададено в Ролевите обвързвания по-рано:
mapUsers: | - групи: - k8s-devs userarn: arn: aws: iam ::: потребител / потребителско име: arn: aws: iam ::: потребител /
Стъпка 7: Създайте kubeconfig за Amazon EKS (като разработчик)
Разработчиците първо трябва да инсталират AWS CLI и да конфигурират своите идентификационни данни.
$ aws конфигурира
След като зададете идентификационни данни, потвърдете с командата по-долу:
$ aws sts get-caller-identity
Очакван резултат:
"UserId": "", "Сметка": ""," Arn ":" arn: aws: iam ::: потребител /"
Разработчиците ще използват AWS CLI актуализация-kubeconfig команда за създаване или актуализиране на kubeconfig за клъстера:
aws eks --region update-kubeconfig --name --role-arn arn: aws: iam ::: role / k8s-devs-role
Примерът по-долу е за наречен клъстер prod-eks-клъстер създаден през eu-west-1 регион на идентификатор на акаунт 293759796572
$ aws eks --region eu-west-1 update-kubeconfig --name prod-eks-cluster --role-arn arn: aws: iam :: 293759796572: role / k8s-devs-role
Команден изход:
Добавен е нов контекстен arn: aws: eks: eu-west-1: 293759796572: cluster / prod-eks-cluster към / var / root /.kube / конфиг
Опитайте да изброите ресурси на обхвата на клъстера, които трябва да получите Забранен съобщение за грешка:
$ kubectl get nodes Грешка от сървъра (Забранено): възлите са забранени: Потребителят "разработчик" не може да изброи ресурси "възли" в API групата "" в обхвата на клъстера
Но трябва да можете да изброите ресурсите на пространството от имена:
$ kubectl get all -n prod Не са намерени ресурси в пространство от имена на prod. $ kubectl get all -n uat Няма намерени ресурси в пространство от имена на prod. $ kubectl get all -n dev Не са намерени ресурси в пространство от имена на prod.
Прилагане на тестово приложение:
$ kubectl стартира nginx-пример --image = nginx --replicas = 2 -n внедряване на dev.apps / nginx-example създаден $ kubectl get pods -n dev ИМЕ ГОТОВ СЪСТОЯНИЕ ВЪЗСТАНОВЯВА ВЪЗРАСТ nginx-example-79c476f965-jqm6f 1/1 Running 0 29s nginx-example-79c476f965-lkzll 1/1 Running 0 29s $ kubectl delete внедряване nginx- пример -n внедряване на dev.приложения "nginx-пример" изтрити
Насладете се на разработката си на Kubernetes, задвижвана от Amazon EKS. По-долу са дадени някои видео класове, които можете да изпробвате на Kubernetes и Microservices.Kubernetes за абсолютните начинаещи - практическиKubernetes за абсолютните начинаещи - практически $ 12.06
156 долара.75в наличност КУПЕТЕ СЕГАУдеми.comDocker и Kubernetes: Пълното ръководствоDocker и Kubernetes: Пълното ръководство $ 12.06
120 долара.58в наличност КУПЕТЕ СЕГАУдеми.comСертифициран администратор на Kubernetes (CKA) с практически тестовеСертифициран администратор на Kubernetes (CKA) с практически тестове $ 12.06
156 долара.75в наличност КУПЕТЕ СЕГАУдеми.comНаучете DevOps: Пълният курс по KubernetesНаучете DevOps: Пълният курс по Kubernetes $ 12.06
48 долара.22в наличност КУПЕТЕ СЕГАУдеми.comСертифициран разработчик на приложения Kubernetes (CKAD) с тестовеСертифициран разработчик на приложения Kubernetes (CKAD) с тестове $ 12.06
156 долара.75в наличност КУПЕТЕ СЕГАУдеми.com