githubixx.kubernetes_controller
ansible-role-kubernetes-controller
このロールは、Kubernetes the not so hard way with Ansible - Control planeで使用されます。Kubernetes APIサーバー、スケジューラー、コントローラーマネージャーをインストールします。このロールの詳細については、こちらをご覧ください。
バージョン
すべてのリリースにはタグを付け、セマンティックバージョン管理に従っています。このロールを使用したい場合は、最新のタグをチェックアウトすることをお勧めします。マスターブランチは基本的に開発用で、タグは安定したリリースを示します。タグ23.0.0+1.28.5
は、これはこのロールのリリース23.0.0
で、Kubernetesバージョン1.28.5
との互換性があることを意味します(もちろんK8s 1.27.xのリリースにも対応しています)。ロール自体が変更されると、X.Y.Z
の部分が+
の前で増加します。Kubernetesのバージョンが変更されると、X.Y.Z
が+
の後で増加します。これは、ロールのバグ修正や新しいメジャーバージョンをタグ付けしながら、特定のKubernetesリリース用に開発を続けることを可能にします。特に、破壊的変更を伴うKubernetesのメジャーリリースに役立ちます。
要件
このロールを使用するには、すでにKubernetes APIサーバー用の証明書を作成している必要があります(詳細はこちらをご覧ください)。ロールは、k8s_ctl_ca_conf_directory
(デフォルトではgithubixx.kubernetes_ca
ロールで使用されるk8s_ca_conf_directory
と同じ)から証明書をコピーして、宛先ホストに配置します。また、例えばWireGuardを使用して完全メッシュのVPNを設定する必要があります(詳細はこちら)。もちろん、etcdクラスターも必要です(詳細はこちら)。WireGuard VPNメッシュは必須ではありませんが、K8sホスト間のすべてのトラフィックがデフォルトで暗号化されるため、安全性が向上します。ただし、すべてのホストが相互に通信可能なインターフェースを持っていれば問題ありません。
対応OS
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 22.04 (Jammy Jellyfish)
変更履歴
変更履歴:
完全なCHANGELOG.mdを参照してください。
重要: 22.0.0+1.27.8
より前のリリースからアップグレードする場合は、CHANGELOG.mdを注意深くお読みください!バージョン22.0.0+1.27.8
には多くの破壊的変更が含まれています!
最近の変更:
24.0.0+1.29.4
- 更新
k8s_release
を1.29.4
に更新
インストール
GitHubから直接ダウンロードします(クローンする前にAnsibleロールのディレクトリに移動してください。ロールのパスは
ansible-config dump | grep DEFAULT_ROLES_PATH
コマンドで調べられます):git clone https://github.com/githubixx/ansible-role-kubernetes-controller.git githubixx.kubernetes_controller
ansible-galaxy
コマンドを使用して、Ansible Galaxyから直接ダウンロードします:ansible-galaxy install role githubixx.kubernetes_controller
次の内容で
requirements.yml
ファイルを作成し、次のコマンドでインストールします(必要に応じてversion
を変更してください):
---
roles:
- name: githubixx.kubernetes_controller
src: https://github.com/githubixx/ansible-role-kubernetes-controller.git
version: 24.0.1+1.29.4
デフォルトのロール変数
# Kubernetes設定および証明書ファイルの基本ディレクトリ
k8s_ctl_conf_dir: "/etc/kubernetes/controller"
# すべての証明書ファイルがここに保存されます。
k8s_ctl_pki_dir: "{{ k8s_ctl_conf_dir }}/pki"
# Kubernetesバイナリを保存するディレクトリ
k8s_ctl_bin_dir: "/usr/local/bin"
# Kubernetesリリースバージョン
k8s_ctl_release: "1.29.4"
# Kubernetesサービスがリッスンするインターフェース名
k8s_interface: "eth0"
# Kubernetesコントロールプレーンサービスを実行するユーザー
k8s_run_as_user: "k8s"
# Kubernetesデーモンを実行するグループ
k8s_run_as_group: "k8s"
# Kubernetesクラスターとの通信に使用されるホスト
k8s_ctl_delegate_to: "127.0.0.1"
# Kubernetes APIエンドポイントのIPアドレスまたはホスト名
k8s_ctl_api_endpoint_host: "{% set controller_host = groups['k8s_controller'][0] %}{{ hostvars[controller_host]['ansible_' + hostvars[controller_host]['k8s_interface']].ipv4.address }}"
# Kubernetes APIサーバーがリッスンするポート
k8s_ctl_api_endpoint_port: "6443"
# Kubernetesのコントロールプレーン構成用のディレクトリ
k8s_ctl_conf_dir: "{{ k8s_ctl_conf_dir }}/kube-controller-manager"
# これ以降の設定も続きます...
例
- hosts: k8s_controller
roles:
- githubixx.kubernetes_controller
テスト
このロールには、Molecule、libvirt(vagrant-libvirt)、およびQEMU/KVMを使用して作成された小さなテストセットアップがあります。テスト設定はこちら。
テストの実行は次のコマンドで行います:
molecule converge
その後、クリーンアップは次のコマンドで行います:
molecule destroy
ライセンス
GNU一般公衆ライセンス バージョン3
著者情報
Installs the Kubernetes API server, scheduler and controller manager.
ansible-galaxy install githubixx.kubernetes_controller