向开发人员授予对EKS Kubernetes集群的访问权限

这是续集。
您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南

这是续集。
这是续集。
这是续集。
这是续集。
这是续集。

这是续集。

这是续集。

这是续集。
这是续集。


这是续集。

这是续集。
这是续集。

在上一篇文章中,我们介绍了在Amazon Cloud平台上安装EKS群集的步骤。Amazon Elastic Kubernetes服务(Amazon EKS)是一项完全托管的Kubernetes服务,它消除了包括SysAdmin的etcd在内的控制平面管理的麻烦。在本简短指南中,我将引导您完成使用IAM策略和Kubernetes本机RBAC授予开发人员对Kubernetes命名空间的访问的过程。

为了使本指南对您有利,应勾选以下一些先决条件:

  • 有效的EKS群集:检查EKS群集的安装
  • 有效的AWS CLI配置:在Linux上安装和使用AWS CLI
  • 具有所需管理权限的IAM用户
  • 可以访问AWS Web Console进行管理。相同的操作可以在CLI中完全完成,但是我们将同时使用这两种操作。

开始之前

确认您可以列出可以访问EKS控制平面的本地计算机或堡垒服务器上的群集。

$ eksctl get cluster
NAME			REGION
prod-eks-cluster	eu-west-1

或使用aws命令。

$ aws eks list-clusters

如果您的命令未返回任何输出,请检查您是否使用了正确的凭据和区域。

从Web控制台:

默认情况下,只有Amazon EKS集群的创建者具有 system:masters权限 哪个解锁了要从kubectl执行的所有Kubernetes集群操作。为了扩展功能以便其他用户可以访问集群, 验证码 ConfigMap将被修改。

我们需要创建一个IAM角色, AWS 安全令牌服务(STS)权限,该权限允许用户请求临时的受限特权凭据。

步骤1:建立IAM角色

接下来是在 IAM>角色>创建角色

选择 ”另一个AWS账户” 作为受信任实体的类型:

向开发人员授予对EKS Kubernetes集群的访问权限

不要附加任何权限

添加适当的标签。

向开发人员授予对EKS Kubernetes集群的访问权限

给角色命名并使用底部的“创建角色”按钮创建它。 k8s-devs-role,这与创建策略中设置的名称相同。

向开发人员授予对EKS Kubernetes集群的访问权限

步骤2:使用STS创建IAM策略承担角色权限

登录到您的AWS Web控制台并导航至 IAM>策略>创建策略 > JSON 并粘贴下面的json内容替换 使用您的AWS账户ID和带有您创建的角色名称的k8s-devs-role。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam:::role/k8s-devs-role"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:ListClusters"
            ],
            "Resource": "*"
        }
    ]
}

帐户ID示例 293759796572

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::293759796572:role/k8s-devs-role"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:ListClusters"
            ],
            "Resource": "*"
        }
    ]
}

为策略命名,然后点击“创建”按钮。

向开发人员授予对EKS Kubernetes集群的访问权限

步骤3:建立IAM使用者群组

创建一个名为的IAM组 k8s-devs

向开发人员授予对EKS Kubernetes集群的访问权限

附加在步骤2中创建的策略。

向开发人员授予对EKS Kubernetes集群的访问权限

查看策略并完成创建过程。

向开发人员授予对EKS Kubernetes集群的访问权限

步骤4:将IAM用户添加到组

我们的最后一步是将需要访问Kubernetes Cluster的IAM用户添加到我们刚刚创建的组中。

我是 > 团体 > k8s-devs > 将用户添加到组 将用户添加到组中。

向开发人员授予对EKS Kubernetes集群的访问权限

添加您要授予访问权限的所有其他用户。

步骤5:为开发人员创建Kubernetes RBAC

基于角色的访问控制(RBAC)是一种根据组织内各个用户的角色来调节对计算机或网络资源的访问的方法.RBAC API声明了四种Kubernetes对象:Role,ClusterRole,RoleBinding和ClusterRoleBinding。

首先,我将创建三个命名空间,供开发人员访问: 产品,燕麦 开发者

$ kubectl create namespace prod
namespace/prod created

$ kubectl create namespace uat
namespace/uat created

$ kubectl create namespace dev
namespace/dev created

列出所有名称空间以确认创建。

$ kubectl get ns
NAME              STATUS   AGE
default           Active   25d
dev               Active   9s
istio-operator    Active   14d
istio-system      Active   14d
kube-node-lease   Active   25d
kube-public       Active   25d
kube-system       Active   25d
monitoring        Active   17d
prod              Active   40s
uat               Active   26s

创建集群角色

我将创建一个名为 开发人员完全访问权限 其清单文件如下所示:

kubectl apply  -f - <

预期产量:

clusterrole.rbac.authorization.k8s.io/dev-full-access created

确认设置:

$ kubectl get clusterroles dev-full-access -o yaml

创建角色绑定

接下来是为我们的开发人员创建组角色绑定。 k8s-devs

# Access to Prod namespace
NAMESPACE="prod"
CLUSTERROLE="dev-full-access"

