概要
helm は k8s で使えるパッケージマネージです
k8s 上にコンテナをデプロイするのを支援してくれます
apt や yum と同じ感覚で k8s にコンテナをデプロイできます
今回はインストールから実際に helm を使ってコンテナをデプロイするところまでやってみました
環境
- macOS 10.14.5
- minikube 1.10.0
- helm 2.14.0
インストール
Mac であれば homebrew でインストールできます
brew install kubernetes-helm
初期化
ホームディレクトリ配下に .helm
ディレクトリを作成します
必要な情報はこの配下に保存されていきます
helm init --history-max 200
パッケージ (charts) の一覧確認
パッケージは charts
と呼ばれる単位で管理されています
インストール可能な charts
の一覧を表示します
helm search
helm search redis
charts (redis) のインストール
今回は redis の charts をインストール (デプロイ) してみましょう
helm install stable/mysql
charts の確認
インストールが完了したら一覧を確認してみましょう
helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
invincible-lobster 1 Mon Jun 3 15:09:41 2019 DEPLOYED redis-8.0.5 5.0.5 default
helm ls
でも同じ情報が確認できます
charts の詳細確認
helm status
コマンドを使ってインストールした charts
の詳細を確認できます
helm status invincible-lobster
LAST DEPLOYED: Mon Jun 3 15:09:41 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
invincible-lobster-redis 3 4m34s
invincible-lobster-redis-health 3 4m34s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
invincible-lobster-redis-master-0 1/1 Running 0 4m34s
invincible-lobster-redis-slave-0 1/1 Running 0 4m34s
invincible-lobster-redis-slave-1 1/1 Running 0 3m51s
==> v1/Secret
NAME TYPE DATA AGE
invincible-lobster-redis Opaque 1 4m34s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
invincible-lobster-redis-headless ClusterIP None <none> 6379/TCP 4m34s
invincible-lobster-redis-master ClusterIP 10.96.98.68 <none> 6379/TCP 4m34s
invincible-lobster-redis-slave ClusterIP 10.99.138.160 <none> 6379/TCP 4m34s
==> v1beta2/StatefulSet
NAME READY AGE
invincible-lobster-redis-master 1/1 4m34s
invincible-lobster-redis-slave 2/2 4m34s
NOTES:
** Please be patient while the chart is being deployed **
Redis can be accessed via port 6379 on the following DNS names from within your cluster:
invincible-lobster-redis-master.default.svc.cluster.local for read/write operations
invincible-lobster-redis-slave.default.svc.cluster.local for read-only operations
To get your password run:
export REDIS_PASSWORD=$(kubectl get secret --namespace default invincible-lobster-redis -o jsonpath="{.data.redis-password}" | base64 --decode)
To connect to your Redis server:
1. Run a Redis pod that you can use as a client:
kubectl run --namespace default invincible-lobster-redis-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis:5.0.5-debian-9-r14 -- bash
2. Connect using the Redis CLI:
redis-cli -h invincible-lobster-redis-master -a $REDIS_PASSWORD
redis-cli -h invincible-lobster-redis-slave -a $REDIS_PASSWORD
To connect to your database from outside the cluster execute the following commands:
kubectl port-forward --namespace default svc/invincible-lobster-redis 6379:6379 &
redis-cli -h 127.0.0.1 -p 6379 -a $REDIS_PASSWORD
はじめに k8s に展開された各種リソースの情報が表示れます
そのあとで redis-server へのアクセス方法が表示されます
helm でインストールした場合パスワードが設定されているようです
またデフォルトだとホストからのアクセスはできないようです
実際にアクセスする
port-forward
を使ってホストからアクセスできるようにします
port-forward
はフォアグラウンドで動作するので別のターミナルを開きます
kubectl port-forward --namespace default svc/invincible-lobster-redis-master 6379:6379
パスワードを変数に設定し、redis-cli
で接続できれば OK です
export REDIS_PASSWORD=$(kubectl get secret --namespace default invincible-lobster-redis -o jsonpath="{.data.redis-password}" | base64 --decode)
redis-cli -a $REDIS_PASSWORD
この他にもアクセス用の Pod を作ったり別の type NodePort
の Service を新規で作ってアクセスしても良いと思います
charts 削除
helm delete invincible-lobster
ConfigMap, Pod, Secret, Service, StatefulSet がすべて削除されます
おまけ: charts から YAML ファイルの定義を取得する
charts
の詳細を確認したい場合に使います
helm fetch stable/redis
redis-8.0.5.tgz
という圧縮ファイルが取得できます
helm template redis-8.0.5.tgz
とすると標準出力に圧縮ファイル内にある k8s 用の各リソースが定義された YAML ファイルの内容が表示されます
これを使って直接 kubectl を使ってインストールした charts
を制御することもできます
最後に
helm に入門してみました
charts と呼ばれるパッケージをインストールするだけで k8s 上に必要なリソースをデプロイできるので複雑な k8s の仕組みがわからなくても簡単に使えると思います
ただ charts の設定通りにデプロイされてしまうので自分の好きなリソースを使ってデプロイしたり管理したい場合には template で YAML ファイルを確認してそれをカスタマイズする感じになると思います
0 件のコメント:
コメントを投稿