Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Helmの紹介 & 活用について考えた(Rancher Meetup Tokyo #14 LT資料)

Helmの紹介 & 活用について考えた(Rancher Meetup Tokyo #14 LT資料)

2018/08/22 Rancher Meetup Tokyo #14での藤原の講演資料となります。

Recruit Technologies

August 22, 2018
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. Helmの紹介 & 活用について考えた (Rancher Meetup Tokyo #14 LT資料) 1 (C)

    Recruit Technologies Co.,Ltd. All rights reserved. 株式会社リクルートテクノロジーズ ITエンジニアリング本部 サイトリライアビリティエンジニアリング部 インフラストラクチャエンジニアリングG 藤原涼馬
  2. 自己紹介 藤原 涼馬 株式会社リクルートテクノロジーズ ITE本部 SRE部 ISEG 経歴 2011-2015ユーザ系SIer にてR&D

    2016/1〜 リクルートテクノロジーズに入社 主な活動(社内外含む) • コンテナを中心とした先進アーキテクチャの事業への装着 • Rancher JPコアメンバー • 寄稿(@IT 先行事例に学ぶKubernetes 企業活用の現実) 趣味 勉強会で色々喋る 子供と遊ぶ 3 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  3. Helmとは • kubernetesのパッケージマネージャ • Debian系ディストリビューションのapt, RHEL系のyum のkubernets環境版のようなもの 5 (C) Recruit

    Technologies Co.,Ltd. All rights reserved. 公式ページ(https://helm.sh/) Githubリポジトリ(https://github.com/helm/helm)
  4. Helmの基本機能 1. リポジトリからのチャート取得とインストール – helm install/helm fetchなど 2. チャート間の依存関係の解決 3.

    独自チャート作成のための記法の提供 6 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  5. 1.リポジトリからのチャート取得とインストール • チャートのインストール • チャートの取得* 7 (C) Recruit Technologies Co.,Ltd.

    All rights reserved. helm install リポジトリ/チャート名 helm fetchリポジトリ/チャート名 * 主にREADME.mdの取得などに利用 apt install / yum install などとほぼ同じ upgrade機能も提供 自分でリポジトリを作ってチャートを 配布することもできる
  6. 動作の仕組み概要 HelmクライアントがKubernetesのAPIを直接叩くのでは なく、別途k8sクラスタに導入したTillerを介してクラスタ を操作する。 10 (C) Recruit Technologies Co.,Ltd. All

    rights reserved. Helmクライアント (helm) Tiller 操作リクエスト テンプレートをレンダリングして 生成されたk8sのリソースマニフェスト をTillerを介してクラスタに適用するイメージ ② ①
  7. Helmを軽く触ってみる (Helmそのもののインストール手順は割愛) • MariaDBチャートの導入 11 (C) Recruit Technologies Co.,Ltd. All

    rights reserved. $ helm search mariadb NAME CHART VERSION APP VERSION DESCRIPTION stable/mariadb 4.2.7 10.1.34 Fast, reliable, scalable, and easy to use open-... stable/phpmyadmin 0.1.7 4.8.2 phpMyAdmin is an mysql administration frontend $ helm install stable/mariadb --name demo -f env.yaml env.yaml env.yamlでチャート内のデフォルトの値・設定を変更
  8. 12 (C) Recruit Technologies Co.,Ltd. All rights reserved. $ kubectl

    get all NAME READY STATUS RESTARTS AGE pod/demo-mariadb-0 0/1 Running 0 19s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/demo-mariadb NodePort 10.43.103.122 <none> 30001:31809/TCP 19s service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 35d $ mysql -h 127.0.0.1 -P 31809 -u root –p Enter password: Welcome to the MySQL monitor. ~~~~中略~~~~ trademarks of their respective owners. Type 'help;' or '¥h' for help. Type '¥c' to clear the current input statement. mysql> exit; (※ 発表後追記) 資料末尾に追記事項あり
  9. 13 (C) Recruit Technologies Co.,Ltd. All rights reserved. $ kubectl

    get all NAME READY STATUS RESTARTS AGE pod/demo-mariadb-0 0/1 Running 0 19s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/demo-mariadb NodePort 10.43.103.122 <none> 30001:31809/TCP 19s service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 35d $ mysql -h 127.0.0.1 -P 31809 -u root –p Enter password: Welcome to the MySQL monitor. ~~~~中略~~~~ trademarks of their respective owners. Type 'help;' or '¥h' for help. Type '¥c' to clear the current input statement. mysql> exit; 少々面倒ながらも、MariaDBを 立ち上げることができた。 (aptやyumのようにコマンドを叩くだけでというわけにはいかない)
  10. Helmで独自チャートを作る このような形でファイルを作成することで独自のチャート を作成できる 15 (C) Recruit Technologies Co.,Ltd. All rights

    reserved. k8sのマニフェスト(templates/配下のファイル)に追加で 最低でも Chart.yaml, values.yamlを 作成する必要がある
  11. 独自チャートの適用イメージ 動作イメージ 16 (C) Recruit Technologies Co.,Ltd. All rights reserved.

    Values.yaml valueFile templates/配下のyaml レンダリングされた k8sのマニフェスト テンプレートに 値を適用して レンダリング レンダリング結果を tillerを介して適用 helm install . –f valueFile コマンド例
  12. • ローカルで作成したチャートの場合は でインストールできる • テンプテートのレンダリング結果(k8sのリソースマニフェスト) は以下で確認 17 (C) Recruit Technologies

    Co.,Ltd. All rights reserved. helm install./ * * Chart.yamlの配置されている ディレクトリ(前スライド参照)で実行 helm template ./
  13. まとめ(触ってみての感想) • チャート化要否の判断 • “必要な手数は間違いなく増える”のでチャート化するか否かはよ く考えた方が良い • ただし、他の環境で持っていく上での考慮事項などは明確化させ やすい点はメリット •

    標準のチャートはそのまま使うのは難しい • GKEなどであれば helm installのみで動作することが多そうだが、 ローカル・オンプレだと動作しないものが多い • helm fetchしてREADME.mdを確認してvalueFileを利用すること (helm install リポジトリ/チャート名 –f valueFile.yaml) • デフォルトままだと基本的に動かないと心得るくらいでちょうど良い かも 19 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  14. まとめ(Helmの活用) • Helmの利用がフィットしそうなものとしては以下が想 定できる 1. あちこちで共通に利用するもの 2. (adhocに)大量に環境を立ち上げるもの 20 (C)

    Recruit Technologies Co.,Ltd. All rights reserved. 例えば、 監視・モニタリング用のエージェント/CI・CDツール など 開発環境を10面用意する かつ上記環境の削除・追加・修正の頻度が多い場合 など
  15. 21 (C) Recruit Technologies Co.,Ltd. All rights reserved. 発表後追記内容 ※

    ここから先はLT後に追記した補足内容です ※
  16. MariaDBのチャートをひとまずローカルで動かす (1/3) 23 (C) Recruit Technologies Co.,Ltd. All rights reserved.

    $ git clone https://github.com/helm/charts.git $ cd stable/mariadb $ vim env.yaml env.yamlの中身 単純化の為に レプリケーション無効化 Persistentなストレージを 利用しない rootパスワードを指定 ServiceでNodePortを指定 TCP 30000番でアクセスで きるようにする 公式チャートをgit cloneする MariaDBのチャートディレクトリに移動 追加の設定用(Values.yaml上書き用)のファイルを作成
  17. MariaDBのチャートをひとまずローカルで動かす (2/3) 24 (C) Recruit Technologies Co.,Ltd. All rights reserved.

    $ helm install ./ -f env.yaml MariaDBのチャートをインストールする k8sのワーカーノードの TCP 30000番ポートで Listenしている
  18. MariaDBのチャートをひとまずローカルで動かす (3/3) 25 (C) Recruit Technologies Co.,Ltd. All rights reserved.

    $ helm install ./ -f env.yaml $ mysql -u root -p --host 127.0.0.1 -P 30000 MariaDBのチャートをインストールする 無事接続できた 最新(2018/8/28時点) のものではポート周りの 挙動は改善(=わかりやすくなって)されている