はじめに
Kubernetes のサービスアカウント (Service Account) は、Kubernetes クラスタ内で実行されるアプリケーションの ID とアクセス制御を管理する上で重要なコンポーネントです。このチュートリアルでは、Kubernetes のサービスアカウント (Service Account) の理解、サービスアカウントを使用した Kubernetes ダッシュボードの設定、およびダッシュボードに必要なアクセス許可を付与する方法を説明します。
Kubernetes のサービスアカウント (Service Account) は、Kubernetes クラスタ内で実行されるアプリケーションの ID とアクセス制御を管理する上で重要なコンポーネントです。このチュートリアルでは、Kubernetes のサービスアカウント (Service Account) の理解、サービスアカウントを使用した Kubernetes ダッシュボードの設定、およびダッシュボードに必要なアクセス許可を付与する方法を説明します。
Kubernetes のサービスアカウント (Service Account) は、Kubernetes クラスタ内で実行されるアプリケーションの ID とアクセス制御を管理する上で重要なコンポーネントです。これらは、ポッドが Kubernetes API サーバーとのやり取りを認証および承認する方法を提供し、安全な通信とリソースへのアクセスを可能にします。
Kubernetes のサービスアカウント (Service Account) はポッドに関連付けられ、それらのポッド内で実行されるプロセスに ID を提供します。これらは、ポッドと Kubernetes API サーバーとのやり取りを認証および承認するために使用されます。Kubernetes クラスタ内の各ネームスペースにはデフォルトのサービスアカウントがあり、特定のアプリケーション要件を満たすためにカスタムのサービスアカウントを作成することもできます。
Kubernetes のサービスアカウント (Service Account) はいくつかの重要な目的を果たします。
Kubernetes のサービスアカウント (Service Account) を設定するには、次の手順に従うことができます。
kubectl create serviceaccount コマンドを使用して新しいサービスアカウントを作成できます。たとえば、"default" ネームスペースに "my-app-sa" という名前のサービスアカウントを作成するには、次のコマンドを実行します。kubectl create serviceaccount my-app-sa -n default
spec.serviceAccountName フィールドで行います。apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
serviceAccountName: my-app-sa
containers:
- name: my-app
image: my-app:v1
Role または ClusterRole を作成し、RoleBinding または ClusterRoleBinding を使用してサービスアカウントにバインドすることができます。必要な具体的なアクセス許可は、アプリケーションが Kubernetes クラスタ内で実行する必要があるアクションによって異なります。
Kubernetes ダッシュボードは、Kubernetes クラスタを管理できる強力なウェブベースの UI です。ダッシュボードをセキュアにし、それへのアクセスを制御するには、Kubernetes のサービスアカウント (Service Account) を使用するように設定できます。
kubectl create serviceaccount dashboard-sa -n kubernetes-dashboard
kubectl get serviceaccounts -n kubernetes-dashboard
ClusterRoleBinding を作成します。kubectl create clusterrolebinding dashboard-sa-cluster-admin-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-sa
これにより、kubernetes-dashboard ネームスペース内の dashboard-sa サービスアカウントに cluster-admin という ClusterRole がバインドされ、クラスタに対する完全な管理アクセス権が付与されます。
dashboard-sa サービスアカウントを使用するようにします。kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard
spec.template.spec.serviceAccountName フィールドを dashboard-sa に更新します。
kubectl delete pod -n kubernetes-dashboard -l app.kubernetes.io/name=kubernetes-dashboard
これで、Kubernetes ダッシュボードは dashboard-sa サービスアカウントを使用して Kubernetes API サーバーとやり取りし、クラスタのリソースへの安全なアクセスが提供されます。
Kubernetes ダッシュボードに必要なアクセス許可を付与するには、Kubernetes のロールベースアクセス制御 (Role-Based Access Control, RBAC) を使用して、適切なロールとアクセス許可を定義して割り当てることができます。
Kubernetes RBAC は、Kubernetes リソースへのアクセスを制御する強力なメカニズムです。特定のアクセス許可を持つロールを定義し、それらのロールをユーザー、グループ、またはサービスアカウントに割り当てることができます。
主な RBAC コンポーネントは次のとおりです。
Kubernetes ダッシュボードに必要なアクセス許可を付与するには、クラスターロール (ClusterRole) とクラスターロールバインディング (ClusterRoleBinding) を作成することができます。
kubectl create clusterrole dashboard-cluster-role --resource=deployments,pods,services,secrets,configmaps,jobs,cronjobs --verb=get,list,watch,create,update,delete
このクラスターロール (ClusterRole) は、指定された Kubernetes リソースに対する読み取り、書き込み、および削除のアクセス許可を付与します。
kubectl create clusterrolebinding dashboard-cluster-role-binding --clusterrole=dashboard-cluster-role --serviceaccount=kubernetes-dashboard:dashboard-sa
これにより、kubernetes-dashboard ネームスペース内の dashboard-sa サービスアカウントに dashboard-cluster-role クラスターロール (ClusterRole) がバインドされます。
これで、Kubernetes ダッシュボードは Kubernetes クラスタ内のリソースにアクセスして管理するために必要なアクセス許可を持つようになります。
このチュートリアルでは、Kubernetes のサービスアカウント (Service Account) とその重要性、および設定方法について学びました。また、サービスアカウント (Service Account) を使用して Kubernetes ダッシュボードを設定し、ダッシュボードに必要なアクセス許可を付与する方法も学びました。Kubernetes のサービスアカウント (Service Account) を理解し、適切に設定することで、Kubernetes クラスタ内で安全な通信と細かいアクセス制御を確保することができます。