Contents
概要
MetalLBをHelmでインストールします。また、Harborを使用します。
オペレーション
Helmチャートリポジトリの追加
k8sクラスタ上ではなくJumpboxから操作しています。Jumpboxにはkubectlとhelm3がインストールされており、対象Clusterのクレデンシャルが登録されています。
まずはインターネット上の公式リポジトリを登録します。
[root@centos ~]# helm repo add metallb https://metallb.github.io/metallb [root@centos ~]# helm repo list NAME URL metallb https://metallb.github.io/metallb [root@centos ~]# helm repo update
Helmチャートのダウンロード
下記を実行すると、metallb-0.12.1.tgzがダウンロードされます。これがHelmチャートとなるので。Harborにアップロードしておきます。
[root@centos ~]# helm search repo metallb NAME CHART VERSION APP VERSION DESCRIPTION metallb/metallb 0.12.1 v0.12.1 A network load-balancer implementation for Kube... [root@centos ~]# helm pull metallb/metallb
Harborのリポジトリを登録しておきます。
[root@centos ~]# helm repo add harbor-library https://harbor.si1230.com/chartrepo/library [root@centos ~]# helm repo list NAME URL harbor-library https://harbor.si1230.com/chartrepo/library [root@centos ~]# helm repo update
デフォルト値の確認
下記を実施するとローカルにvalues.yaml.defaultが保存されます。このファイルには設定可能な値のデフォルト値が記載されています。
[root@centos ~]# helm show values metallb/metallb > values.yaml.default
values.yaml.defaultの内容を確認すると、controllerとspeakerとfrrの3つのイメージが必要なことが分かります。
controller: enabled: true # -- Controller log level. Must be one of: `all`, `debug`, `info`, `warn`, `error` or `none` logLevel: info image: repository: quay.io/metallb/controller tag: speaker: enabled: true # -- Speaker log level. Must be one of: `all`, `debug`, `info`, `warn`, `error` or `none` logLevel: info tolerateMaster: true memberlist: enabled: true mlBindPort: 7946 image: repository: quay.io/metallb/speaker tag: frr: enabled: false # FRR_LOGGING_LEVEL used to set logging level for all running frr processes. # Possible settings are :- # informational, warning, errors and debugging. logLevel: informational image: repository: quay.io/frrouting/frr tag: stable_7.5 pullPolicy:
この2つのイメージをPull/Pushします。
[root@centos ~]# podman pull quay.io/metallb/controller [root@centos ~]# podman pull quay.io/metallb/speaker [root@centos ~]# podman pull quay.io/frrouting/frr [root@centos ~]# podman images metallb REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/metallb/speaker latest fa5c65d90309 4 years ago 39.2 MB quay.io/metallb/controller latest 54263933da63 4 years ago 38.9 MB [root@centos ~]# podman images frrouting REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/frrouting/frr latest 4982aa93d368 25 hours ago 160 MB [root@centos ~]# podman tag fa5c65d90309 harbor.si1230.com/library/metallb/speaker:latest [root@centos ~]# podman tag 54263933da63 harbor.si1230.com/library/metallb/controller:latest [root@centos ~]# podman tag 4982aa93d368 harbor.si1230.com/library/frrouting/frr:latest [root@centos ~]# podman images metallb REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/metallb/speaker latest fa5c65d90309 4 years ago 39.2 MB harbor.si1230.com/library/metallb/speaker latest fa5c65d90309 4 years ago 39.2 MB quay.io/metallb/controller latest 54263933da63 4 years ago 38.9 MB harbor.si1230.com/library/metallb/controller latest 54263933da63 4 years ago 38.9 MB [root@centos ~]# podman images frrouting REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/frrouting/frr latest 4982aa93d368 25 hours ago 160 MB harbor.si1230.com/library/frrouting/frr latest 4982aa93d368 25 hours ago 160 MB [root@centos ~]# podman push harbor.si1230.com/library/metallb/speaker:latest [root@centos ~]# podman push harbor.si1230.com/library/metallb/controller:latest [root@centos ~]# podman push harbor.si1230.com/library/frrouting/frr:latest
values.yamlを作成します。
[root@centos ~]# cp values.yaml.default values.yaml [root@centos ~]# vim values.yaml controller: enabled: true # -- Controller log level. Must be one of: `all`, `debug`, `info`, `warn`, `error` or `none` logLevel: info image: repository: harbor.si1230.com/library/metallb/controller tag: speaker: enabled: true # -- Speaker log level. Must be one of: `all`, `debug`, `info`, `warn`, `error` or `none` logLevel: info tolerateMaster: true memberlist: enabled: true mlBindPort: 7946 image: repository: harbor.si1230.com/library/metallb/speaker tag: frr: enabled: false # FRR_LOGGING_LEVEL used to set logging level for all running frr processes. # Possible settings are :- # informational, warning, errors and debugging. logLevel: informational image: repository:harbor.si1230.com/library/frrouting/frr tag: stable_7.5 pullPolicy: configInline: address-pools: - name: default protocol: layer2 addresses: - 192.168.68.100-192.168.68.109
デフォルトのリポジトリを削除します。
[root@centos ~]# helm repo remove metallb [root@centos ~]# helm repo list
インストールします。
[root@centos ~]# helm install metallb harbor-library/metallb -f values.yaml
Helmのインストール
公式サイトを参考にHelmをインストールします。Kubernetes clusterのオペレーションは基本的にMaster nodeで実施する為、最低限Master nodeにHelmがあれば十分です。
root@k8s-01:~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 root@k8s-01:~# chmod 700 get_helm.sh root@k8s-01:~# ./get_helm.sh
Helmの操作
Helmの利用には、まず、必要なリポジトリを追加し、その中から必要なパッケージを指定してインストールします。
公開されているChartの確認
root@k8s-01:~# helm search hub root@k8s-01:~# helm search hub [search_string]
リポジトリの追加と確認
root@k8s-01:~# helm repo add [repository_name] [repository_url] root@k8s-01:~# helm repo list
リポジトリの更新
root@k8s-01:~# helm repo update
Chartのダウンロード
Chartは.tgzで公開されています。pullと同時に展開した状態でpullするには、–untarを付けます。
root@k8s-01:~# helm pull [chart_name] root@k8s-01:~# helm pull [chart_name] --untar
Chartのインストール
helm install時に、デフォルト値から環境に合わせて変更が必要となる場合、-fオプションで編集した設定ファイルを指定するか、追加の引数で設定値を指定します。
root@k8s-01:~# helm install [name] -n [namespace] [chart_name] root@k8s-01:~# helm install [name] -n [namespace] -f [config_file] [chart_name]