Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a42ad6a9
Unverified
Commit
a42ad6a9
authored
Sep 18, 2016
by
Ilya Dmitrichenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move `pkg/kubadm` to `cmd/kubeadm/app`, remove `cmd/manual.go`
parent
ca8a7a2c
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
24 additions
and
280 deletions
+24
-280
README.md
cmd/kubeadm/README.md
+0
-0
types.go
cmd/kubeadm/app/api/types.go
+0
-0
cmd.go
cmd/kubeadm/app/cmd/cmd.go
+1
-6
init.go
cmd/kubeadm/app/cmd/init.go
+3
-3
join.go
cmd/kubeadm/app/cmd/join.go
+3
-3
images.go
cmd/kubeadm/app/images/images.go
+0
-0
kubeadm.go
cmd/kubeadm/app/kubeadm.go
+2
-2
addons.go
cmd/kubeadm/app/master/addons.go
+2
-2
apiclient.go
cmd/kubeadm/app/master/apiclient.go
+0
-0
discovery.go
cmd/kubeadm/app/master/discovery.go
+1
-1
kubeconfig.go
cmd/kubeadm/app/master/kubeconfig.go
+2
-2
manifests.go
cmd/kubeadm/app/master/manifests.go
+2
-2
pki.go
cmd/kubeadm/app/master/pki.go
+1
-1
tokens.go
cmd/kubeadm/app/master/tokens.go
+2
-2
csr.go
cmd/kubeadm/app/node/csr.go
+2
-2
discovery.go
cmd/kubeadm/app/node/discovery.go
+1
-1
kubeconfig.go
cmd/kubeadm/app/util/kubeconfig.go
+1
-1
tokens.go
cmd/kubeadm/app/util/tokens.go
+1
-1
.gitignore
pkg/kubeadm/.gitignore
+0
-1
manual.go
pkg/kubeadm/cmd/manual.go
+0
-250
No files found.
pkg
/kubeadm/README.md
→
cmd
/kubeadm/README.md
View file @
a42ad6a9
File moved
pkg/kubeadm
/api/types.go
→
cmd/kubeadm/app
/api/types.go
View file @
a42ad6a9
File moved
pkg/kubeadm
/cmd/cmd.go
→
cmd/kubeadm/app
/cmd/cmd.go
View file @
a42ad6a9
...
...
@@ -25,7 +25,7 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/util/flag"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
)
func
NewKubeadmCommand
(
f
*
cmdutil
.
Factory
,
in
io
.
Reader
,
out
,
err
io
.
Writer
,
envParams
map
[
string
]
string
)
*
cobra
.
Command
{
...
...
@@ -84,16 +84,11 @@ func NewKubeadmCommand(f *cmdutil.Factory, in io.Reader, out, err io.Writer, env
s
:=
new
(
kubeadmapi
.
KubeadmConfig
)
s
.
EnvParams
=
envParams
//s.InitFlags, s.JoinFlags = new(kubeadmapi.InitFlags), new(kubeadmapi.JoinFlags)
//s.ManualFlags = new(kubeadmapi.ManualFlags)
cmds
.
ResetFlags
()
cmds
.
SetGlobalNormalizationFunc
(
flag
.
WarnWordSepNormalizeFunc
)
cmds
.
AddCommand
(
NewCmdInit
(
out
,
s
))
cmds
.
AddCommand
(
NewCmdJoin
(
out
,
s
))
cmds
.
AddCommand
(
NewCmdManual
(
out
,
s
))
return
cmds
}
pkg/kubeadm
/cmd/init.go
→
cmd/kubeadm/app
/cmd/init.go
View file @
a42ad6a9
...
...
@@ -24,9 +24,9 @@ import (
"github.com/renstrom/dedent"
"github.com/spf13/cobra"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubemaster
"k8s.io/kubernetes/
pkg/kubeadm
/master"
kubeadmutil
"k8s.io/kubernetes/
pkg/kubeadm
/util"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
kubemaster
"k8s.io/kubernetes/
cmd/kubeadm/app
/master"
kubeadmutil
"k8s.io/kubernetes/
cmd/kubeadm/app
/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
netutil
"k8s.io/kubernetes/pkg/util/net"
)
...
...
pkg/kubeadm
/cmd/join.go
→
cmd/kubeadm/app
/cmd/join.go
View file @
a42ad6a9
...
...
@@ -24,9 +24,9 @@ import (
"github.com/renstrom/dedent"
"github.com/spf13/cobra"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubenode
"k8s.io/kubernetes/
pkg/kubeadm
/node"
kubeadmutil
"k8s.io/kubernetes/
pkg/kubeadm
/util"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
kubenode
"k8s.io/kubernetes/
cmd/kubeadm/app
/node"
kubeadmutil
"k8s.io/kubernetes/
cmd/kubeadm/app
/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
)
...
...
pkg/kubeadm
/images/images.go
→
cmd/kubeadm/app
/images/images.go
View file @
a42ad6a9
File moved
cmd/kubeadm/app/kubeadm.go
View file @
a42ad6a9
...
...
@@ -23,7 +23,7 @@ import (
"github.com/spf13/pflag"
"k8s.io/kubernetes/
pkg/kubeadm
/cmd"
"k8s.io/kubernetes/
cmd/kubeadm/app
/cmd"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/util/logs"
)
...
...
@@ -37,7 +37,7 @@ func getEnvParams() map[string]string {
envParams
:=
map
[
string
]
string
{
// TODO(phase1): Mode prefix and host_pki_path to another place as constants, and use them everywhere
// Right now they're used here and there, but not consequently
"kubernetes_dir"
:
"/etc/kubernetes"
,
"kubernetes_dir"
:
"/etc/kubernetes"
,
"host_pki_path"
:
"/etc/kubernetes/pki"
,
"host_etcd_path"
:
"/var/lib/etcd"
,
"hyperkube_image"
:
""
,
...
...
pkg/kubeadm
/master/addons.go
→
cmd/kubeadm/app
/master/addons.go
View file @
a42ad6a9
...
...
@@ -24,8 +24,8 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/resource"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
"k8s.io/kubernetes/
pkg/kubeadm
/images"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
"k8s.io/kubernetes/
cmd/kubeadm/app
/images"
ipallocator
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
"k8s.io/kubernetes/pkg/util/intstr"
)
...
...
pkg/kubeadm
/master/apiclient.go
→
cmd/kubeadm/app
/master/apiclient.go
View file @
a42ad6a9
File moved
pkg/kubeadm
/master/discovery.go
→
cmd/kubeadm/app
/master/discovery.go
View file @
a42ad6a9
...
...
@@ -25,7 +25,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/extensions"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
certutil
"k8s.io/kubernetes/pkg/util/cert"
)
...
...
pkg/kubeadm
/master/kubeconfig.go
→
cmd/kubeadm/app
/master/kubeconfig.go
View file @
a42ad6a9
...
...
@@ -23,8 +23,8 @@ import (
// TODO: "k8s.io/client-go/client/tools/clientcmd/api"
clientcmdapi
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmutil
"k8s.io/kubernetes/
pkg/kubeadm
/util"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
kubeadmutil
"k8s.io/kubernetes/
cmd/kubeadm/app
/util"
certutil
"k8s.io/kubernetes/pkg/util/cert"
)
...
...
pkg/kubeadm
/master/manifests.go
→
cmd/kubeadm/app
/master/manifests.go
View file @
a42ad6a9
...
...
@@ -26,8 +26,8 @@ import (
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/unversioned"
api
"k8s.io/kubernetes/pkg/api/v1"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
"k8s.io/kubernetes/
pkg/kubeadm
/images"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
"k8s.io/kubernetes/
cmd/kubeadm/app
/images"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/util/intstr"
)
...
...
pkg/kubeadm
/master/pki.go
→
cmd/kubeadm/app
/master/pki.go
View file @
a42ad6a9
...
...
@@ -22,7 +22,7 @@ import (
"fmt"
"path"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
ipallocator
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
certutil
"k8s.io/kubernetes/pkg/util/cert"
)
...
...
pkg/kubeadm
/master/tokens.go
→
cmd/kubeadm/app
/master/tokens.go
View file @
a42ad6a9
...
...
@@ -22,8 +22,8 @@ import (
"os"
"path"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmutil
"k8s.io/kubernetes/
pkg/kubeadm
/util"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
kubeadmutil
"k8s.io/kubernetes/
cmd/kubeadm/app
/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/util/uuid"
)
...
...
pkg/kubeadm
/node/csr.go
→
cmd/kubeadm/app
/node/csr.go
View file @
a42ad6a9
...
...
@@ -28,8 +28,8 @@ import (
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmutil
"k8s.io/kubernetes/
pkg/kubeadm
/util"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
kubeadmutil
"k8s.io/kubernetes/
cmd/kubeadm/app
/util"
"k8s.io/kubernetes/pkg/kubelet/util/csr"
certutil
"k8s.io/kubernetes/pkg/util/cert"
)
...
...
pkg/kubeadm
/node/discovery.go
→
cmd/kubeadm/app
/node/discovery.go
View file @
a42ad6a9
...
...
@@ -25,7 +25,7 @@ import (
jose
"github.com/square/go-jose"
clientcmdapi
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
)
func
RetrieveTrustedClusterInfo
(
s
*
kubeadmapi
.
KubeadmConfig
)
(
*
clientcmdapi
.
Config
,
error
)
{
...
...
pkg/kubeadm
/util/kubeconfig.go
→
cmd/kubeadm/app
/util/kubeconfig.go
View file @
a42ad6a9
...
...
@@ -24,7 +24,7 @@ import (
// TODO: "k8s.io/client-go/client/tools/clientcmd/api"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
)
func
CreateBasicClientConfig
(
clusterName
string
,
serverURL
string
,
caCert
[]
byte
)
*
clientcmdapi
.
Config
{
...
...
pkg/kubeadm
/util/tokens.go
→
cmd/kubeadm/app
/util/tokens.go
View file @
a42ad6a9
...
...
@@ -22,7 +22,7 @@ import (
"fmt"
"strings"
kubeadmapi
"k8s.io/kubernetes/
pkg/kubeadm
/api"
kubeadmapi
"k8s.io/kubernetes/
cmd/kubeadm/app
/api"
)
const
(
...
...
pkg/kubeadm/.gitignore
deleted
100644 → 0
View file @
ca8a7a2c
kubeadm
pkg/kubeadm/cmd/manual.go
deleted
100644 → 0
View file @
ca8a7a2c
/*
Copyright 2016 The Kubernetes Authors.
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,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
cmd
import
(
"fmt"
"io"
"net"
"github.com/renstrom/dedent"
"github.com/spf13/cobra"
kubeadmapi
"k8s.io/kubernetes/pkg/kubeadm/api"
kubemaster
"k8s.io/kubernetes/pkg/kubeadm/master"
kubenode
"k8s.io/kubernetes/pkg/kubeadm/node"
kubeadmutil
"k8s.io/kubernetes/pkg/kubeadm/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
netutil
"k8s.io/kubernetes/pkg/util/net"
)
var
(
manual_init_done_msgf
=
dedent
.
Dedent
(
`
Master initialization complete:
* Static pods written and kubelet's kubeconfig written.
* Kubelet should start soon. Try 'systemctl restart kubelet'
or equivalent if it doesn't.
CA cert is written to:
/etc/kubernetes/pki/ca.pem.
**Please copy this file (scp, rsync or through other means) to
all your nodes and then run on them**:
kubeadm manual bootstrap join-node --ca-cert-file <path-to-ca-cert> \
--token %s --api-server-urls https://%s:443/
`
)
manual_join_done_msgf
=
dedent
.
Dedent
(
`
Node join complete:
* Certificate signing request sent to master and response
received.
* Kubelet informed of new secure connection details.
Run 'kubectl get nodes' on the master to see this node join.
`
)
)
// TODO --token here becomes `s.Secrets.BearerToken` and not `s.Secrets.GivenToken`
// may be we should make it the same and ask user to pass dot-separated tokens
// in any of the modes; we could also enable discovery API in the manual mode just
// as well, there is no reason we shouldn't let user mix and match modes, unless
// it is too difficult to support
func
NewCmdManual
(
out
io
.
Writer
,
s
*
kubeadmapi
.
KubeadmConfig
)
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"manual"
,
Short
:
"Advanced, less-automated functionality, for power users."
,
// TODO put example usage in the Long description here
}
cmd
.
AddCommand
(
NewCmdManualBootstrap
(
out
,
s
))
return
cmd
}
func
NewCmdManualBootstrap
(
out
io
.
Writer
,
s
*
kubeadmapi
.
KubeadmConfig
)
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"bootstrap"
,
Short
:
"Manually bootstrap a cluster 'out-of-band'"
,
Long
:
dedent
.
Dedent
(
`
Manually bootstrap a cluster 'out-of-band', by generating and distributing a CA
certificate to all your servers and specifying and (list of) API server URLs.
`
),
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
},
}
cmd
.
AddCommand
(
NewCmdManualBootstrapInitMaster
(
out
,
s
))
cmd
.
AddCommand
(
NewCmdManualBootstrapJoinNode
(
out
,
s
))
return
cmd
}
func
NewCmdManualBootstrapInitMaster
(
out
io
.
Writer
,
s
*
kubeadmapi
.
KubeadmConfig
)
*
cobra
.
Command
{
advertiseAddrs
:=
&
[]
string
{}
cmd
:=
&
cobra
.
Command
{
Use
:
"init-master"
,
Short
:
"Manually bootstrap a master 'out-of-band'"
,
Long
:
dedent
.
Dedent
(
`
Manually bootstrap a master 'out-of-band'.
Will create TLS certificates and set up static pods for Kubernetes master
components.
`
),
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
err
:=
RunManualBootstrapInitMaster
(
out
,
cmd
,
args
,
s
,
advertiseAddrs
)
cmdutil
.
CheckErr
(
err
)
},
}
cmd
.
PersistentFlags
()
.
StringVar
(
&
s
.
Secrets
.
BearerToken
,
"token"
,
""
,
`(optional) Shared secret used to secure bootstrap. Will be generated and displayed if not provided.`
,
)
cmd
.
PersistentFlags
()
.
StringSliceVar
(
advertiseAddrs
,
"api-advertise-addr"
,
nil
,
`(optional) IP address to advertise, in case autodetection fails.`
,
)
cmd
.
PersistentFlags
()
.
StringSliceVar
(
&
s
.
InitFlags
.
API
.
ExternalDNSName
,
"api-external-dns-name"
,
[]
string
{},
`(optional) DNS name to advertise, in case you have configured one yourself.`
,
)
cmd
.
PersistentFlags
()
.
IPNetVar
(
&
s
.
InitFlags
.
Services
.
CIDR
,
"service-cidr"
,
*
kubeadmapi
.
DefaultServicesCIDR
,
`(optional) use alterantive range of IP address for service VIPs, e.g. "10.16.0.0/12"`
,
)
cmd
.
PersistentFlags
()
.
StringVar
(
&
s
.
InitFlags
.
Services
.
DNSDomain
,
"service-dns-domain"
,
"cluster.local"
,
`(optional) use alterantive domain name for services, e.g. "myorg.internal"`
,
)
cmd
.
PersistentFlags
()
.
BoolVar
(
&
s
.
InitFlags
.
Schedulable
,
"schedule-workload"
,
false
,
`(optional) allow to schedule workload to the node`
,
)
return
cmd
}
func
RunManualBootstrapInitMaster
(
out
io
.
Writer
,
cmd
*
cobra
.
Command
,
args
[]
string
,
s
*
kubeadmapi
.
KubeadmConfig
,
advertiseAddrs
*
[]
string
)
error
{
// Auto-detect the IP
if
len
(
*
advertiseAddrs
)
==
0
{
// TODO(phase1+) perhaps we could actually grab eth0 and eth1
ip
,
err
:=
netutil
.
ChooseHostInterface
()
if
err
!=
nil
{
return
err
}
s
.
InitFlags
.
API
.
AdvertiseAddrs
=
[]
net
.
IP
{
ip
}
}
else
{
for
_
,
i
:=
range
*
advertiseAddrs
{
addr
:=
net
.
ParseIP
(
i
)
if
addr
==
nil
{
return
fmt
.
Errorf
(
"<cmd/init> failed to parse flag (%q) as an IP address"
,
"--api-advertise-addr="
+
i
)
}
s
.
InitFlags
.
API
.
AdvertiseAddrs
=
append
(
s
.
InitFlags
.
API
.
AdvertiseAddrs
,
addr
)
}
}
if
err
:=
kubemaster
.
CreateTokenAuthFile
(
s
);
err
!=
nil
{
return
err
}
if
err
:=
kubemaster
.
WriteStaticPodManifests
(
s
);
err
!=
nil
{
return
err
}
caKey
,
caCert
,
err
:=
kubemaster
.
CreatePKIAssets
(
s
)
if
err
!=
nil
{
return
err
}
kubeconfigs
,
err
:=
kubemaster
.
CreateCertsAndConfigForClients
(
s
,
[]
string
{
"kubelet"
,
"admin"
},
caKey
,
caCert
)
if
err
!=
nil
{
return
err
}
for
name
,
kubeconfig
:=
range
kubeconfigs
{
if
err
:=
kubeadmutil
.
WriteKubeconfigIfNotExists
(
s
,
name
,
kubeconfig
);
err
!=
nil
{
return
err
}
}
// TODO we have most of cmd/init functionality here, except for `CreateDiscoveryDeploymentAndSecret()`
// it may be a good idea to just merge the two commands into one, and it's something we have started talking
// about, the only question is where disco service should be an opt-out...
client
,
err
:=
kubemaster
.
CreateClientAndWaitForAPI
(
kubeconfigs
[
"admin"
])
if
err
!=
nil
{
return
err
}
if
err
:=
kubemaster
.
UpdateMasterRoleLabelsAndTaints
(
client
,
s
.
Schedulable
);
err
!=
nil
{
return
err
}
if
err
:=
kubemaster
.
CreateEssentialAddons
(
s
,
client
);
err
!=
nil
{
return
err
}
// TODO use templates to reference struct fields directly as order of args is fragile
fmt
.
Fprintf
(
out
,
manual_init_done_msgf
,
s
.
Secrets
.
BearerToken
,
s
.
InitFlags
.
API
.
AdvertiseAddrs
[
0
]
.
String
(),
)
return
nil
}
func
NewCmdManualBootstrapJoinNode
(
out
io
.
Writer
,
s
*
kubeadmapi
.
KubeadmConfig
)
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"join-node"
,
Short
:
"Manually bootstrap a node 'out-of-band', joining it into a cluster with extant control plane"
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
err
:=
RunManualBootstrapJoinNode
(
out
,
cmd
,
args
,
s
)
cmdutil
.
CheckErr
(
err
)
},
}
cmd
.
PersistentFlags
()
.
StringVarP
(
&
s
.
ManualFlags
.
CaCertFile
,
"ca-cert-file"
,
""
,
""
,
`Path to a CA cert file in PEM format. The same CA cert must be distributed to
all servers.`
)
cmd
.
PersistentFlags
()
.
StringVarP
(
&
s
.
ManualFlags
.
ApiServerURLs
,
"api-server-urls"
,
""
,
""
,
`Comma separated list of API server URLs. Typically this might be just
https://<address-of-master>:8080/`
)
cmd
.
PersistentFlags
()
.
StringVarP
(
&
s
.
ManualFlags
.
BearerToken
,
"token"
,
""
,
""
,
`Shared secret used to secure bootstrap. Must match output of 'init-master'.`
)
return
cmd
}
func
RunManualBootstrapJoinNode
(
out
io
.
Writer
,
cmd
*
cobra
.
Command
,
args
[]
string
,
s
*
kubeadmapi
.
KubeadmConfig
)
error
{
if
s
.
ManualFlags
.
CaCertFile
==
""
{
fmt
.
Fprintf
(
out
,
"Must specify --ca-cert-file (see --help)
\n
"
)
return
nil
}
if
s
.
ManualFlags
.
ApiServerURLs
==
""
{
fmt
.
Fprintf
(
out
,
"Must specify --api-server-urls (see --help)
\n
"
)
return
nil
}
kubeconfig
,
err
:=
kubenode
.
PerformTLSBootstrapFromConfig
(
s
)
if
err
!=
nil
{
fmt
.
Fprintf
(
out
,
"Failed to perform TLS bootstrap: %s
\n
"
,
err
)
return
err
}
err
=
kubeadmutil
.
WriteKubeconfigIfNotExists
(
s
,
"kubelet"
,
kubeconfig
)
if
err
!=
nil
{
fmt
.
Fprintf
(
out
,
"Unable to write config for node:
\n
%s
\n
"
,
err
)
return
err
}
fmt
.
Fprintf
(
out
,
manual_join_done_msgf
)
return
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment