TerraformとAnsibleを使ってKubernetes環境構築

構築するKubernetes環境。TerraformとAnsibleを活用した自動化、kubeadmによるマスター・ワーカーノード構築、IaC実装の実践的テクニック

Read in: en
TerraformとAnsibleを使ってKubernetes環境構築

概要

TerraformとAnsibleを使ってKubernetes環境構築に取り組んだ。

自作アプリの運用をKubernetesに乗っけてみたいという気持ちから環境を構築するところから初めてみた。

サーバー選定

プライベートでの開発なので、せいぜい月2000円前後くらいの予算に留めたいところ。

クラウドかVPSか、マネージドか、ノンマネージドかといったところが大きな観点だが、そのへんはコスト感と運用メリットを考慮しつつ決めれば良いのでそんなに悩まないと思う。後述するが、一番の悩みのタネはロードバランサーだった・・。

今回候補に上がったのは3つ。

GCP

Digital Ocean

Conoha VPS

上記以外にマネージドk3sを提供しているcivo.comという選択肢も考えたが、k8sを触りたかったので検討外とした。

Digital OceanとConohaで迷ったが、従量課金なしの安心の料金体系に心奪われたのでConohaを選定した。

GKEやDigital OceanはKubernetesをさっと構築して勉強するにはちょうどよい環境が整っていると思うので、そういった目的で利用を検討していく判断をした。

Conoha VPSにKubernetes環境を構築

マネージドKubernetesを利用しない選択をしたので、セルフでKubernetesを構築することにした。

構築のツールとしてはkubeadmを採用。

TerraformとAnsibleを使って、インスタンスの構築から初期セットアップ(ユーザー作成、ssh鍵調整など)、kubeadmを使ったKubernetesの構築までコード化したものがこちら↓

github.com - bmf-san/setup-kubernetes-cluster-on-vps-boilerplate

masterノード1台、workerノードは複数台想定になっている。

ConohaはOpenstackをサポートしたAPIを用意しているので、Openstackをサポートしている他サーバー(ex. Digital Ocean)であれば、書き換えも楽なはず。

kubeadmによるKubernetesの構築は、Kubernetesの公式ドキュメントを一読して構築の前提条件を把握しておけばそれほど難しくなかった。

解決できなかったこと

ロードバランサーの対応ができなかったので、アプリケーションを公開してKubernetes運用をするまでに至らなかった。

自前Kubernetesクラスタの場合、クラウドが用意しているロードバランサーが使えないのでOSSのものを自分で用意する必要があるのだが、そのセットアップが上手く行かず断念・・

1週間近く睡眠時間を削ったが歯が立たなかった..w

解決できなかった問題はこれ。 https://github.com/kubernetes/ingress-nginx/issues/5401

自作アプリは一旦docker-composeでの運用をする方向に転換して、Kubernetesの運用はもう少し理解を深めてからにしようと思う。。。

Tags: Ansible Kubernetes Terraform kubeadm
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事