75 lines
1.3 KiB
Go
75 lines
1.3 KiB
Go
package kubeconfig
|
|
|
|
import "html/template"
|
|
|
|
const (
|
|
tokenTemplateText = `apiVersion: v1
|
|
kind: Config
|
|
clusters:
|
|
{{- range .Nodes}}
|
|
- name: "{{.ClusterName}}"
|
|
cluster:
|
|
server: "{{.Server}}"
|
|
{{- if ne .Cert "" }}
|
|
certificate-authority-data: "{{.Cert}}"
|
|
{{- end }}
|
|
{{- end}}
|
|
|
|
users:
|
|
- name: "{{.User}}"
|
|
user:
|
|
{{- if .Token }}
|
|
token: "{{.Token}}"
|
|
{{ else }}
|
|
exec:
|
|
apiVersion: client.authentication.k8s.io/v1beta1
|
|
args:
|
|
- token
|
|
- --server={{.Host}}
|
|
- --user={{.User}}
|
|
{{- if .EndpointEnabled }}
|
|
- --cluster={{.ClusterID}}
|
|
{{- end }}
|
|
command: rancher
|
|
{{- end }}
|
|
|
|
contexts:
|
|
{{- range .Nodes}}
|
|
- name: "{{.ClusterName}}"
|
|
context:
|
|
user: "{{.User}}"
|
|
cluster: "{{.ClusterName}}"
|
|
{{- end}}
|
|
|
|
current-context: "{{.ClusterName}}"
|
|
`
|
|
|
|
basicTemplateText = `apiVersion: v1
|
|
kind: Config
|
|
clusters:
|
|
- name: "{{.ClusterName}}"
|
|
cluster:
|
|
server: "https://{{.Host}}"
|
|
api-version: v1
|
|
|
|
users:
|
|
- name: "{{.User}}"
|
|
user:
|
|
username: "{{.Username}}"
|
|
password: "{{.Password}}"
|
|
|
|
contexts:
|
|
- name: "{{.ClusterName}}"
|
|
context:
|
|
user: "{{.User}}"
|
|
cluster: "{{.ClusterName}}"
|
|
|
|
current-context: "{{.ClusterName}}"
|
|
`
|
|
)
|
|
|
|
var (
|
|
basicTemplate = template.Must(template.New("basicTemplate").Parse(basicTemplateText))
|
|
tokenTemplate = template.Must(template.New("tokenTemplate").Parse(tokenTemplateText))
|
|
)
|