1.9 KiB
1.9 KiB
Kubeconfig Manager Role
A reusable Ansible role for managing kubeconfig files across multiple Kubernetes clusters.
Features
- Fetches kubeconfig from remote Kubernetes nodes
- Merges multiple cluster configs into a single
~/.kube/configfile - Creates backups before merging
- Provides unique cluster, context, and user names
- Works with any Kubernetes cluster (vanilla K8s, OpenShift, etc.)
Requirements
- Ansible 2.9+
- Access to Kubernetes cluster admin.conf file
- Local kubectl installation (optional, for testing)
Role Variables
| Variable | Default | Description |
|---|---|---|
cluster_name |
kubernetes |
Name of the cluster (required) |
kubeconfig_source_path |
/etc/kubernetes/admin.conf |
Path to kubeconfig on remote host |
context_suffix |
admin |
Suffix for context name |
Example Usage
In a playbook:
- name: Setup kubeconfig for FastPass cluster
hosts: fastpass_control_plane[0]
roles:
- role: kubeconfig-manager
vars:
cluster_name: "fastpass"
- name: Setup kubeconfig for Hub cluster
hosts: hub_cluster
roles:
- role: kubeconfig-manager
vars:
cluster_name: "hub"
kubeconfig_source_path: "/etc/kubernetes/admin.conf"
As an included role:
- name: Manage kubeconfig
ansible.builtin.include_role:
name: kubeconfig-manager
vars:
cluster_name: "{{ my_cluster_name }}"
Generated Structure
The role creates contexts with this naming pattern:
- Cluster:
{{ cluster_name }} - Context:
{{ cluster_name }}-admin - User:
{{ cluster_name }}-admin
File Structure
~/.kube/
├── config # Merged kubeconfig
├── config-fastpass # Individual cluster configs
├── config-hub
├── config-internal
└── config.backup.1234567890 # Timestamped backups
Dependencies
None
License
MIT
Author
mk-labs