pavedroad-io / roadctl

A kubectl compatible CLI for managing and creating applications and defining/managing CI/CD environments. The roadctl command uses blueprints based on provent design patterns driven by produciton metrics.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Merge / replace microki8s.config into .kube

jscharber opened this issue · comments

Currently, we have a script that re-creates the Kubernetes configuration to set the correct IP and certificate for the microk8s cluster. This simple script overwrites the current contents of the file that would result in other Kubernetes configuration, aka kubectx, being lost. We need the script to only modify the section for microk8s.

kube-config.sh

#!/bin/bash

CMD0="microk8s.config"
CMD1=`microk8s.config > $HOME/.kube/config`

clear
echo "Writing microk8s.config to $HOME/.kube/config"
echo "microk8s.config > $HOME/.kube/config"
$CMD1

Given a list of clusters, find the microk8s.config section and replace the certificate-authority-data and server: https://10.0.2.15:16443 attributes.

 microk8s.config
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURBVENDQWVtZ0F3SUJBZ0lKQUtHZUZ1L1A1YnBJTUEwR0NTcUdTSWIzRFFFQkN3VUFNQmN4RlRBVEJnTlYKQkFNTURERXdMakUxTWk0eE9ETXVNVEFlRncweU1EQTNNakF5TURRM01UZGFGdzB6TURBM01UZ3lNRFEzTVRkYQpNQmN4RlRBVEJnTlZCQU1NRERFd0xqRTFNaTR4T0RNdU1UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCkFEQ0NBUW9DZ2dFQkFMcm84YXg3bER0QUdkVFZTVDBUaTdRV3hyM0MwbEFWVE9KVW0rZ01HRU5HSU9hNitldGYKaURBblNjSk10RE5RSlVmTWlobFBHaEdQOXBJdFhKUGJpcHdsUjRMTHFlMHkvTzJiQzZ4bllIQmpPVEYrUHl3dgpuY1hiR2hMbTd5TUlORnhBdXJuNUpZdEp1U2NFQVpEOHg2dURRNE9hL3ZEZGlsTnVVWFROUE9NZ1BEQ3pQNE52CkcreUFxYTdkWmhGS1BTRVlOMDdoNVorWVU1ckFVTUNmaTdKdkdwaHp6UjRScE1OWERpZU5pbUEyZytMalBsZnAKVVRUU0gxQnJqOHVMVGJnVVMwK05SUkxNRjlERDJ5ajRXdXMzODJWNE9GeGQ0cC9uWnJBOE9OZFhOTW5iTXMxOApGZ3pCRmNiRXNtRlUveHFjUG8wZWZtclU3TXhjSFRlcnBCRUNBd0VBQWFOUU1FNHdIUVlEVlIwT0JCWUVGTHZMCjNRZVpYYzFhN2RHZkhvdXAzNE1IVnV6Z01COEdBMVVkSXdRWU1CYUFGTHZMM1FlWlhjMWE3ZEdmSG91cDM0TUgKVnV6Z01Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUd5Y1Jzb09zbkQ3bk50Uwp0blY3YUdpNmVPemxraERjSnFld2ZBaVE4b1grRXZXWjhtTzNTY0ZXeUplVGlOVHpPbFJiQVJYQTBNMldjQi9aCmhJVWVjKzUwajJvSzB4ck9JRlQyWXZ5KzRVUDFPSHhKRk15UWYrU1ZHRUVVMzVGc1BsakJzL3FyUmN4c3BtTUsKOVRPdlVZUzlMRTRSUnhKZXF5N0p4RTVWb1QrWGpMT20yZG1rU0U3eVE1bS90dE93Tld1OUpGWnMvRlk4c1ltRApyNzU0TE90b0tMSGZIT3ZYNnM2aHVQZ2Y3SGZZQkJVZC9oNjNQWVRRbHpISk1GTVdMQ2gzQ01TTklnaVFyMnNLCmcvbUQyZUJnVU4vdm53QnJWbG15SThWSmUrbnh1OURwUjNWNmNhQk1UcnlFMVYrYU03S1prMHFDTCt1MmZFNmQKNGJmTVZKVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    server: https://10.0.2.15:16443
  name: microk8s-cluster
contexts:
- context:
    cluster: microk8s-cluster
    user: admin
  name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
  user:
    token: bnVrL1R3aWZKMFV1empQTE9ORkdmVWY2Nk9IbXIwUi95YnFaQnYvMC8zND0K

Proposed changes

#!/bin/bash

K8SCONFIG="microk8s.config"
K8SCONTEXT="microk8s"

clear
echo "Saving ${K8SCONTEXT} to ${HOME}/.kube/config"
echo "gathering microk8s configuration "

clusterName=`${K8SCONFIG} | yq r - clusters[0].name`
clusterServer=`${K8SCONFIG} | yq r - clusters[0].cluster.server`
clusterCertificate=`${K8SCONFIG} | yq r - clusters[0].cluster.certificate-authority-data`
userName=`microk8s.config | yq r - users[0].name`
userToken=`${K8SCONFIG} | yq r - users[0].user.token`

# Add/update the server
echo "Saving / updating ${K8SCONTEXT}"
kubectl config set-cluster ${clusterName} --server=${clusterServer}
kubectl config set clusters.${clusterName}.certificate-authority-data ${clusterCertificate}

kubectl config set-credentials ${userName}
kubectl config set users.${userName}.token ${userToken}

#kubectl config set-context dev-frontend --cluster=development --namespace=frontend --user=developer
kubectl config set-context microk8s --cluster=${clusterName} --user=${userName}
kubectl config set current-context microk8s