Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cluster: support enable or disable TLS for an exiting cluster #1657

Merged
merged 40 commits into from
Dec 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
890bb20
add tls comand
srstack Nov 26, 2021
758813c
Merge branch 'issue-1598' of https://github.com/srstack/tiup into iss…
srstack Nov 26, 2021
042a1e7
add tls func
srstack Nov 26, 2021
ca4303c
add tls command
srstack Nov 26, 2021
c727d52
Complete the enable tls operation
srstack Nov 26, 2021
31408fa
finish enable tls, but maybe pd is error
srstack Nov 27, 2021
8c7520b
finish disable tls
srstack Nov 28, 2021
e4aba12
add cleanup remote host tls file
srstack Nov 28, 2021
2969e37
add clean tls file tips
srstack Nov 28, 2021
2ff46b9
add some tips
srstack Nov 28, 2021
620bb7c
fix scale-out operation not create tls files
srstack Nov 29, 2021
a92b58a
fix deploy operation not create tls files
srstack Nov 29, 2021
3a3dbe4
fix cannot cleanup monitor data/log/tls files
srstack Nov 29, 2021
3eb4528
fix
srstack Nov 30, 2021
b3c5018
Merge branch 'pingcap:master' into issue-1598
srstack Nov 30, 2021
a14d0bb
Merge branch 'master'
srstack Nov 30, 2021
d61a9d8
Merge branch 'pingcap-master' into issue-1598
srstack Nov 30, 2021
b539985
delete skip-restart flag
srstack Dec 1, 2021
53f6a7a
Merge branch 'pingcap:master' into issue-1598
srstack Dec 1, 2021
0d39bc0
fix skip confirm
srstack Dec 1, 2021
934f431
skip confirm
srstack Dec 2, 2021
fbe568e
Merge branch 'pingcap:master' into issue-1598
srstack Dec 2, 2021
9e74753
skip confirm
srstack Dec 2, 2021
251111e
perfect tips
srstack Dec 2, 2021
023eee6
fix
srstack Dec 2, 2021
5760ac8
finish 1 pd cluster enable/disable tls
srstack Dec 2, 2021
d36ca86
prevent duplicate set tls
srstack Dec 2, 2021
93e5ffa
perfect tips
srstack Dec 3, 2021
d2b9b6a
perfect tips
srstack Dec 3, 2021
f096dd9
Merge branch 'pingcap:master' into issue-1598
srstack Dec 5, 2021
5b88b7f
add force flag
srstack Dec 5, 2021
3086473
Merge branch 'issue-1598' of https://github.com/srstack/tiup into iss…
srstack Dec 5, 2021
9828b3e
add tls path with clean op
srstack Dec 5, 2021
aeee4f8
Merge branch 'pingcap:master' into issue-1598
srstack Dec 6, 2021
3ddac95
m
srstack Dec 7, 2021
90f3d35
m
srstack Dec 7, 2021
2b846b5
Merge branch 'master' of https://github.com/pingcap/tiup into issue-1598
srstack Dec 7, 2021
3f9d140
perfect tips
srstack Dec 7, 2021
a5f8da9
Merge branch 'master' into issue-1598
srstack Dec 15, 2021
1ec1562
Merge branch 'master' into issue-1598
srstack Dec 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions components/cluster/command/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ func init() {
newTelemetryCmd(),
newReplayCmd(),
newTemplateCmd(),
newTLSCmd(),
)
}

Expand Down
71 changes: 71 additions & 0 deletions components/cluster/command/tls.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.

package command

import (
"strings"

perrs "github.com/pingcap/errors"
"github.com/spf13/cobra"
)

func newTLSCmd() *cobra.Command {
var (
reloadCertificate bool // reload certificate when the cluster enable encrypted communication
cleanCertificate bool // cleanup certificate when the cluster disable encrypted communication
enableTLS bool
)

cmd := &cobra.Command{
Use: "tls <cluster-name> <enable/disable>",
Short: "Enable/Disable TLS between TiDB components",
RunE: func(cmd *cobra.Command, args []string) error {
if len(args) != 2 {
return cmd.Help()
}

if err := validRoles(gOpt.Roles); err != nil {
return err
}
clusterName := args[0]
clusterReport.ID = scrubClusterName(clusterName)
teleCommand = append(teleCommand, scrubClusterName(clusterName))

switch strings.ToLower(args[1]) {
case "enable":
enableTLS = true
case "disable":
enableTLS = false
default:
return perrs.New("enable or disable must be specified at least one")
}

if enableTLS && cleanCertificate {
return perrs.New("clean-certificate only works when tls disable")
}

if !enableTLS && reloadCertificate {
return perrs.New("reload-certificate only works when tls enable")
}

return cm.TLS(clusterName, gOpt, enableTLS, cleanCertificate, reloadCertificate, skipConfirm)
},
}

cmd.Flags().BoolVar(&cleanCertificate, "clean-certificate", false, "Cleanup the certificate file if it already exists when tls disable")
cmd.Flags().BoolVar(&reloadCertificate, "reload-certificate", false, "Load the certificate file whether it exists or not when tls enable")
cmd.Flags().BoolVar(&gOpt.Force, "force", false, "Force enable/disable tls regardless of the current state")

return cmd
}
24 changes: 23 additions & 1 deletion components/dm/spec/logic.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,21 @@ func (i *MasterInstance) InitConfig(
return err
}

// doesn't work
if _, err := i.setTLSConfig(ctx, false, nil, paths); err != nil {
return err
}

specConfig := spec.Config
return i.MergeServerConfig(ctx, e, i.topo.ServerConfigs.Master, specConfig, paths)
}

// setTLSConfig set TLS Config to support enable/disable TLS
// MasterInstance no need to configure TLS
func (i *MasterInstance) setTLSConfig(ctx context.Context, enableTLS bool, configs map[string]interface{}, paths meta.DirPaths) (map[string]interface{}, error) {
return nil, nil
}

// ScaleConfig deploy temporary config on scaling
func (i *MasterInstance) ScaleConfig(
ctx context.Context,
Expand Down Expand Up @@ -271,10 +282,21 @@ func (i *WorkerInstance) InitConfig(
return err
}

// doesn't work
if _, err := i.setTLSConfig(ctx, false, nil, paths); err != nil {
return err
}

specConfig := spec.Config
return i.MergeServerConfig(ctx, e, i.topo.ServerConfigs.Worker, specConfig, paths)
}

// setTLSConfig set TLS Config to support enable/disable TLS
// workrsInstance no need to configure TLS
func (i *WorkerInstance) setTLSConfig(ctx context.Context, enableTLS bool, configs map[string]interface{}, paths meta.DirPaths) (map[string]interface{}, error) {
return nil, nil
}

// ScaleConfig deploy temporary config on scaling
func (i *WorkerInstance) ScaleConfig(
ctx context.Context,
Expand Down Expand Up @@ -322,7 +344,7 @@ func (topo *Specification) ComponentsByStartOrder() (comps []Component) {
// "dm-master", "dm-worker"
comps = append(comps, &DMMasterComponent{topo})
comps = append(comps, &DMWorkerComponent{topo})
comps = append(comps, &spec.MonitorComponent{Topology: topo})
comps = append(comps, &spec.MonitorComponent{Topology: topo}) // prometheus
comps = append(comps, &spec.GrafanaComponent{Topology: topo})
comps = append(comps, &spec.AlertManagerComponent{Topology: topo})
return
Expand Down
Loading