gpt4 book ai didi

amazon-web-services - 有没有办法防止 kubectl 注销 kubernetes 节点?

转载 作者:行者123 更新时间:2023-12-01 01:45:58 27 4
gpt4 key购买 nike

我正在测试一些命令,然后我跑了

$ kubectl delete nodes --all

它删除注销所有节点,包括主节点。现在我无法连接到集群(好吧,显然主被删除了)。

有没有办法防止这种情况,因为任何人都可能不小心这样做?

额外信息:我正在使用 KOps 进行部署。

附言它不会删除 EC2 实例,并且节点会在所有实例上重新启动 EC2 实例。

最佳答案

默认情况下,您使用 super 用户之类的东西,他可以对集群做任何他想做的事情。

要限制其他用户对集群的访问,您可以使用 RBAC授权。通过 RBAC 规则,您可以管理每个资源和操作的访问和限制。

简而言之,为此,您需要:

  • Kops 使用 --authorization RBAC 创建新集群或通过将“rbac”选项添加到集群配置的“授权”部分来修改现有的:
    authorization:
    rbac: {}
  • 现在,我们可以关注 that来自 Bitnami 的用于创建用户的指令。例如,让我们创建一个只能访问 office 的用户。命名空间,仅适用于少数操作。所以,我们需要先创建一个命名空间:
    kubectl create namespace office
  • 为新用户创建 key 和证书:
    openssl genrsa -out employee.key 2048openssl req -new -key employee.key -out employee.csr -subj "/CN=employee/O=bitnami"
  • 现在,使用您的 CA 授权 key (它在 PKI 下的 S3 存储桶中可用),我们需要批准新证书:
    openssl x509 -req -in employee.csr -CA CA_LOCATION/ca.crt -CAkey CA_LOCATION/ca.key -CAcreateserial -out employee.crt -days 500
  • 创建凭据:
    kubectl config set-credentials employee --client-certificate=/home/employee/.certs/employee.crt --client-key=/home/employee/.certs/employee.key
  • 设置正确的上下文:
    kubectl config set-context employee-context --cluster=YOUR_CLUSTER_NAME --namespace=office --user=employee
  • 新我们有一个用户无法访问任何东西。让我们创建一个具有有限访问权限的新角色,这里是角色的示例,它只能访问部署、副本集和 Pod 以创建、删除和修改它们,仅此而已。创建文件role-deployment-manager.yaml角色配置:
  • kind: Role
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
    namespace: office
    name: deployment-manager
    rules:
    - apiGroups: ["", "extensions", "apps"]
    resources: ["deployments", "replicasets", "pods"]
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  • 新建文件rolebinding-deployment-manager.yaml使用 Rolebinding,它将您的角色附加到用户:
  • kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
    name: deployment-manager-binding
    namespace: office
    subjects:
    - kind: User
    name: employee
    apiGroup: ""
    roleRef:
    kind: Role
    name: deployment-manager
    apiGroup: ""
  • 现在应用该配置:
  • kubectl create -f role-deployment-manager.yaml
    kubectl create -f rolebinding-deployment-manager.yaml

    因此,现在您有一个访问受限的用户,他无法破坏您的集群。

    关于amazon-web-services - 有没有办法防止 kubectl 注销 kubernetes 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49320942/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com