Skip to content

Instantly share code, notes, and snippets.

@mikejk8s
Last active September 6, 2017 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikejk8s/3a7c49339ed582afc844f53be7cc18f3 to your computer and use it in GitHub Desktop.
Save mikejk8s/3a7c49339ed582afc844f53be7cc18f3 to your computer and use it in GitHub Desktop.
k8s federation the hard way script
#! /bin/bash
CLUSTERS=( "fed-a" "fed-b" )
ZONES=( "us-central1-a" "us-central1-b")
for i in {0..1}; do
mkdir -p kubeconfigs/${CLUSTERS[${i}]}/
SERVER=$(gcloud container clusters describe ${CLUSTERS[${i}]} \
--zone "${ZONES[${i}]}" \
--format 'value(endpoint)')
CERTIFICATE_AUTHORITY_DATA=$(gcloud container clusters describe ${CLUSTERS[${i}]} \
--zone ${ZONES[${i}]} \
--format 'value(masterAuth.clusterCaCertificate)')
CLIENT_CERTIFICATE_DATA=$(gcloud container clusters describe ${CLUSTERS[${i}]} \
--zone ${ZONES[${i}]} \
--format 'value(masterAuth.clientCertificate)')
CLIENT_KEY_DATA=$(gcloud container clusters describe ${CLUSTERS[${i}]} \
--zone ${ZONES[${i}]} \
--format 'value(masterAuth.clientKey)')
kubectl config set-cluster ${CLUSTERS[${i}]} --kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config set clusters.${CLUSTERS[${i}]}.server \
"https://${SERVER}" \
--kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config set clusters.${CLUSTERS[${i}]}.certificate-authority-data \
${CERTIFICATE_AUTHORITY_DATA} \
--kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config set-credentials admin --kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config set users.admin.client-certificate-data \
${CLIENT_CERTIFICATE_DATA} \
--kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config set users.admin.client-key-data \
${CLIENT_KEY_DATA} \
--kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config set-context default \
--cluster=${CLUSTERS[${i}]} \
--user=admin \
--kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
kubectl config use-context default \
--kubeconfig kubeconfigs/${CLUSTERS[${i}]}/kubeconfig
cat > clusters/${CLUSTERS[${i}]}.yaml <<EOF
apiVersion: federation/v1beta1
kind: Cluster
metadata:
name: ${CLUSTERS[${i}]}
spec:
serverAddressByClientCIDRs:
- clientCIDR: "0.0.0.0/0"
serverAddress: "https://${SERVER}"
secretRef:
name: ${CLUSTERS[${i}]}
EOF
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment