Path: blob/main/dev/gpctl/cmd/clusters-gettlsconfig.go
2496 views
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package cmd56import (7"context"8"fmt"9"io/ioutil"10"os"11"path"1213"github.com/gitpod-io/gitpod/common-go/log"1415"github.com/spf13/cobra"16metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"17"k8s.io/client-go/kubernetes"18)1920// clustersGetTlsConfigCmd is the "clusters get-tls-config" cmd21var clustersGetTlsConfigCmd = &cobra.Command{22Use: "get-tls-config",23Short: "Fetches ws-manager TLS config and stores them in a local folder",24Run: func(cmd *cobra.Command, args []string) {25ctx, cancel := context.WithCancel(context.Background())26defer cancel()2728cfg, namespace, err := getKubeconfig()29if err != nil {30log.WithError(err).Fatal("cannot get kubeconfig")31}32clientSet, err := kubernetes.NewForConfig(cfg)33if err != nil {34log.WithError(err).Fatal("cannot create clientset")35}3637namespaceOverride, err := cmd.Flags().GetString("namespace")38if err != nil {39log.Fatal(err)40}41if namespaceOverride != "" {42namespace = namespaceOverride43}4445secretName, err := cmd.Flags().GetString("secretName")46if err != nil {47log.Fatal(err)48}4950tlsPath, err := cmd.Flags().GetString("tls-path")51if err != nil {52log.Fatal(err)53}5455secret, err := clientSet.CoreV1().Secrets(namespace).Get(ctx, secretName, metav1.GetOptions{})56if err != nil {57log.Fatal(err)58}5960if _, err := os.Stat(tlsPath); os.IsNotExist(err) {61err = os.Mkdir(tlsPath, 0744)62if err != nil {63log.Fatal(err)64}65}66writeFileFromSecretData := func(filename string) {67filepath := path.Join(tlsPath, filename)68data := secret.Data[filename]69err = ioutil.WriteFile(filepath, data, 0744)70if err != nil {71log.Fatal(err)72}73}74writeFileFromSecretData("ca.crt")75writeFileFromSecretData("tls.crt")76writeFileFromSecretData("tls.key")7778fmt.Printf("wrote ws-manager TLS config to: %s\n", tlsPath)79},80}8182func init() {83clustersGetTlsConfigCmd.Flags().String("secretName", "ws-manager-mk2-client-tls", "secret name")84clustersGetTlsConfigCmd.Flags().String("namespace", "", "override the namespace in the current kubectx")85clustersGetTlsConfigCmd.Flags().String("tls-path", "./wsman-tls", "folder to write the secrets to")8687clustersCmd.AddCommand(clustersGetTlsConfigCmd)88}899091