anmoel.kubernetes

Ansibleロール: Kubernetes

パイプラインの状態 カバレッジレポート

はじめに

LinuxにKubernetesをインストールするためのAnsibleロールです。

要件

  • Docker; Dockerのインストールに推奨されるロール: geerlingguy.docker
  • HA用のロードバランサーまたはkeepalived; keepalivedインストールに推奨されるロール: evrardjp.keepalived

依存関係

  • Pythonライブラリ Docker

変数

共通

名前 デフォルト 説明
kubernetes_cluster_name "kubernetes" Kubernetesクラスター名
kubernetes_master_version "v1.13.2" Kubernetesマスターコンポーネントのバージョン
kubernetes_version_rhel_package '1.13.2' Red Hat用のkubectl、kubeadm、kubeletのバージョン
kubernetes_yum_arch x86_64 Red Hatのみ
kubernetes_apt_repo_url http://apt.kubernetes.io/ Debian用のKubernetesリポジトリ
kubernetes_apt_repo_pool kubernetes-xenial Debian用のKubernetesリポジトリプール
kubernetes_useHyperKubeImage "false" コントロールプレーンのDockerイメージをhyperkubeに変更するスイッチ
kubernetes_dns_type "CoreDNS" KubernetesのDNSプラグイン、"kube-dns"または"CoreDNS"が可能
kubernetes_imageRepository "k8s.gcr.io" Kubernetesマスターコンポーネント用のDockerレジストリ
kubernetes_config_dir "/etc/kubernetes" 設定パス
kubernetes_certs_dir "{{ kubernetes_config_dir }}/pki" 証明書フォルダ
kubernetes_pod_manifest_path 静的ポッドマニフェストを保存する絶対パス "{{ kubernetes_config_dir }}/manifests"
kubernetes_log_dir "{{ kubernetes_log_dir }}/audit" ログフォルダ
kubernetes_audit_log_dir "/var/log/kubernetes/audit" 監査ログフォルダ
kubernetes_log_age 2 ログファイルの最大年齢
kubernetes_authorization_mode "Node,RBAC" Kubernetesの認可モード
kubernetes_enable_admission_plugins "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" Kubernetes有効なアドミッションプラグイン
kubernetes_dns_domain "cluster.local" Kubernetesクラスター内の内部DNSドメイン
kubernetes_pod_subnet "10.244.0.0/16" ポッド用のIPv4サブネット
kubernetes_service_subnet "10.96.0.0/16" サービス用のIPv4サブネット
kubernetes_kubelet_extra_args "" kubeletデーモン用の追加引数
kubernetes_packages false - name: kubelet
state: present
- name: kubectl
state: present
- name: kubeadm
state: present
- name: kubernetes-cni
state: present
kubernetes_version_kubeadm 'stable-{{ kubernetes_version }}' kubeadmのバージョン

APIサーバー

名前 デフォルト 説明
kubernetes_apiserver_dns "" Kubernetes APIサーバーのDNS名
kubernetes_apiserver_ip - Kubernetes APIサーバーの仮想IP
kubernetes_apiserver_port 6443 Kubernetes APIサーバーのポート
kubernetes_apiserver_manifest_file '{{ kubernetes_pod_manifest_path }}/kube-apiserver.yaml' マニフェストファイルの絶対パス

Etcd

