mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
90 lines
2.3 KiB
Go
90 lines
2.3 KiB
Go
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License-AGPL.txt in the project root for license information.
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
|
|
"github.com/gitpod-io/gitpod/common-go/log"
|
|
|
|
"github.com/spf13/cobra"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/kubernetes"
|
|
)
|
|
|
|
// clustersGetTlsConfigCmd is the "clusters get-tls-config" cmd
|
|
var clustersGetTlsConfigCmd = &cobra.Command{
|
|
Use: "get-tls-config",
|
|
Short: "Fetches ws-manager TLS config and stores them in a local folder",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
cfg, namespace, err := getKubeconfig()
|
|
if err != nil {
|
|
log.WithError(err).Fatal("cannot get kubeconfig")
|
|
}
|
|
clientSet, err := kubernetes.NewForConfig(cfg)
|
|
if err != nil {
|
|
log.WithError(err).Fatal("cannot create clientset")
|
|
}
|
|
|
|
namespaceOverride, err := cmd.Flags().GetString("namespace")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if namespaceOverride != "" {
|
|
namespace = namespaceOverride
|
|
}
|
|
|
|
secretName, err := cmd.Flags().GetString("secretName")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
tlsPath, err := cmd.Flags().GetString("tls-path")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
secret, err := clientSet.CoreV1().Secrets(namespace).Get(ctx, secretName, metav1.GetOptions{})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if _, err := os.Stat(tlsPath); os.IsNotExist(err) {
|
|
err = os.Mkdir(tlsPath, 0744)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
writeFileFromSecretData := func(filename string) {
|
|
filepath := path.Join(tlsPath, filename)
|
|
data := secret.Data[filename]
|
|
err = ioutil.WriteFile(filepath, data, 0744)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
writeFileFromSecretData("ca.crt")
|
|
writeFileFromSecretData("tls.crt")
|
|
writeFileFromSecretData("tls.key")
|
|
|
|
fmt.Printf("wrote ws-manager TLS config to: %s\n", tlsPath)
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
clustersGetTlsConfigCmd.Flags().String("secretName", "ws-manager-client-tls", "secret name")
|
|
clustersGetTlsConfigCmd.Flags().String("namespace", "", "override the namespace in the current kubectx")
|
|
clustersGetTlsConfigCmd.Flags().String("tls-path", "./wsman-tls", "folder to write the secrets to")
|
|
|
|
clustersCmd.AddCommand(clustersGetTlsConfigCmd)
|
|
}
|