TECHSTEP

ITインフラ関連の記事を公開してます。

GitLabのDashboard for Kubernetesを利用する

今回はGitLab上で設定できるKubernetesダッシュボードを紹介します。

docs.gitlab.com

背景

以前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 キーワードを使ってアクセス権限の定義を記載します。

docs.gitlab.com

この 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のstatusspecを分けて表示できるのが嬉しいところです。