名前 説明 デフォルト
kubernetes_etcd_certs_dir Etcd証明書を保存するパス '{{ kubernetes_certs_dir }}/etcd'
kubernetes_etcd_ca_cert_file EtcdルートCA証明書ファイル '{{ kubernetes_etcd_certs_dir }}/ca.crt'
kubernetes_etcd_ca_key_file EtcdルートCAキー ファイル '{{ kubernetes_etcd_certs_dir }}/ca.key'
kubernetes_etcd_server_cert_file Etcdサーバー証明書ファイル '{{ kubernetes_etcd_certs_dir }}/server.crt'
kubernetes_etcd_server_key_file Etcdサーバーキー ファイル '{{ kubernetes_etcd_certs_dir }}/server.key'
kubernetes_etcd_peer_cert_file '{{ kubernetes_etcd_certs_dir }}/peer.crt'
kubernetes_etcd_peer_key_file '{{ kubernetes_etcd_certs_dir }}/peer.key'
kubernetes_etcd_healthcheck_client_cert_file '{{ kubernetes_etcd_certs_dir }}/healthcheck-client.crt'
kubernetes_etcd_healthcheck_client_key_file '{{ kubernetes_etcd_certs_dir }}/healthcheck-client.key'
kubernetes_etcd_apiserver_client_cert_file '{{ kubernetes_certs_dir }}/apiserver-etcd-client.crt'
kubernetes_etcd_apiserver_client_key_file '{{ kubernetes_certs_dir }}/apiserver-etcd-client.key'
kubernetes_etcd_manifest_file '{{ kubernetes_pod_manifest_path }}/etcd.yaml'
kubernetes_etcd_data_dir etcdデータ用のフォルダ /var/etcd
kubernetes_etcd_server_port etcdサーバーの通信ポート 2380
kubernetes_etcd_client_port etcdクライアントの通信ポート 2379

コントローラーマネージャー

名前 説明 デフォルト
kubernetes_controller_manager_manifest_file マニフェストファイルの絶対パス '{{ kubernetes_pod_manifest_path }}/kube-controller-manager.yaml'

kubeadm

名前 説明 デフォルト
kubernetes_kubeadm_config_file_path kubeadm設定ファイルを保存するパス '{{ kubernetes_config_dir }}/kubeadm'
kubernetes_kubeadm_config_file_name kubeadm設定ファイルの名前 clusterconfig.yaml

スケジューラー

名前 説明 デフォルト
kubernetes_scheduler_manifest_file マニフェストファイルの絶対パス '{{ kubernetes_pod_manifest_path }}/kube-scheduler.yaml'

クラウドプロバイダー

名前 説明 デフォルト
kubernetes_cloud_provider サポートされているクラウドプロバイダーを選択、値: ""または"vsphere" ""
kubernetes_cloud_config_file cloud_configファイルのパス "{{ kubernetes_config_dir }}/{{ kubernetes_cloud_provider }}.conf"
kubernetes_cloud_vsphere_workspace_server cloud_configの[workspace]エリアのオプションサーバー(vsphereのみ) ""
kubernetes_cloud_vsphere_workspace_datacenter cloud_configの[workspace]エリアのオプションデータセンター(vsphereのみ) ""
kubernetes_cloud_vsphere_workspace_default_datastore cloud_configの[workspace]エリアのオプションデフォルトデータストア(vsphereのみ) ""
kubernetes_cloud_vsphere_workspace_folder cloud_configの[workspace]エリアのオプションフォルダ(vsphereのみ) ""
kubernetes_cloud_vsphere_default_user cloud_configの[global]エリアのオプションユーザー(vsphereのみ) ""
kubernetes_cloud_vsphere_default_password cloud_configの[global]エリアのオプションパスワード(vsphereのみ) ""
kubernetes_cloud_vsphere_datacenters cloud_configの属性server、datacenters、username、passwordを持つデータセンターのリスト(vsphereのみ) []
kubernetes_cloud_vsphere_network_options cloud_configの[network]エリアのすべてのオプション(vsphereのみ) []
kubernetes_cloud_vsphere_disk_options cloud_configの[disk]エリアのすべてのオプション(vsphereのみ) []

例プレイブック

すべてのシナリオのためにすべてのサーバーを作成するためのVagrantfileがあります: Vagrantfile servers.yml (Vagrantfileに必要)

AllinOne

inventory

site.yml

シングルマスタークラスター

inventory

site.yml

分離されたetcd、シングルマスタークラスター

inventory

site.yml

HAマスタークラスター

inventory

site.yml

分離されたetcd、HAマスタークラスター

inventory

site.yml

ライセンス

Apache 2.0

貢献者

著者情報

2018年にアンドレ・メラーによって作成されました。

プロジェクトについて

this role install an high available / non high available kubernetes cluster with kubeadm.

インストール
ansible-galaxy install anmoel.kubernetes
ライセンス
apache-2.0
ダウンロード
3k
所有者