このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2023年2月28日火曜日

やってみよう自動化ツール Ansible その5 タイプLBのSVCを使えるようにMetalLBを自動で展開してみよう

えー、残念ながらコントロールプレーンへワーカーの追加を自動で行うのはうまくいきませんでした。
できないときはすっぱりあきらめて次に進みましょう。
というわけで今回は、お手製k8sでは使えないLBの役割を満たしてくれるMetalLBの構築をやっていきましょう。

その前に、前回のままだとコントロールプレーンで以下のコマンドを実施し、接続用の情報を出力しましょう。
kubeadm token create --print-join-command
このコマンドの出力をワーカーで実行してクラスターへ追加します。

コントロールプレーンへワーカー追加後は、以下のコマンドでCNI(今回はflannnel)を追加しましょう。
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

ではMetalLBの作業を自動化するにあたってMetalLBのインストール作業を確認します。
作業する端末はansibleを実行するサーバに変更してください。

公式
https://metallb.universe.tf/installation/

手順的には、以下のコマンドでインストール
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-frr.yaml

IPアドレスのレンジ等を決めるには、以下のような構成ファイルをyamlで作成してこちらも apply する。
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2advertisement
  namespace: metallb-system
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: ipaddresspool
  namespace: metallb-system
spec:
  addresses:
  - xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx ★環境に合わせてレンジを設定してください。
手順的にはこれだけなのでひとまとめにしてしまいたいですが、k8sを作ってはMetaLBを設定するという作業はあり得るのでこちらもrolesで呼び出せるようにしておきましょう。
※新環境を作る際にはIPアドレスのレンジを変更しておくことを忘れないでください。

と、いうわけなんですが、kubectlを実行するのはansibleを実行する端末ではありません。
コマンド自体は ansible を実行する際に shell を利用してコマンドを実行すればいいのですが、構成ファイルの方はコントロールプレーンへ送る必要があります。
kubectl を ansible実行端末で使えるようにするという手もありますが、今回のシリーズは ansible を使っていくことを目的としているのでなるべく ansible で頑張ろうと思います。

というわけで、手順的には以下の順になります。
構成ファイルは MetalLB_conf.yaml として作成し、ansible 実行時のカレントディレクトリに作成します。

1. ファイルをコントロールプレーンへ送る
2. 構成ファイルを apply する
3. MetalLB を apply する

roles/MetalLB/tasks/main.yaml への記述内容としては以下になります。
- name: Config File Copy
  copy:
    src: MetalLB_conf.yaml
    dest: /root/MetalLB_conf.yaml

- name: Config apply
  shell : kubectl apply -f /root/MetalLB_conf.yaml

- name: MetalLB apply
  shell : kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-frr.yaml

そしてこれを呼び出す k8s-add.yaml を以下のように作成します。

- name: k8s add
  hosts: kubectl
  remote_user: root

  tasks:
    - name: setup
      include_role:
        name: MetalLB
今回は単品となりますが、この yaml に今回のように必要に応じて追加する機能への処理を足していくことで、k8s 構築後の作業が楽になるはずです。
準備ができたら以下のコマンドで処理を実行してみましょう。

ansible-playbook k8s-add.yaml

エラーにならなければ問題なく成功していると思いますが、確認したい場合はLBタイプのServiceを適当に作成して『EXTERNAL-IP』からLBに与えた範囲からIPアドレスが払い出されているか確認してください。
次は nfs-client の構築を自動化したいと思います。

2023年2月19日日曜日

【VyOS】コンテナを試してみた

久しぶりにVyOSのDocsを眺めていたら、コンテナが動くようになっていたのですね。

VyOS Configuration Guide » Container
https://docs.vyos.io/en/equuleus/configuration/container/index.html


簡単に試してみました。

利用したVyOSのイメージは以下となります。

Version: VyOS 1.4-rolling-202302150317 


今回は、Zabbix-applianceのイメージを利用します。

Zabbixアプライアンスのコンテナイメージ:zabbix/zabbix-appliance

