Helmのインストールと設定

Helmのインストールファイルは次のURLから取得できます:https://get.helm.sh/helm-v3.16.0-linux-amd64.tar.gz

サーバーにアップロードし、解凍します。

tar -xf helm-v3.16.0-linux-amd64.tar.gz cd linux-amd64 sudo mv helm /usr/local/bin/

Helmが正しくインストールされているか確認するには、次を実行します:

helm help

リポジトリを追加するには以下のように入力します:

helm repo add [リポジトリ名] [リポジトリアドレス]

Artifact Hub(主要な検索プラットフォーム)
URL: https://artifacthub.io/
説明: 伝統的なリポジトリではなく、グローバルな主要Helmリポジトリを集めた検索プラットフォームです。
用途: NginxやMySQLなどの目的アプリケーションのChartを直接検索し、対応するリポジトリアドレスを取得することができます。日常的に使用するための主要エントリポイントです。

よく使用されるリポジトリ:
Bitnami: https://charts.bitnami.com/bitnami
阿里云: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
Rancher: https://charts.rancher.io
ソフトウェアベンダーのリポジトリ:
Nginx 公式リポジトリ
URL: https://helm.nginx.com/stable
含まれる Chart: nginx-ingress(Ingressコントローラー)、nginx-service-meshなど。
MySQL 公式リポジトリ
URL: https://charts.bitnami.com/bitnami(Bitnami維持、MySQL公式推奨)
含まれる Chart: mysql、mariadb、perconaなどのデータベース関連アプリケーション。
Prometheus(モニタリング)公式リポジトリ
URL: https://prometheus-community.github.io/helm-charts
含まれる Chart: prometheus、grafana、alertmanagerなどのモニタリングコンポーネントで、モニタリングシステム構築の核心リポジトリです。
Elasticsearch(ログ/検索)リポジトリ
URL: https://helm.elastic.co
含まれる Chart: elasticsearch、kibana、logstashなどのELK/ELASTIC Stackコンポーネント。

Bitnamiリポジトリを追加する例:

helm repo add bitnami https://charts.bitnami.com/bitnami

追加したリポジトリを表示します。

helm repo list

MySQLのインストールには以下の手順を使用します:

helm search repo mysql helm install my-db bitnami/mysql --version 9.4.0 --namespace my-app

NAME: my-db
LAST DEPLOYED: Wed Oct 15 16:42:55 2025
NAMESPACE: my-app
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 9.4.0
APP VERSION: 8.0.30

** Please be patient while the chart is being deployed **

Tip:

  Watch the deployment status using the command: kubectl get pods -w --namespace my-app

Services:

  echo Primary: my-db.my-app.svc.cluster.local:3306

Execute the following to get the administrator credentials:

  echo Username: root
  MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace my-app my-db -o jsonpath="{.data.mysql-root-password}" | base64 -d)

To connect to your database:

  1. Run a pod that you can use as a client:

      kubectl run my-db-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mysql:8.0.30-debian-11-r27 --namespace my-app --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

  2. To connect to primary service (read/write):

      mysql -h my-db.my-app.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

MySQLのrootパスワードを取得するには以下を使用します:

kubectl get secret --namespace default my-db -o jsonpath="{.data.mysql-root-password}" | base64 -d

インストールされたMySQLを確認するには以下を実行します:

helm list --namespace my-app

PersistentVolumeを作成します。Kubernetesのインストール後にPVを作成していない場合、MySQLのインストール時にエラーが発生することがあります。

# pv-sample.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: sample-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard
  volumeMode: Filesystem
  hostPath:
    path: /mnt/data

PersistentVolumeを作成します:

kubectl apply -f pv-sample.yaml kubectl get pv

MySQLインストール時に作成されたPVCを修正します:

kubectl edit pvc data-my-db-0 -n my-app

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
  creationTimestamp: "2025-10-15T08:42:55Z"
  finalizers:
  - kubernetes.io/pvc-protection
  labels:
    app.kubernetes.io/component: primary
    app.kubernetes.io/instance: my-db
    app.kubernetes.io/name: mysql
  name: data-my-db-0
  namespace: my-app
  resourceVersion: "14465"
  uid: 8b3f03f4-a0a6-4db8-8ae8-d49e1972aaed
spec:
  accessModes:
  - ReadWriteOnce

  resources:
    requests:
      storage: 8Gi
  storageClassName: standard
  volumeMode: Filesystem
  volumeName: sample-pv
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Gi
  phase: Bound

変更後の状態を確認します:

kubectl get pvc -n my-app

タグ: Helm Kubernetes PersistentVolume MySQL

6月6日 00:20 投稿