[Helm]GKEなどRBACが有効な環境でHelmを利用するには?

GKEなどRBACが有効なKubernetes環境でHelmを利用するには、アクセス権限の設定が必要です。本記事ではRBACが有効なKubenetes環境でHelmを利用する方法を紹介します。

はじめに

KubernetesのRBACとは、Role-based access controlのことです。ユーザに与えられたロールをもとに、アクセスできるリソースやネットワークを規定します。GKEなどではデフォルトでRBACが有効になっています。このため、権限のないユーザでHelmサーバ(Tiller)をインストールした場合、Chartのインストールでの権限が不足し、以下のようなエラーが発生します。

RBACに基づいた権限を設定するために、ServiceAccountClusterRoleBindingを利用した設定を紹介します。

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を使う方法を紹介しました。どのシステムでもアクセス権や認証は必要な項目です。しかし設計や設定があいまいだと、本番と開発環境のアクセス権限の違いで、障害を引き起こしてしまう場合もあります。普段からシステムやユーザの権限を意識し、環境間の差異はなくしていきたいものです。コンテナは環境間の差異をなくす一つの手段でもありますので、積極的に活用していきたいですね。

スカイアーチ ファンタジー研究室

スカイアーチ ファンタジー研究室

投稿者プロフィール

スカイブロガー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.