参考:VMware Photon OSでお手軽Zabbix検証環境構築
https://techblog-cidept.blogspot.com/2022/03/vmware-photon-oszabbix.html 

※本誌で試したときのZabbix-applianceのコンテナイメージはZabbixバージョン4.4.6でした。 

 

VyOSの設定手順は以下の通りです。

  1. VyOSにコンテナイメージをダウンロード
  2. コンテナを利用するための設定を追加
 ※前提:利用するVyOSからインターネットへ通信できること


1. VyOSにコンテナイメージをダウンロード
Operational Mode($~)より以下のコマンドでVyOSにコンテナイメージをダウンロードします。
add container image zabbix/zabbix-appliance


2. コンテナを利用するための設定を追加

Configuration Mode(#~)より以下のコマンドでVyOSにコンテナの設定を追加します。

set container name zabbix-appliance allow-host-networks

set container name zabbix-appliance image 'zabbix/zabbix-appliance'

set container name zabbix-appliance port 80 destination '80'

set container name zabbix-appliance port 80 protocol 'tcp'

set container name zabbix-appliance port 80 source '80'

最後にcommitします。 


実際に動作しているか確認してみましょう。

まず、VyOSのインターフェースアドレスを確認します。

192.168.115.129が設定されています。


VyOSのインターフェースアドレスへWebアクセスします。

Zabbixが起動しており、ログインできることを確認します。


簡単な確認ですが、VyOSでコンテナを動作することができました。

コンテナを利用して何をしようか、、、

それでは。

【VyOS】ログイン時の2要素認証を試してみた


VyOSのサイトを久しぶりに眺めていたら、Google Authenticatorなどで利用されている「TOTP(時間ベースのワンタイム パスワード)」による2要素認証が利用できるようになったというアップデート情報を見つけました。


VyOS Project November 2022 Update

https://blog.vyos.io/vyos-project-november-2022-update

Support for Two Factor Authentication for CLI access via Google Authenticator

https://vyos.dev/T874


どのように利用できるのか、簡単に試してみました。

試したときのイメージは以下になります。

Version: VyOS 1.4-rolling-202302150317


VyOS側の設定は、以下のコマンドを設定するだけです。

set system login user <user> authentication otp key <key>

set system login user <user> authentication otp rate_limit <rate_limit> 

set system login user <user> authentication otp rate_time <rate_time> 

set system login user <user> authentication otp window_size <window_size>


<注意点など>

・初めて試すときはログインできなくなっても困らない環境やアカウントで試してください 

 私は最初に試したときに確認コードが合わずログインできなくなりました

・keyに設定できる文字列はBase32かつ26文字以上が必須条件です。

・Base32はA~Z、2~7の文字列を利用します。(OやIは避けた方が良いかもしれません)


今回試したときは、以下のように設定しました。

set system login user vyos authentication otp key '234567abcdefg234567abcdefg'

set system login user vyos authentication otp rate_limit 3

set system login user vyos authentication otp rate_time 30

set system login user vyos authentication otp window_size 3


これでCommitすればVyOS側の設定は完了です。

今回の確認では、Google Authenticatorを利用します。

Google Authenticatorの設定は、以下となります。

  1. スマートフォンアプリのGoogle Authenticatorを起動
  2. 追加アイコンをタップ
  3. セットアップキーを入力
  4. 以下のパラメーターを設定
    • アカウント名:任意
    • キー:VyOSのotp keyに設定した文字列
    • キーの種類:時間ベース
  5. 追加をタップ

設定は以上です。

設定されたVyOSにログインしてみましょう。

SSHでVyOSにログインすると、パスワード認証を通過したあとに以下のように認証コードの入力が求められます。


Google Authenticatorアプリに表示される認証コードを入力してOKをクリックするとこのようにログインできます。

コンソールログインのときも同様に認証コードが必要になります。


ログイン時のセキュリティを強化したい場合には利用すると良いかもしれません。

それでは。