GKEなどRBACが有効なKubernetes環境でHelmを利用するには、アクセス権限の設定が必要です。本記事ではRBACが有効なKubenetes環境でHelmを利用する方法を紹介します。
はじめに
KubernetesのRBACとは、Role-based access controlのことです。ユーザに与えられたロールをもとに、アクセスできるリソースやネットワークを規定します。GKEなどではデフォルトでRBACが有効になっています。このため、権限のないユーザでHelmサーバ(Tiller)をインストールした場合、Chartのインストールでの権限が不足し、以下のようなエラーが発生します。
RBACに基づいた権限を設定するために、ServiceAccountとClusterRoleBindingを利用した設定を紹介します。
RBACの認証設定
確認環境
本記事では以下のKubernetesのバージョンで動作確認を行っています。サーバは記事執筆時点のGKEのデフォルトバージョンです。
マニフェストファイルを作る
ServiceAccountとClusterRoleBindingのマニフェストファイルを作成します。ClusterRoleとしてデフォルトで用意されている'cluster-admin'の権限を与えています。
マニフェストファイルはGitHubでも公開してるので、参照をしてください。
https://github.com/easydoggie/EasyDoggie/tree/master/serviceaccount
マニフェストファイルを適用する
作成したマニフェストファイルをkubectl apply
コマンドでKubernetes上に適用します。はじめに現在のコンテキストがHelmインストール先であるか、確認をしておきましょう。
現在のコンテキストが正しければ、マニフェストファイルを適用します。
Kubernetes上に反映されたか、確認をしてみましょう。
反映されたようです。これでHelm用のRBAC設定ができました。Helmサーバ(Tiller)のインストールに進みます。
Helmサーバ(Tiller)をインストールする
Helmクライアントのインストールは事前に完了させておいてください。Helmクライアントのインストール方法は別の記事で紹介をしているので、参考にしてください。
Helmサーバ(Tiller)のインストールにはhelm init
コマンドを利用します。オプションなしでもTillerのインストールはできますが、helm install
などのコマンドを実行したときに、権限不足でエラーが発生します。Helmに必要な権限を有効にするために、helm init
でTillerをインストールするときに—service-account
オプションで事前に作成したRBAC用のHelmアカウントを指定します。
helm version
コマンドでサーバにアクセスできるか確認をしておきましょう。
ここまで問題がなければ、helm install
コマンドでHelmチャートのインストールも問題なく実行できます。
おわりに
本記事ではRBACが有効な環境でHelmを使う方法を紹介しました。どのシステムでもアクセス権や認証は必要な項目です。しかし設計や設定があいまいだと、本番と開発環境のアクセス権限の違いで、障害を引き起こしてしまう場合もあります。普段からシステムやユーザの権限を意識し、環境間の差異はなくしていきたいものです。コンテナは環境間の差異をなくす一つの手段でもありますので、積極的に活用していきたいですね。
投稿者プロフィール
最新の投稿
AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
セキュリティ2021年7月14日ゼロデイ攻撃とは
セキュリティ2021年7月14日マルウェアとは
WAF2021年7月13日クロスサイトスクリプティングとは?