web-dev-qa-db-ja.com

Kubernetesはserviceaccountの権限を確認します

Helmチャートを介してサービスをデプロイすると、tiller serviceaccountがServiceMonitorリソースを作成することが許可されなかったため、インストールが失敗しました。

注意:

  • ServiceMonitorは、ポッドで実行中のコンテナーのメトリックを自動的に取得するためにPrometheusオペレーターによって定義されたCRDです。
  • Helm Tillerは単一の名前空間にインストールされ、RBACはRoleおよびRoleBindingを使用してセットアップされています。

tiller serviceaccountの権限を確認したいのですが。
kubectlにはauth can-iコマンド、これらのようなクエリ(下記参照)は常にnoを返します。

  • kubectl auth can-i list deployment --as=tiller
  • kubectl auth can-i list deployment --as=staging:tiller

サービスアカウントの権限を確認する適切な方法は何ですか?
tillerアカウントを有効にしてServiceMonitorリソースを作成する方法

18
Joost den Boer

たくさんのことを試して宇宙全体でグーグル検索した後、私はようやく見つかりました RBACとPSPを使用したクラスターの保護に関するこのブログ投稿 ここで、サービスアカウントのアクセスを確認する方法の例を示します。

正しいコマンドは次のとおりです。
kubectl auth can-i <verb> <resource> --as=system:serviceaccount:<namespace>:<serviceaccountname> [-n <namespace>]

tillerアカウントにServiceMonitorオブジェクトを作成する権限があるかどうかを確認するには:
kubectl auth can-i create servicemonitor --as=system:serviceaccount:staging:tiller -n staging

注:tillerアカウントの問題を解決するには、monitoring.coreos.com apiGroupのservicemonitorsリソースに権限を追加する必要がありました。その変更後、上記のコマンドはyesを(最終的に)返し、Helm Chartのインストールは成功しました。

更新されたtiller-managerの役割:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager
  labels:
    org: ipos
    app: tiller
  annotations:
    description: "Role to give Tiller appropriate access in namespace"
    ref: "https://docs.helm.sh/using_helm/#example-deploy-tiller-in-a-namespace-restricted-to-deploying-resources-only-in-that-namespace"
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups:
    - monitoring.coreos.com
  resources:
    - servicemonitors
  verbs:
    - '*'
24
Joost den Boer