前回は、k8s構築ツールの1つとしてRancherを紹介しました。
今回はHelmについて紹介します。併せてYAML編集のためのツール(Visual Studio CodeのKubernetesプラグイン)も紹介していきます。
表:Kubernetesの3つのユースケース(第3回の再掲) |
Helm
「YAMLの壁」と呼ばれ、Kubernetesを構築する際に数々のyamlファイルを作成しなければならないことを指します。Webアプリケーションで言えば、StrutsやSpringフレームワークが流行した際に数々のxmlファイルを作成しなければならなかった「XML地獄」と状況が似ています。
HelmはKubernetesのパッケージマネージャです。パッケージマネージャと聞くと、MacのHomebrewやLinuxのapt・rpm・yumなどを連想する方もいらっしゃることでしょう。HelmにおけるパッケージとはKubernetesを構築する際必要なリソース群(PodやServiceなど)をChartとしてひとまとめにしたものです。
つまり、各種リソース群を個別にyamlファイルで構築するのではなく、ひとまとめにして構築できるようにします。
図:Helmの構成 |
早速、インストール方法を見てみましょう。Homebrewを使ってHelmクライアント(helmコマンド)をインストールします。インストールが終わったら、Helm Chartと呼ばれるパッケージのリポジトリをアップデートしておきます。
$brew install kubernetes-helm
~中略~
==> Downloading https://homebrew.bintray.com/bottles/kubernetes-helm-2.15.2.mojave.bottle.tar.gz
==> Downloading from
https://akamai.bintray.com/af/af96fbedc19ad56994180843cda30829ce14c83b556531b8089b9c5783531fe2?__gda__=ex
######################################################################## 100.0%
==> Pouring kubernetes-helm-2.15.2.mojave.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
/usr/local/Cellar/kubernetes-helm/2.15.2: 51 files, 85.1MB
$helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "rancher-server" chart repository
...Successfully got an update from the "bitnami" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
HelmはTillerを介して各種リソースを構築します。helm initによりインストールします。
$helm init
$HELM_HOME has been configured at /Users/yujishono/.helm.
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
リポジトリからインストールしたいHelm Chartを検索することができます。例えばJenkinsの場合以下の通りです。
$helm search jenkins
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/jenkins 3.4.9 2.190.2 The leading open source automation server
stable/jenkins 1.8.1 lts Open source continuous integration server. It supports mu...
Jenkinsをインストールする際に、Helm Chartに与える設定値を記載するためのYAMLをダウンロードします。
$wget https://raw.githubusercontent.com/helm/charts/master/stable/jenkins/values.yaml
helmコマンドを使ってJenkinsをインストールします。RESOURCES以下を見ると、PodやDeploymentなど必要なk8sリソースが作成されていることがわかります。
helm install stable/jenkins
NAME: quoting-rattlesnake
LAST DEPLOYED: Wed Nov 6 10:18:06 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
quoting-rattlesnake-jenkins 5 1s
quoting-rattlesnake-jenkins-tests 1 1s
==> v1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
quoting-rattlesnake-jenkins 0/1 1 0 1s
==> v1/PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
quoting-rattlesnake-jenkins Bound pvc-d1fbc912-975b-493c-8160-3623cab6012a 8Gi RWO standard 1s Filesystem
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
quoting-rattlesnake-jenkins-6f4c8db6c9-bkwtr 0/1 Pending 0 1s
==> v1/Role
NAME AGE
quoting-rattlesnake-jenkins-schedule-agents 1s
==> v1/RoleBinding
NAME AGE
quoting-rattlesnake-jenkins-schedule-agents 1s
==> v1/Secret
NAME TYPE DATA AGE
quoting-rattlesnake-jenkins Opaque 2 1s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
quoting-rattlesnake-jenkins LoadBalancer 10.101.223.221 <pending> 8080:31465/TCP 1s
quoting-rattlesnake-jenkins-agent ClusterIP 10.105.216.164 <none> 50000/TCP 1s
==> v1/ServiceAccount
NAME SECRETS AGE
quoting-rattlesnake-jenkins 1 1s
Visual Studio Code Kubernetes Tools
これまでの連載では、YAMLファイルの編集はviを中心に紹介してきましたが、Visual Studio Codeの拡張機能として、Visual Studio Code Kubernetes Toolsを紹介します。 [Code]-[Services]-[Extensions]から開いた画面において、下図の通り[kubernetes]で検索しインストールします。
図:Visual Studio Code |
以下の通り、[kind]や[image]といった予約語や、[hello1]や[helloworld]といった値がサジェストされますので、スペルミスなどが無くなり単純ミスによる手戻り防止につながります。
図:値のサジェスト |
まとめ
今回は、k8sを簡単に使いこなす手段としてHelmを紹介しました。また、Visual Studio Code Kubernetes Toolsを使ったYAML編集方法も紹介しました。
次回は、KubesprayなどRancher/Helm以外の構築ツールを紹介していきます。
著者紹介
正野 勇嗣 (SHONO Yuji ) - NTTデータ 課長
2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。
最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。2児のパパ。
"選択肢" - Google ニュース
February 25, 2020 at 07:00AM
https://ift.tt/2HUb8uQ
【連載】Kubernetes入門 [12] k8s構築ツールの選択肢「Helm」 - マイナビニュース
"選択肢" - Google ニュース
https://ift.tt/369mxRc
Shoes Man Tutorial
Pos News Update
Meme Update
Korean Entertainment News
Japan News Update
No comments:
Post a Comment