kubectl apply  -f - <

步骤6:编辑Kubernetes aws-auth ConfigMap

要授予其他AWS用户或角色与集群进行交互的能力,您必须编辑 aws-auth Kubernetes中的ConfigMap

检查是否已经应用了aws-auth ConfigMap。

$ kubectl describe configmap -n kube-system aws-auth

将IAM用户或角色添加到Amazon EKS集群

我们将添加在以下位置创建的IAM角色 1个 通过编辑aws-auth ConfigMap到EKS集群。

$ kubectl edit -n kube-system configmap/aws-auth

更新 data.mapRoles 部分以使用IAM角色和Kubernetes RBAC组授权访问。

apiVersion: v1
data:
  mapRoles: |
    - groups:
      - k8s-devs
      rolearn: arn:aws:iam:::role/k8s-devs-role
      username: developer

替换:替换:

  • 使用您的AWS账户的账户ID。

这是我的配置的屏幕截图:

向开发人员授予对EKS Kubernetes集群的访问权限

如果要授予特定用户“主管理员”访问权限,请添加如下内容。

mapUsers: |
    - groups:
      - system:masters
      userarn: arn:aws:iam:::user/
      username: arn:aws:iam:::user/

或者只是访问前面在角色绑定中设置的特定名称空间:

mapUsers: |
    - groups:
      - k8s-devs
      userarn: arn:aws:iam:::user/
      username: arn:aws:iam:::user/

步骤7:为Amazon EKS创建kubeconfig(作为开发人员)

开发人员将需要首先安装AWS CLI并配置其凭证。

$ aws configure

设置凭据后,请使用以下命令进行确认:

$ aws sts get-caller-identity

预期产量:

{
    "UserId": "",
    "Account": "",
    "Arn": "arn:aws:iam:::user/"
}

开发人员将使用AWS CLI update-kubeconfig命令为集群创建或更新kubeconfig:

aws eks --region  update-kubeconfig --name  --role-arn arn:aws:iam:::role/k8s-devs-role

以下示例适用于名为 产品集群 创建于 eu-west-1 帐户ID上的区域 293759796572

$ aws eks --region eu-west-1 update-kubeconfig --name prod-eks-cluster --role-arn arn:aws:iam::293759796572:role/k8s-devs-role

命令输出:

Added new context arn:aws:eks:eu-west-1:293759796572:cluster/prod-eks-cluster to /var/root/.kube/config

尝试列出群集作用域资源,您将收到“禁止”错误消息:

$ kubectl get nodes
Error from server (Forbidden): nodes is forbidden: User "developer" cannot list resource "nodes" in API group "" at the cluster scope

但是您应该能够列出名称空间作用域资源:

$ kubectl get all -n prod
No resources found in prod namespace.

$ kubectl get all -n uat
No resources found in prod namespace.

$ kubectl get all -n dev
No resources found in prod namespace.

部署测试应用程序:

$ kubectl run nginx-example --image=nginx --replicas=2  -n dev
deployment.apps/nginx-example created

$ kubectl get pods -n dev
NAME                             READY   STATUS    RESTARTS   AGE
nginx-example-79c476f965-jqm6f   1/1     Running   0          29s
nginx-example-79c476f965-lkzll   1/1     Running   0          29s

$ kubectl delete deploy nginx-example -n dev
deployment.apps "nginx-example" deleted

在由Amazon EKS支持的Kubernetes上享受开发的乐趣。下面是一些可以在Kubernetes和微服务上尝试的视频课程。


Kubernetes为绝对初学者动手

Kubernetes为绝对初学者-动手

★★★★★
(17069)

$ 15.39

$ 153.93

有现货

立即购买

向开发人员授予对EKS Kubernetes集群的访问权限Udemy.com


Docker和Kubernetes:完整指南

Docker和Kubernetes:完整指南

★★★★★
(31054)

$ 17.76

$ 118.41

有现货

立即购买

向开发人员授予对EKS Kubernetes集群的访问权限Udemy.com


认证的Kubernetes管理员(CKA)与实践测试

认证的Kubernetes管理员(CKA)与实践测试

★★★★★
(14798)

$ 15.39

$ 153.93

有现货

立即购买

向开发人员授予对EKS Kubernetes集群的访问权限Udemy.com


学习DevOps:完整的Kubernetes课程

学习DevOps:完整的Kubernetes课程

★★★★☆
(11249)

$ 17.76

$ 47.36

有现货

立即购买

向开发人员授予对EKS Kubernetes集群的访问权限Udemy.com


Kubernetes认证的具有测试功能的应用程序开发人员(CKAD)

Kubernetes认证的应用程序开发人员(CKAD)与测试

★★★★★
(6970)

$ 15.39

$ 153.93

有现货

立即购买

向开发人员授予对EKS Kubernetes集群的访问权限Udemy.com

这是续集。
您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南

这是续集。
这是续集。
这是续集。

这是续集。

这是续集。

这是续集。
这是续集。


这是续集。

这是续集。
这是续集。

Sidebar