K8s Migration Phase 0: Foundation Infrastructure #26
5 changed files with 74 additions and 0 deletions
Add minikube role for Kubernetes cluster on indri
- Create ansible/roles/minikube for minikube cluster setup - Use podman driver with cri-o runtime - Set memory to 7800MB (vs 8192 podman) to account for VM overhead - Add minikube role to indri playbook - Update k8s-migration plan with implementation details Deployed with Kubernetes v1.34.0 and CRI-O 1.24.6. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
commit
2c90dc01a4
|
|
@ -105,6 +105,8 @@
|
||||||
tags: zot_metrics
|
tags: zot_metrics
|
||||||
- role: podman
|
- role: podman
|
||||||
tags: podman
|
tags: podman
|
||||||
|
- role: minikube
|
||||||
|
tags: minikube
|
||||||
- role: plex_metrics
|
- role: plex_metrics
|
||||||
tags: plex_metrics
|
tags: plex_metrics
|
||||||
- role: postgresql
|
- role: postgresql
|
||||||
|
|
|
||||||
8
ansible/roles/minikube/defaults/main.yml
Normal file
8
ansible/roles/minikube/defaults/main.yml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
# Minikube cluster configuration
|
||||||
|
minikube_cpus: 4
|
||||||
|
# Note: Must be less than podman machine memory (8192MB) to account for overhead
|
||||||
|
minikube_memory: 7800
|
||||||
|
minikube_disk_size: "200g"
|
||||||
|
minikube_driver: podman
|
||||||
|
minikube_container_runtime: cri-o
|
||||||
9
ansible/roles/minikube/handlers/main.yml
Normal file
9
ansible/roles/minikube/handlers/main.yml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
# Minikube handlers
|
||||||
|
# Note: Restarting minikube is a heavy operation and may require manual intervention
|
||||||
|
|
||||||
|
- name: Restart minikube
|
||||||
|
ansible.builtin.shell: |
|
||||||
|
minikube stop 2>/dev/null || true
|
||||||
|
minikube start
|
||||||
|
changed_when: true
|
||||||
51
ansible/roles/minikube/tasks/main.yml
Normal file
51
ansible/roles/minikube/tasks/main.yml
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
# Minikube installation and cluster setup for indri
|
||||||
|
# Requires podman machine to be running (see podman role)
|
||||||
|
#
|
||||||
|
# NOTE: Similar to podman, minikube start may have issues when run via SSH.
|
||||||
|
# If cluster fails to start, manually run on indri:
|
||||||
|
# minikube start --driver=podman --container-runtime=cri-o \
|
||||||
|
# --cpus=4 --memory=8192 --disk-size=200g
|
||||||
|
|
||||||
|
- name: Install minikube via homebrew
|
||||||
|
community.general.homebrew:
|
||||||
|
name: minikube
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Install kubectl via homebrew
|
||||||
|
community.general.homebrew:
|
||||||
|
name: kubectl
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Check if minikube cluster exists
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: minikube status --format={% raw %}'{{.Host}}'{% endraw %}
|
||||||
|
register: minikube_status
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Start minikube cluster
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: >
|
||||||
|
minikube start
|
||||||
|
--driver={{ minikube_driver }}
|
||||||
|
--container-runtime={{ minikube_container_runtime }}
|
||||||
|
--cpus={{ minikube_cpus }}
|
||||||
|
--memory={{ minikube_memory }}
|
||||||
|
--disk-size={{ minikube_disk_size }}
|
||||||
|
register: minikube_start
|
||||||
|
changed_when: minikube_start.rc == 0
|
||||||
|
failed_when: false # Don't fail - may need manual intervention like podman
|
||||||
|
when: minikube_status.rc != 0 or 'Running' not in minikube_status.stdout
|
||||||
|
|
||||||
|
- name: Check minikube status after start attempt
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: minikube status --format={% raw %}'{{.Host}}'{% endraw %}
|
||||||
|
register: minikube_final_status
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Warn if minikube failed to start
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: "WARNING: minikube may not have started properly. Run 'minikube start' manually on indri if needed. Status: {{ minikube_final_status.stdout | default('unknown') }}"
|
||||||
|
when: minikube_final_status.rc != 0 or 'Running' not in minikube_final_status.stdout
|
||||||
|
|
@ -598,6 +598,10 @@ ssh indri 'kubectl get nodes'
|
||||||
# Expected: minikube Ready control-plane ...
|
# Expected: minikube Ready control-plane ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Implementation Details:**
|
||||||
|
- Changed `minikube_memory` from 8192 to 7800 because podman machine reports slightly less available memory (7908MB) due to VM overhead. Minikube rejects memory requests exceeding what podman reports.
|
||||||
|
- Deployed with Kubernetes v1.34.0 and CRI-O 1.24.6.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Step 0.10: Configure Kubeconfig on Gilbert
|
### Step 0.10: Configure Kubeconfig on Gilbert
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue