# 必要なライブラリ
ansible
terraform
# Terraform 対象サーバーで実行
$ echo 'security_driver = "none"' | sudo tee /etc/libvirt/qemu.conf > /dev/null
$ sudo systemctl restart libvirtd
# Terraform 実行サーバーで実行
$ sudo apt update -y \
sudo apt install -y mkisofs
# Terraform 実行サーバーで実行(定期的実行しておく)
$ wget -O terraform/modules/common/noble-server-cloudimg-amd64.img https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
# Ansible 実行サーバーで実行(Mitogenインストール)
$ curl -Lo /tmp/mitogen-0.3.8.tar.gz https://files.pythonhosted.org/packages/source/m/mitogen/mitogen-0.3.8.tar.gz
sudo tar zxvf /tmp/mitogen-0.3.8.tar.gz -C /opt/
rm -f /tmp/mitogen-0.3.8.tar.gz
- haproxy と keepalived の設定ファイルの Jinja テンプレートを生成する
$ cd ./ansible/files/lb/config_gen
$ rm -rf .venv && \
python -m venv .venv && \
source .venv/bin/activate && \
pip install -r requirements.txt && \
python haproxy.py && \
python keepalived.py
$ ./create-k8s.sh
- Login to argocd deployed as a sample
kubectl apply -f - <<EOF
apiVersion: v1
kind: Service
metadata:
name: argocd-lb
namespace: argocd
spec:
type: NodePort
ports:
- port: 443
targetPort: server
nodePort: 30001
protocol: TCP
selector:
app.kubernetes.io/instance: argocd
app.kubernetes.io/name: argocd-server
EOF
- Ubuntu 24.04
- kubernetes 1.30
- Containerd
- Cilium 1.16.1
- KVM
- Haproxy + Keepalived
hostname | IP |
---|---|
k8s-api | 192.168.11.130 |
k8s-lb-1 | 192.168.11.131 |
k8s-lb-2 | 192.168.11.132 |
k8s-cp-1 | 192.168.11.141 |
k8s-cp-2 | 192.168.11.142 |
k8s-cp-3 | 192.168.11.143 |
k8s-wk-1 | 192.168.11.151 |
k8s-wk-2 | 192.168.11.152 |
k8s-wk-3 | 192.168.11.153 |
argocd | 192.168.11.161 |
Execution time: 257 seconds
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
Total Execution time: 664 seconds
$ terraform state list
google_compute_network.default
google_compute_subnetwork.default
google_container_cluster.default
$ terraform -chdir=./terraform/env destroy -auto-approve -input=false