ImagePullSecretの割り当て
認証がかかったコンテナリポジトリに置かれたイメージを取得するためにImagePullSecretsを設定します。既存のサービスアカウントにImagePullSecretを設定する場合には、kubectl patch
コマンドを利用します。サービスアカウントの作成時にマニフェストに指定することもできます。
コンテナレジストリにアクセスするための認証情報でSecretを作成し、ServiceAccountのImagePullSecretに設定します。
# Secretの作成
kubectl create secret docker-registry regcred
--docker-server=
--docker-username=
--docker-password=
--docker-email=
# ServiceAccount (default) に imagePullSecretsの設定
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'
ServiceAccountへのRoleの割り当て
ServiceAccountにRoleを割り当てると、同じNamespaceにあるPodはそのロールに割り当てられている権限が行使できるようになります。myspace
というNamespaceにmyrobot
というServiceAccountを作成して、Podの一覧ができるロールを割り当ててみましょう。
下記のコマンドを実行してmyspace
というNamespaceにサービスアカウントを作成します。
kubectl apply -f - << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: myrobot
namespace: myspace
EOF
次に、Podのget, list, watchができるpod-reader
というロールを作成します。
kubectl apply -f - << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: myspace
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
EOF
最後に、myrobot
というサービスアカウントにpod-reader
ロールを割り当てます。
kubectl apply -f - << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: myspace
subjects:
- kind: ServiceAccount
name: myrobot
namespace: myspace
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
EOF
これでmyrobot
というServiceAccountのPodのlist/get/watchをする権限が割り当てられました。 kubectl auth can-i get pods --as system:serviceaccount:myspace:myrobot
コマンドで、割り当たっているかどうかをを確認することができます。