LoginSignup
1
0

More than 3 years have passed since last update.

ServiceAccount を作成し、Pod から `kubectl get pods` をやってみた時のメモ

Posted at

ServiceAccount を作成し、Pod から kubectl get pods をやってみた時のメモ。
検証のため、マニュフェスト作成はせず、コマンドでベースで確認した。

やってみる

環境

$kubectl version
Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.11-eks-af3caf", GitCommit:"af3caf6136cd355f467083651cc1010a499f59b1", GitTreeState:"clean", BuildDate:"2020-03-27T21:51:36Z", GoVersion:"go1.12.17", Compiler:"gc", Platform:"linux/amd64"}

サービスアカウントの作成

kubectl create serviceaccountコマンドで実行

$kubectl create serviceaccount sample-service-account

Role の作成

ただ、この状態では何も権限がないので Pod を確認するための Role を作る。
今回は検証なので以下を参考に kubectl create コマンドで作る

kubectl create role

$kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods

RoleBinding の作成

次に上記ロールと作成したサービスアカウントを紐付けるために RoleBinding を作成する。
以下と kubectl create rolebinding --helpを参考に実行。

kubectl create rolebinding

$kubectl create rolebinding default-view \
  --role=pod-reader \
  --serviceaccount=default:sample-service-account

確認

Pod を作って検証する
kubectl run--serviceaccount も指定できるのでこれでやってみる。
イメージは kubectl が既にインストールされいる以下のイメージを使う

lachlanevenson/k8s-kubectl

$kubectl run -i kubectl --image=lachlanevenson/k8s-kubectl --serviceaccount=sample-service-account --generator=run-pod/v1 --rm --restart=Never --command -- kubectl get pods
NAME                                READY   STATUS              RESTARTS   AGE
kubectl                             0/1     ContainerCreating   0          4s
(以下略)

無事 Pod の情報が取得できる事を確認。
念の為、--serviceaccount を指定しない場合、失敗することも確認する。

$kubectl run -i kubectl --image=lachlanevenson/k8s-kubectl --generator=run-pod/v1 --rm --restart=Never --command -- kubectl get pods
If you don't see a command prompt, try pressing enter.
Error attaching, falling back to logs: unable to upgrade connection: container kubectl not found in pod kubectl_default
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:default:default" cannot list resource "pods" in API group "" in the namespace "default"
pod "kubectl" deleted
pod default/kubectl terminated (Error)

サービスアカウントを指定しない場合でも default というサービスアカウントが設定されているようだが、この場合、権限がないのでエラーになる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0