RBACの権利K8Sクラスタ管理

RBACが有効になっている、あなたはapiserverに追加する必要が--authorizationモード= RBACパラメータクラスタのkubeadmインストールを使用している場合は、1.6以上のバージョンは、デフォルトRBACで有効になって
開くかどうかを確認するために:
$のCATの/ etc / Kubernetes /マニフェスト/ KUBE-apiserver .yaml

spec:
  containers:
  - command:
    - kube-apiserver
    - --advertise-address=192.168.1.243
    - --allow-privileged=true
    - --authorization-mode=Node,RBAC

Kubernetesは非常に基本的な機能は、そのすべてのリソースオブジェクトはCRUD(、、、アップデートを読むを作成し実行することを許可されているいる削除) 操作を(つまり、私たちはしばしば、追加、削除、変更、動作を確認言う)
とRBAC関連のリソースオブジェクトは、 :
1、ルール:ルール、ルールは、APIグループの異なるリソースに設定されたグループに属する操作のセットである
2、役割及びClusterRole:役割と、上記二つのオブジェクトルール要素を含むクラスタの役割、それらの間の差であります役割には、ルールの定義は、単一の名前空間に適用され、名前空間が関連付けられており、ClusterRoleしたがって、定義の名前空間のクラスタ全体の制約を支配されていません。
3、件名:テーマ、クラスタ内で動作するように対応するオブジェクトの試み、クラスタがテーマのリソースの3種類の定義:
ユーザーアカウント:これは、外部の独立したサービスの管理であるが、内部ユーザーのためのリソースは、クラスタが関連していない管理ユーザーがいない内部クラスタAPIを介して管理することができるオブジェクト、ので、
グループを:これは複数のアカウントを関連付けるために使用され、そのようなADMIN-クラスタとしてデフォルトで作成されたグループがあるクラスタの一部の
サービスアカウントは:Kubernetes APIによっては、一部のユーザーアカウントを管理します、名前空間協会、クラスタ内で実行するためのアプリケーションとは、あなたは、APIの認証局完了する必要が
RoleBindingとClusterRoleBindingは:4を
ユーザーに従うことを条件と私たちの役割結合プロセスの声明(単にですRoleBindingだけ下の現在のリソース操作権限の名前空間に影響を与えるだろう、とClusterRoleBindingはすべての名前空間に影響を与えます:バインディングを操作するためのアクセス許可)、2つの違いは、スコープの間の差があります。

のみアクセスKUBE-システムの名前空間ができ、ユーザアカウントの作成
1は、秘密鍵の作成
$をOpenSSLのgenrsa -out dongyali.key 2048
2、証明書署名要求ファイルを作成
CNユーザー名を作成することを、Oグループを作成するために
penssl -newアウトdongyali.csr -key dongyali.keyのREQの-subj「/ = dongyali CN / O =ブースター」
。3、最終的な証明書ファイルを生成するためには、証明書1000日間有効で提供
必須ca.crt二ca.keyあなたはkubeadmクラスタのインストールを使用している場合は、証明書の要求を承認するためのファイルは、2つのファイルは、以下の/ etc / kubernetes / PKI /ディレクトリに配置されている
$ opensslのX509 -req -in dongyali.csr -CA /など/ kubernetes / PKI / CA -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out dongyali.crt .CRT -days 1000年
$ LS
dongyali.csr dongyali.key dongyali.crt
4、クラスタ内に作成した証明書ファイルと秘密鍵ファイルを使用してdongyaliユーザーを作成
$ CONFIG kubectl SET-資格情報dongyali --client鍵証明書= dongyali.crt --client = dongyali.key
ユーザーのコンテキストを作成するために、5。、および限られたスペースのKUBE-システム
SET-config設定コンテキストはkubectl $ dongyali-コンテキスト= --cluster = Kubernetes --namespace --user = dongyali KUBE-システム
。6、ユーザーdongyaliはのための役割を作成
展開を可能にし、ユーザの操作を作成し、ポッド、ReplicaSetsの役割

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: dongyali-role
  namespace: kube-system
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["deployments", "replicasets", "pods"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]     # 也可以使用['*']

7は、ユーザーとロールを結合、結合ロールを作成dongyali

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dongyali-rolebinding
  namespace: kube-system
subjects:
- kind: User
  name: dongyali
  apiGroup: ""
roleRef:
  kind: Role
  name: dongyali-role
  apiGroup: ""

8、测试
$ kubectl GETポッド--context = dongyali-コンテキスト
$ kubectl --context = dongyali-コンテキストGETポッド--namespace =デフォルト
のサーバー(紫禁城)からのエラー:ポッドが禁止されている:ユーザーが"dongyali"でポッドを一覧表示することはできません名前空間「デフォルト」

名前空間を作成のみServiceAccountのいずれかにアクセスすることができます
1を、ServiceAccountターゲット作成
Kube- -n SA dongyali-システムSAを作成します$のkubectlを
2、ロールを作成

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: dongyali-sa-role
  namespace: kube-system
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

3. RoleBindingオブジェクトを作成します。

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dongyali-sa-rolebinding
  namespace: kube-system
subjects:
- kind: ServiceAccount
  name: dongyali-sa
  namespace: kube-system
roleRef:
  kind: Role
  name: dongyali-sa-role
  apiGroup: rbac.authorization.k8s.io

名前空間を作成ServiceAccountのすべてにアクセスすることができ
、両方のリソースオブジェクトClusterRoleとClusterRoleBindingを必要とする
1、新しいターゲットServiceAcount

apiVersion: v1
kind: ServiceAccount
metadata:
  name: dongyali-sa2
  namespace: kube-system

2、ClusterRoleBindingオブジェクトを作成し
、新しいものを作成することなく、既存のクラスタ役割クラスタ管理者を使用して

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dongyali-sa2-clusterrolebinding
subjects:
- kind: ServiceAccount
  name: dongyali-sa2
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

おすすめ

転載: blog.51cto.com/dongdong/2433885