{{ define "linux-mac-common" }} {{ if .IDPCaURI }}

Copy IDP CA Certificate From URL

Copy this CA Certificate and download it to your .kube directory

curl --create-dirs -s {{ .IDPCaURI }} -o ${HOME}/.kube/certs/{{ .ClusterName }}/idp-ca.crt
{{ end }} {{ if .IDPCaPem }}

Copy IDP CA Certificate From PEM

Put the CA Certificate into your .kube directory

mkdir -p ${HOME}/.kube/certs/{{ .ClusterName }}/ && cat << EOF > ${HOME}/.kube/certs/{{ .ClusterName }}/idp-ca.crt
{{ .IDPCaPem }}
EOF
{{ end }} {{ if .K8sCaURI }}

Copy Kubernetes CA Certificate From URL

Copy this CA Certificate and download it to your .kube directory

curl --create-dirs -s {{ .K8sCaURI }} -o ${HOME}/.kube/certs/{{ .ClusterName }}/k8s-ca.crt
{{ end }} {{ if .K8sCaPem }}

Copy Kubernetes CA Certificate From PEM

Put the CA Certificate into your .kube directory

mkdir -p ${HOME}/.kube/certs/{{ .ClusterName }}/ && cat << EOF > ${HOME}/.kube/certs/{{ .ClusterName }}/k8s-ca.crt
{{ .K8sCaPem }}
EOF
{{ end }}

Run configuration commands

These commands will update ~/.kube/config

kubectl config set-cluster {{ .ClusterName }} \
  {{- if or .K8sCaPem .K8sCaURI }}
    --certificate-authority=${HOME}/.kube/certs/{{ .ClusterName}}/k8s-ca.crt \
  {{- end }}
    --server={{ .K8sMasterURI }}
kubectl config set-credentials {{ .Username }}-{{ .ClusterName }} \
    --auth-provider=oidc \
    --auth-provider-arg="idp-issuer-url={{ .Issuer }}" \
    --auth-provider-arg="client-id={{ .ClientID }}" \
    --auth-provider-arg="client-secret={{ .ClientSecret }}" \
    --auth-provider-arg="refresh-token={{ .RefreshToken }}" \
    --auth-provider-arg="id-token={{ .IDToken }}"
  {{- if or (.IDPCaURI) (.IDPCaPem) }} \
    --auth-provider-arg=idp-certificate-authority=${HOME}/.kube/certs/{{ .ClusterName }}/idp-ca.crt
  {{- end }}
kubectl config set-context {{ if not .StaticContextName }}{{ .Username }}-{{ end }}{{ .ClusterName }} \
    --cluster={{ .ClusterName }}{{ if .Namespace }} --namespace={{ .Namespace }}{{ end }} \
    --user={{ .Username}}-{{.ClusterName }}
kubectl config use-context {{ if not .StaticContextName }}{{ .Username }}-{{ end }}{{ .ClusterName}}
{{ end }}