このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2022年12月23日金曜日

やってみよう自動化ツール Ansible その3 k8sのコントロールプレーンを自動化してみる

今回は、前回準備を整えた環境にAnsibleをつかってKubernetesを自動インストールしていこうと思います。
実行する内容としては、Kubernetesをインストールする際に使うkubeadmのyumリポジトリを追加、kubeadmのインストール、kubeadm int でコントロールプレーンの作成、kubectlコマンド実行のためのkubeconfig用設定となります。

用意するプレイブックは以下の内容となります。
- name: setup Containerd
  hosts: kubernetes
  remote_user: root

  tasks:
  - name: kubernetes.repo create
    file:
      path: /etc/yum.repos.d/kubernetes.repo
      state: touch

  - name: add kubernetes.repo
    lineinfile:
      dest: /etc/yum.repos.d/kubernetes.repo
      line: "{{ item }}"
    with_items:
      - "[kubernetes]"
      - "name=Kubernetes"
      - "baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64"
      - "enabled=1"
      - "gpgcheck=1"
      - "repo_gpgcheck=1"
      - "gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg"

  - name: Install kubeadm
    yum:
      name: kubeadm

  - name: Kubernetes Setup
    shell : kubeadm init --apiserver-advertise-address=172.20.73.91 --pod-network-cidr=10.244.0.0/16

  - name: $HOME/.kube create
    shell : mkdir -p $HOME/.kube

  - name: copy admin.conf
    shell : sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  - name: chown $HOME/.kube/config
    shell : sudo chown $(id -u):$(id -g) $HOME/.kube/config

task: 以降について解説します。
『kubernetes.repo create』これは、次のタスクで内容を記述していくためのファイル作成部分になります。
『add kubernetes.repo』これは、yum で kubeadm をインストールする際に必要なリポジトリの内容を追加しています。
『Install kubeadm』これは、yum で kubeadm をインストールしています。
『Kubernetes Setup』これは、kubeadm を使用して Kubernetes を構築しています。CNI は flannel を使用しています。
『$HOME/.kube create』『copy admin.conf』『chown $HOME/.kube/config』この3つは、Kubernetes へ対して操作を行う kubectl を使うための処理となっています。
kubectl は $HOME/.kube/config に書いてある接続に必要な情報を読み取って Kubernetes とやり取りをするため、ディレクトリを作って情報が記入されているファイルをコピーして権限を整えているという処理になります。

Kubernetes をよくご存じの方は --pod-network-cidr から flannel って… と思われる方もいるかもしれませんが、私が初めて Kubernetes を構築して Pod の通信についてあれやこれやと頭を悩ませ、VXLAN やカプセル化といった仕組みを理解するまで一緒に付き合ってくれた思い入れのある機能なので使いたくなってちゃうんですよねw
どうかご容赦ください。

この後は、コントロールプレーンに追加する用のワーカーの作成になります。
こちらについては、今まで作成した OS の設定、Containerd の構築、Kubernetes の構築、これらの処理を roles を利用して呼び出す形で作成したいともいます。

今年もブログを読んでいただきありがとうございました。
来年もよろしくお願いします。

よいおとしを~