Files
homelab/ansible/playbooks/roles/kubeconfig-manager
2025-10-19 17:02:16 -05:00
..
2025-10-19 17:02:16 -05:00
2025-10-19 17:02:16 -05:00
2025-10-19 17:02:16 -05:00

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/config file
  • 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