86 lines
1.9 KiB
Markdown
86 lines
1.9 KiB
Markdown
# 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:
|
|
|
|
```yaml
|
|
- 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:
|
|
|
|
```yaml
|
|
- 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 |