garutilorenzo.ansible-role-linux-kubernetes
高可用Kubernetesクラスターのインストールと設定
このAnsibleロールは、高可用性のKubernetesクラスターをインストールして設定します。このリポジトリは、kubeadmを使用してKubernetesのインストールプロセスを自動化します。
このリポジトリは、Ansibleを使用してKubernetesクラスターをインストールおよび設定する方法の一例です。本番環境で使用する場合は、Kubesprayを使用してください。
必要条件
Ansible、ipaddr、およびnetaddrをインストールします:
pip install -r requirements.txt
GitHubからロールをダウンロード:
ansible-galaxy install git+https://github.com/garutilorenzo/ansible-role-linux-kubernetes.git
ロール変数
このロールは次の変数を受け付けます:
変数 | 必須 | デフォルト | 説明 |
---|---|---|---|
kubernetes_subnet |
はい | 192.168.25.0/24 |
Kubernetesをデプロイするサブネットです。VMまたはベアメタルサーバーに複数のインターフェイスがある場合、Ansibleはインターフェイスサブネットに基づいてKubernetesで使用されるインターフェイスをフィルタリングします。 |
disable_firewall |
いいえ | no |
yes に設定すると、Ansibleはファイアウォールを無効にします。 |
kubernetes_version |
いいえ | 1.25.0 |
インストールするKubernetesのバージョン |
kubernetes_cri |
いいえ | containerd |
インストールするKubernetesのCRIです。 |
kubernetes_cni |
いいえ | flannel |
インストールするKubernetesのCNIです。 |
kubernetes_dns_domain |
いいえ | cluster.local |
KubernetesのデフォルトDNSドメイン |
kubernetes_pod_subnet |
いいえ | 10.244.0.0/16 |
Kubernetesポッドのサブネット |
kubernetes_service_subnet |
いいえ | 10.96.0.0/12 |
Kubernetesサービスのサブネット |
kubernetes_api_port |
いいえ | 6443 |
kubeapiのリスンポート |
setup_vip |
いいえ | no |
kube-vipを使用してKubernetes VIPアドレスを設定します。 |
kubernetes_vip_ip |
いいえ | 192.168.25.225 |
setup_vip がyes に設定されている場合に必須です。制御プレーンのVIP IPアドレス |
kubevip_version |
いいえ | v0.4.3 |
kube-vipコンテナのバージョン |
install_longhorn |
いいえ | no |
Kubernetesのためのクラウドネイティブ分散ブロックストレージLonghornをインストールします。 |
longhorn_version |
いいえ | v1.3.1 |
Longhornのリリース。 |
install_nginx_ingress |
いいえ | no |
nginx ingress controllerをインストールします。 |
nginx_ingress_controller_version |
いいえ | controller-v1.3.0 |
nginx ingress controllerのバージョン |
nginx_ingress_controller_http_nodeport |
いいえ | 30080 |
nginx ingress controllerの受信HTTPトラフィックに使用されるNodePort |
nginx_ingress_controller_https_nodeport |
いいえ | 30443 |
nginx ingress controllerの受信HTTPSトラフィックに使用されるNodePort |
enable_nginx_ingress_proxy_protocol |
いいえ | no |
nginx ingress controllerのプロキシプロトコルモードを有効にします |
enable_nginx_real_ip |
いいえ | no |
nginx ingress controllerのreal-ipモジュールを有効にします |
nginx_ingress_real_ip_cidr |
いいえ | 0.0.0.0/0 |
enable_nginx_real_ip がyes に設定されている場合に必須です。real-ipモジュールで使用する信頼されたサブネット |
nginx_ingress_proxy_body_size |
いいえ | 20m |
nginx ingress controllerの最大プロキシボディサイズ |
sans_base |
いいえ | [list of values, see defaults/main.yml] |
kube-api証明書に署名するために使用されるIPアドレスまたはFQDNのリスト |
追加変数
このロールは追加変数kubernetes_init_hostを受け入れます。この変数は、クラスターが初めてブートストラップされるときに使用されます。この変数の値は、マスターノードの1つのホスト名でなければなりません。Ansibleが一致するホストで実行されると、Kubernetesが初期化されます。
デプロイされたクラスターリソース
このロールを使用すると、Nginx ingress controllerとLonghornがインストールされます。
Nginx ingress controller
Nginx ingress controllerは、Ingressコントローラーとして使用されます。
インストールはベアメタルインストールであり、IngressコントローラーはNodePortサービスを介して公開されます。NodePortサービスで公開されるポートをカスタマイズすることができ、ロール変数を使用してこれらの値を変更できます。
Longhorn
Longhornは、Kubernetes用の軽量で信頼性の高い強力な分散ブロックストレージシステムです。
Longhornは、コンテナとマイクロサービスを使用して分散ブロックストレージを実装します。Longhornは各ブロックデバイスボリュームに専用のストレージコントローラーを作成し、複数のノードに保存された複数のレプリカにわたってボリュームを同期的に複製します。ストレージコントローラーとレプリカは、Kubernetesを使用してオーケストレーションされます。
Vagrant
このロールをテストするには、VagrantとVirtualboxを使用して例のインフラストラクチャを構築できます。このリポジトリをダウンロードしたら、Vagrantを使用して仮想マシンを起動します:
vagrant up
Vagrantfileで、あなたのパブリックSSHキーをvagrantユーザーのauthorized_keysに直接挿入できます。Vagrantfile内のCHANGE_MEプレースホルダーを変更する必要があります。また、NNODES変数を変更することでデプロイされるVMの数を調整できます(デフォルトは6)。
このロールの使用方法
このロールを使用するには、examples/ディレクトリの例に従います。hosts.iniファイルをホストに合わせて調整し、プレイブックを実行します:
lorenzo@mint-virtual:~$ ansible-playbook -i hosts-ubuntu.ini site.yml -e kubernetes_init_host=k8s-ubuntu-0
(主なコマンドと出力部分の詳細は省略)
Kubernetesクラスターが高可用性モードでデプロイされました。クラスターのステータスを確認できます:
root@k8s-ubuntu-0:~# kubectl get nodes
クラスターのノードの情報が表示されます。
ポッドのステータスを確認できます:
root@k8s-ubuntu-0:~# kubectl get pods --all-namespaces
Nginx ingressコントローラーのサービスを確認でき、HTTPポートが30080、HTTPSポートが30443であることがわかります。外部マシンからingress controllerをテストできます:
lorenzo@mint-virtual:~$ curl -v http://192.168.25.110:30080
以上が、高可用性のKubernetesクラスターをインストール・設定するための手順です。
Install and configure a high available Kubernetes cluster
ansible-galaxy install garutilorenzo.ansible-role-linux-kubernetes