istvano.microk8s
Ansibleロール: microk8s
最小・最簡単な純粋なプロダクションK8sであるmicrok8sをダウンロードしてインストールするためのロールです。
要件
- Ansible >= 2.7
- Linuxディストリビューション
- Debian系
- Ubuntu
- Xenial (16.04)
- Bionic (18.04)
- Focal (20.04)(未テスト)
- Jammy (22.04)(未テスト)
- Ubuntu
- Arch Linux(未テスト)
- Debian系
ライセンス
MIT
使い方
ロール変数
このロールで使用できるいくつかの変数をここに示します。完全なリストは[defaults/main.yml](defaults/main.yml)
で定義されています。
microk8s_version
: 使用するバージョン、デフォルトは1.27/stable
。microk8s_plugins
: 様々なプラグインを有効/無効にします。アドオンを有効にする際にはname:arg
として文字列が渡されます。microk8s_enable_HA
: 高可用性を有効/無効にします。microk8s_group_HA
: HAクラスターを形成するホストグループのメンバー。microk8s_group_WORKERS
: ワーカーノードのみとして機能するホストグループのメンバー(コントロールプレーンコンポーネントはここでは実行されません)。microk8s_csr_template
: 定義されている場合、証明書生成に使用されるカスタムCSRが使用されます。
基本プレイブック
- hosts: servers
roles:
- role: istvano.microk8s
vars:
microk8s_plugins:
dns: "1.1.1.1"
istio: true
ingress: true
注意: プラグインリストを上書きする際は、defaults/main.yml
からプラグインの全リストをコピー&ペーストすることをお勧めします。これは、いくつかのAnsibleタスクがそれらを参照しているため(例: helm3
)、デプロイメントが失敗する可能性があります。
カスタム証明書要求テンプレート
MicroK8sがクラスター証明書を生成する際に使用する証明書要求テンプレートをカスタマイズすることが役立つかもしれません。たとえば、追加のSANを証明書に追加することで、MicroK8sの証明書がクラスターの外部から(リバースプロキシ経由など)アクセスされたときに検証されることができます。
CSRテンプレートを生成するには、最初にテンプレートを使用せずにロールを実行し、その後/var/snap/microk8s/current/certs/csr.conf.template
のCSRをプレイブックのテンプレートディレクトリにコピーして編集し、microk8s_csr_template
変数を適切に設定して、プレイブックを再実行するのが最も簡単です。
ワーカーのみのノード追加(1.23+のみ)
microk8sクラスター内でワーカーのみとして機能する追加ノードを構成することが可能です。これは、ansibleホストグループmicrok8s_WORKERS
を構成することで実現できます(グループ名はmicrok8s_group_WORKERS
で設定可能)。ホストグループ内にリストされた各ホストは、基本的にmicrok8s join .... --worker
を実行します。詳細については、こちらを参照してください: microk8s-clustering。
テスト
MoleculeラッパーとシステムPythonを使用する
./moleculew lint
./moleculew create
./moleculew list
./moleculew check
./moleculew test
Python仮想環境を使用する
- 仮想環境を設定する
$ python3 -m venv venv
- 環境をアクティブにする
$ . venv/bin/activate
- LintとDockerオプションでMoleculeをインストールする
$ pip install 'molecule[lint,docker]'
- 必要に応じて最新のAnsibleパッケージをインストールする
$ pip install ansible
- テストコマンドを実行する:
molecule lint
molecule create
molecule list
molecule check
molecule test
ansible-galaxy install istvano.microk8s