AnsibleではじめるRook/Ceph with TopoLVM

はじめに

TopoLVMをCSIに用いてRook/CephをK8sクラスタの構築から全自動で行うAnsible-Playbookを作成したので,簡単な使い方などを紹介していきたいと思います.

本PlayBookではHAProxyとKeepalivedを用いてマルチMaster構成のK8sクラスタが自動構築された後,Rook/Cephが自動起動するものです.

使い方

以下のGitHubリポジトリでPlaybookを公開しています.

github.com

最新の使い方などはGitHubリポジトリのドキュメントに記載されています.この記事は参考程度にし,GitHubリポジトリのドキュメントを必ず読んでから使用してください.

動作環境

使用する上で動作を確認した環境を記載します. メモリ量やCPUコア数は各自の環境に合わせて設定してください また,クライアントはMacOS搭載のマシンを使用しました sshの公開鍵認証の設定もansibleで行うため,sshpassが必要です. 事前にクライアントマシンにインストールしておいてください.

  • 必須条件

    • 全てのVMでネットワーク疎通性がある必要があります.(local hostはNG)
    • 全てのVMssh serverが起動しているが必要があります.(公開鍵認証の設定は必要ありません.
    • K8s Worker VM1つあたりOSドライブ以外で20GB以上のデバイスが3つ以上必要です.

以下の構成で動作検証を行いました. 参考にしてください.

K8s Master VM K8s Worker VM
VM台数 3 6
メモリ容量 6GB 12GB
CPUコア数 4 vcpu 4 vcpu
OS Ubuntu Serever 18.04 Ubuntu Serever 18.04
OSドライブ以外のVM毎のデバイス 0 3
OSドライブ以外の一つのデバイス容量 x 20GB

構築手順

  • 以下三つの情報が必要です.
    1. 全てのVMで共通のsudoパスワード(=VM_SUDO_PASS)
    2. VMipアドレス
    3. ssh configファイル(=SSH_CONF_PATH)
    4. sshで利用する公開鍵(=SSH_KEY_PATH)
    5. kube-api-serverで使用するVIP(=KUBE_VIP)

準備できたら以下のコマンドを実行します.

$ ./create.sh $SSH_CONF_PATH $SSH_KEY_PATH $VM_SUDO_PASS $KUBE_VIP
New Vault password: 
Confirm New Vault password: 
Encryption successful
SSH password: 
Vault password: 

vmのsudoパスワードはansible-vaultで暗号化されるようになっています. 暗号化に使用するパスワードを入力してください.

また,$SSH_CONF_PATHと$SSH_KEY_PATHは絶対パスである必要があります. KUBE_VIPは未使用のIPアドレスを指定してください.

cephfsとrbdを構築できるようになっているので,rbdを構築したい場合は以下のように「rbd」オプションをつけてください.

$ ./create.sh $SSH_CONF_PATH $SSH_KEY_PATH $VM_SUDO_PASS $KUBE_VIP rbd

削除

$ ansible-playbook -i hosts delete-cluster.yaml

おわりに

GitHubリポジトリのドキュメントには3台のVMで実行する方法も記載していますので,ちゃれんじしてみてください. 検証などで使用できれば幸いです.