今回はGitLab上で設定できるKubernetesダッシュボードを紹介します。
背景
以前GitLabとKubernetesとを接続する方法としてGitLab agent for Kubernetesを紹介しました。GitLabはこのほかにもKubernetesと連携した機能を提供しており、その一つにダッシュボードがあります。このダッシュボードでは、GitLab agentをインストールしたクラスターのPod / Serviceなどのリソースの状態を表示します。これにより、GitLab上でKubernetesマニフェストファイルやコンテナイメージを管理しつつ、Kubernetes上のリソースの状態を監視することで、CI/CDによるリソース更新後の状態やトラブル発生時の調査を、シームレスに実現できます。
GitLabでKubernetesダッシュボードを利用するには、いくつかの条件があります。
- GitLab agent for Kubernetesをインストールしていること
user_access
(後述)を使ってProject / Groupからアクセス可能であること
検証
Kubernetesダッシュボードを検証するため、事前にGitLab Project / Amazon EKSクラスターを用意しておきます。
[cloudshell-user@ip-10-134-18-67 ~]$ kubectl version Client Version: v1.30.0-eks-036c24b Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.29.7-eks-2f46c53 [cloudshell-user@ip-10-134-18-67 ~]$ kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system aws-node-bt7tt 2/2 Running 0 41m kube-system aws-node-hn46z 2/2 Running 0 42m kube-system coredns-676bf68468-wfjlc 1/1 Running 0 44m kube-system coredns-676bf68468-xbmwr 1/1 Running 0 44m kube-system kube-proxy-ccdnn 1/1 Running 0 42m kube-system kube-proxy-p87kh 1/1 Running 0 41m
GitLabからKubernetesへのアクセス設定 / Agentインストール
次にこのProjectからKubernetesにアクセスするための設定を行います。ここでは .gitlab/agents/<Agent名>/config.yaml
というファイルに user_access
キーワードを使ってアクセス権限の定義を記載します。
この config.yaml
を定義しておくと、Kubernetes agent登録時の候補に <Agent名>
で設定した名称のAgentが候補として表示され、それを指定すると、設定したアクセス権限を使用するAgentを登録できます。
ここでは以下のような config.yaml
を用意し、Projectの .gitlab/agents/<Agent名>/
に配置します。
user_access: access_as: agent: {} projects: - id: fy0323/eks-test
上記ファイルを作成後、Kubernetes agentの登録を行います。
登録後は表示されたコマンドを使ってKubernetesにAgentをインストールします。
Kubernetesダッシュボードの作成
次にKubernetesダッシュボードを作成します。KubernetesダッシュボードはGitLab Environmentの機能として提供されているので、まずは新規Environmentを作成します。
Environment作成時にインストールしたAgentを指定します。
なおAgentを設定した場合、ダッシュボードに表示するKubernetes Namespaceを選択できます (あとから修正可能です) 。
Environmentが作成されると、以下のようにKubernetes Podなどの情報が表示されます。
ダッシュボードの操作
次にダッシュボード上でできる操作を紹介します。
ダッシュボード上ではPod / Serviceリソースの表示をタブで切り替えられます。
Podリソースにある View logs
を選択すると、各Podのログを表示できます。
各Podのメニューには Delete pod
という項目があり、これを選択するとPodを削除できます。ここではDeploymentで管理されたNginx Podを削除することで、新規Nginx Podが立ち上がることを確認しました。
最後に各Podの名前を選択すると、そのPodの詳細情報 ( kubectl describe pod
相当の情報) を確認できます。個人的にはPodのstatus
とspec
を分けて表示できるのが嬉しいところです。