CyVerse-Ansible.ansible_k3s

CyVerse Ansible k3s

このロールは、k3sのスタンドアロンまたはクラスターを作成します。

要件

k3sとDockerを使用する場合、このロールはすでにDockerがインストールされているか、Dockerを提供するロールに依存します。

このロールはファイアウォール(ufw)を設定し、デフォルトでは、k3sクラスター内のすべてのノードが互いに通信できるようにします。

このロールはホストファイルに仮定をします。以下はk3s_masters、k3s_agents、およびk3s_clusterが定義されたインベントリファイルの例で、これは最小限の宣言です。

注意: 現時点では、1つのマスターのみがサポートされています。

.iniフォーマット

[k3s_masters]
  w.x.y.z

[k3s_agents]
  a.b.c.d
  e.f.g.h

[k3s_cluster:children]
  k3s_masters
  k3s_agents

yamlフォーマット

all:
  hosts:
    k1:
      ansible_host: w.x.y.z
      ansible_user: root
    k2:
      ansible_host: a.b.c.d
      ansible_user: root
    k3:
      ansible_host: e.f.g.h
      ansible_user: root
  children:
    k3s_masters:
      hosts:
        k1:
    k3s_agents:
      hosts:
        k2:
        k3:
    k3s_cluster:
      children:
        k3s_masters:
        k3s_agents:

ロール変数

以下の表は、オプションのansible変数と、未定義の場合のデフォルト値を示しています。

変数名 未定義の場合のデフォルト値 説明
K3S_DOCKER_ENABLE version_dependent Dockerエンジンを有効にします。OSバージョンがubuntu2204以降でない限り、デフォルトはtrueです。
K3S_GPU_ENABLE false NVIDIA GPUドライバを有効にします。
K3S_GPU_TIMESLICE_ENABLE false GPUが有効な場合、この設定でタイムスライスを有効にします。
K3S_GPU_TIMESLICE_NUM 2 デフォルトのタイムスライスは2です。K3S_GPU_TIMESLICE_ENABLEがtrueの場合。
K3S_NVIDIA_USE_GPU_OPERATOR true デフォルトはNVIDIAのGPUオペレーターを使用します(GPUが有効な場合)。
K3S_NVIDIA_GPU_OPERATOR_DRIVER false コンテナ内のドライバを使用します。 (https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.htmlを参照)
K3S_NVIDIA_GPU_OPERATOR_TOOLKIT false コンテナ内のツールキットを使用します。 (https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.htmlを参照)
K3S_TRAEFIK_ENABLE false Traefikイングレスを無効にします。
K3s_FLANNEL_BACKEND none 設定すると、--flannel-backend=に値を渡します。
K3S_CALICO_ENABLE false Calicoを有効にします(動作していません)。
K3S_CLUSTER_TOKEN none 設定すると、クラスターはこのトークンで初期化されます。ランダムで生成されたものではありません。
K3S_CLUSTER_CIDR none 設定すると、クラスターのCIDR(例: 192.168.0.0/16)。
K3S_VERSION none 設定すると、k3sのバージョンを設定しようとします。
K3S_IS_MULTINODE false trueの場合、マルチノード用にホストを準備するための追加設定を行います(IPフォワーディングなど)。
K3S_MASTER_INSTALL true マスターノードを再インストールします。
K3S_MASTER_IP none ansible_default_ipv4が間違った値を取得する場合、k3sマスターのIPを設定します。
K3S_MASTER_PORT 6443 マスターノードのポートです。
K3S_POSTGRESQL_ENABLE false PostgreSQLの使用を有効にします。
K3S_POSTGRESQL_INSTALL false 最初のk3sマスターにPostgreSQLをインストールします。K3S_POSTGRESQL_ENABLEがtrueである必要があります。
K3S_POSTGRESQL_HOST 127.0.0.1 k3sマスター設定からのPostgreSQLデータベースのホスト名またはIP設定。
K3S_POSTGRESQL_PORT 5432 PostgreSQLデータベースのポート。
K3S_POSTGRESQL_DB kubernetes PostgreSQLデータベース名。
K3S_POSTGRESQL_USER k3suser K3S_POSTGRESQL_DBのデータベースユーザー名。
K3S_POSTGRESQL_PASS randomly generated K3S_POSTGRESQL_USERがK3S_POSTGRESQL_DBにアクセスするためのパスワード。生成後、/opt/k3sに保存されます。
K3S_FIREWALL_MANAGE false このロールを通じてファイアウォール管理を有効にします。
K3S_FIREWALL_ADD_PORTS none 辞書の配列です(例のプレイブックを参照)。各要素にはport、rule、proto、srcが必要です。
K3S_REGISTRIES_MIRRORS none 定義されている場合、/etc/rancher/k3s/registries.yamlの「mirrors:」の下にすべてを配置します。含まれるyamlが「mirrors:」を持っていることを確認してください。

例のプレイブック

以下はサンプルのプレイブックです:

- hosts: k3s_cluster
  become: true
  roles:
    - k3s
  vars:
    K3S_FORCE_UNINSTALL: true
    K3S_POSTGRESQL_ENABLE: true
    K3S_POSTGRESQL_INSTALL: true
    K3S_FIREWALL_ADD_PORTS:
      - port: "8888"
        rule: "allow"
        proto: "tcp"
        src:   "1.2.3.0/24"
      - port: "443"
        rule: "deny"
        proto: "tcp"
        src:   "any"

著者情報

エドウィン・スキッドモア (edwin@cyverse.org)

プロジェクトについて

This role will install a single or multi-cluster k3s, with the option of installing with postgresql. At this time, this is not suppose to be a comprehensive k3s, but rather a role sufficient for CyVerse's needs

インストール
ansible-galaxy install CyVerse-Ansible.ansible_k3s
ライセンス
other
ダウンロード
2.2k