Helmチャートを介してサービスをデプロイすると、tiller
serviceaccountがServiceMonitor
リソースを作成することが許可されなかったため、インストールが失敗しました。
注意:
ServiceMonitor
は、ポッドで実行中のコンテナーのメトリックを自動的に取得するためにPrometheusオペレーターによって定義されたCRDです。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リソースを作成する方法
たくさんのことを試して宇宙全体でグーグル検索した後、私はようやく見つかりました 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:
- '*'