0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Helm ChartをWebUI(Kubeappsのカタログ)からインストールする

Last updated at Posted at 2023-04-25

k8s環境にOSSをインストールするのに、最近ではKubernetesパッケージ管理ツールであるHelmを使うことがデファクトになっている。
ただ、Helmは基本的にCLIで使うものであり、CLIのHelmの使い方なんて覚えたくないという人も多いだろう。そもそもCLIという時点で拒絶反応を起こす人もいるとかいないとか。
ここではHelmをCLIを使わずWebUIからインストール・管理する機能を提供するOSS、kubeappを簡単に紹介する。

Kubeapsとは

kubeappはHelmやTanzu PackageといったKubernetesのパッケージ管理ソフトウェアと連携して、WebUI上からパッケージの管理をするソフトウェアである。
以下のような感じでHelm Chartがカタログとして表示され、マウス操作でデプロイできてしまう。
image.png

特徴としては以下が公式ページに記載されている。

  • Kubernetesパッケージの管理とデプロイ(ロールバックやアップグレードも含む)
  • Namespaceや複数クラスタ対応
  • RBAC、OAuth2、OIDCへの対応

前提条件

'23/4/25時点では以下が前提条件となっている。

  • Kubernetes Cluster v1.21以上
  • Helm v3.2.0以上(設定やインストール用)
  • kubectl (設定やインストール用)

またオフィシャルで動作が確認されているのはAKS、GKE、kind、minikube、Docker for Desktopとのこと。
以前EKSで動かしたことがあるので、今回はあえて書いていないEKSで進める。

インストール

簡単に動かしたい人はGetting Startedを参照するとよい。
ここではIngressを使ってサービス公開する。
一旦HelmのRepositoryを追加し、values.yamlを抜き出す。

helm repo add bitnami https://charts.bitnami.com/bitnami
kubectl create namespace kubeapps
helm inspect values bitnami/kubeapps > ./kubeapps-helm-values.yaml

values.yamlを修正する。最初にingressを有効化しホスト名を設定する。

ingress:
   enabled: true
   hostname: kubeapps.app.hogeeee.info

EKSでALB ingressコントローラを使う場合、pathに*を含む必要があるため、pathを修正する。

ingress:
  path: /*

annotationにACMのARNを追加する。必要であれば許可IPなども書いておく。

ingress:
  annotations:
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-1:xxxxxx:certificate/ec88392c-0cda-477c-a232-8799d284c288
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/inbound-cidrs: 239.116.130.41/32

TLSを有効化する。extraTlsの項目が必須のようなので、こちらもあわせて設定する。

ingress:
  tls: true
  extraTls:
  - hosts:
    - kubeapps.app.hogeeee.info

IngressClassを設定する。分からない人はkubectl get ingressclassで確認すること。

ingress:
  ingressClassName: "alb"

またALB ingressコントローラはServiceのtypeでNodePortを指定する必要があるため、Serviceの該当箇所を書き換える(ClusterIPで検索するとよい)

frontend:
  service:
    type: NodePort

なお、現時点でサポートされているパッケージは

  • Helm
  • Carvel (Tanzu Package)
  • Flux
    の3種類であり、packaging:の箇所で有効化するかどうか選択できる。デフォルトではHelmのみとなっているため、他のパッケージ管理ソフトウェアを使いたい人は設定変更が必要となる。
    今回は一旦Helmのみ確認するため、変更しない。

設定が終わったので、values.yamlを使ってインストールする。

helm install -f ./kubeapps-helm-values.yaml kubeapps -n kubeapps bitnami/kubeapps

インストール後、IngressのアドレスをDNSに追加する(ExternalDNS導入済みなら不要)。

動作確認

Ingressに設定したURLにアクセスすると、以下の画面が表示される。
1682419593114.png

ここのTokenはServiceAccountのTokenを入力する。
アクセス用Tokenを取得するために、ServiceAccountを作成する。

kubectl create sa kubeapps-operator -n default
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator

Kubernetes v1.24以降の人はServiceAccontを作っても自動でTokenが生成されなくなっているので、Tokenを手動で作成する。

kubectl create token -n default kubeapps-operator

v1.23以前の人はSecretからTokenを取得する。

kubectl get -n default secret kubeapps-operator-token -o jsonpath={.data.token} | base64 -d

取得したTokenでログインする。
ログイン直後の画面は以下のようになる。
1682420095050.png

試しにWordPressをデプロイしてみる。右上のDEPLOYをクリックし、WordPressを選択する。
WordPressの説明画面が出てくる。スクロールするとHelmのvaluesの説明も表示される。
更にDEPLOYボタンを押すと、設定画面が表示される。

1682420308325.png

Nameのところは必須であり、任意の名前を入力する。
パラメータに関しては修正不要のHelm Chartであれば特にいじらずデプロイ出来る。
今回は試しにwordpressBlogNameだけMy kubeapps testと変更してみた。
画面の下にあるDEPLOY 16.0.0をクリックする。
しばらくすると画面が遷移し、以下のようにデプロイが始まったことが確認できる。

1682420486318.png

デプロイ完了後、アクセスしてみるとそれっぽいものが表示される。設定変更したところも確認できた。

1682420736910.png

リポジトリの追加

リポジトリの追加もWebUIから可能。右上の四角をクリックすると、Package Repositoriesと表示される。

image.png

これをクリックし、右上のADD PACKAGE REPOSITORYを選択し、試しにGitLab(https://charts.gitlab.io/)を追加してみる。

image.png

Nameは分かりやすいものを、DescriptionはUI上のインフォのアイコンで表示される説明文となる。
INSTALL REPOSITORYで追加すると、CatalogのPackageRepositoryにgitlabが追加される。

image.png

まとめ

ということで、kubeappsを使うとCLI操作なくHelmのパッケージをデプロイ出来ることが確認できた。
これでもうCLIが苦手な人も自由にパッケージがインストールできるだろう。多分。

おまけ

VMwareのTanzu Mission Controlという製品にはkubeappsに似た機能が備わっている。
image.png

商用サポートが欲しい場合はそちらを確認するとよい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?