Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Chu Peng 楚鹏
minikube
提交
daec030c
M
minikube
项目概览
Chu Peng 楚鹏
/
minikube
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minikube
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
daec030c
编写于
3月 22, 2019
作者:
Z
Zhongcheng Lao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Render asset template when enabling/disabling addon
上级
7ae07410
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
57 addition
and
85 deletion
+57
-85
cmd/minikube/cmd/config/util.go
cmd/minikube/cmd/config/util.go
+31
-2
pkg/minikube/assets/addons.go
pkg/minikube/assets/addons.go
+11
-0
pkg/minikube/bootstrapper/kubeadm/kubeadm.go
pkg/minikube/bootstrapper/kubeadm/kubeadm.go
+8
-8
pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go
pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go
+5
-74
pkg/minikube/constants/constants.go
pkg/minikube/constants/constants.go
+1
-1
test/integration/util/util.go
test/integration/util/util.go
+1
-0
未找到文件。
cmd/minikube/cmd/config/util.go
浏览文件 @
daec030c
...
...
@@ -18,6 +18,7 @@ package config
import
(
"fmt"
"os"
"strconv"
"strings"
...
...
@@ -26,6 +27,7 @@ import (
"k8s.io/minikube/pkg/minikube/cluster"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/machine"
"k8s.io/minikube/pkg/minikube/storageclass"
)
...
...
@@ -123,15 +125,42 @@ func EnableOrDisableAddon(name string, val string) error {
if
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"command runner"
)
}
cfg
,
err
:=
config
.
Load
()
if
err
!=
nil
&&
!
os
.
IsNotExist
(
err
)
{
exit
.
WithCode
(
exit
.
Data
,
"Unable to load config: %v"
,
err
)
}
data
:=
assets
.
GenerateTemplateData
(
cfg
.
KubernetesConfig
)
if
enable
{
for
_
,
addon
:=
range
addon
.
Assets
{
if
err
:=
cmd
.
Copy
(
addon
);
err
!=
nil
{
var
addonFile
assets
.
CopyableFile
if
addon
.
IsTemplate
()
{
addonFile
,
err
=
addon
.
Evaluate
(
data
)
if
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"evaluate bundled addon %s asset"
,
addon
.
GetAssetName
())
}
}
else
{
addonFile
=
addon
}
if
err
:=
cmd
.
Copy
(
addonFile
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"enabling addon %s"
,
addon
.
AssetName
)
}
}
}
else
{
for
_
,
addon
:=
range
addon
.
Assets
{
if
err
:=
cmd
.
Remove
(
addon
);
err
!=
nil
{
var
addonFile
assets
.
CopyableFile
if
addon
.
IsTemplate
()
{
addonFile
,
err
=
addon
.
Evaluate
(
data
)
if
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"evaluate bundled addon %s asset"
,
addon
.
GetAssetName
())
}
}
else
{
addonFile
=
addon
}
if
err
:=
cmd
.
Remove
(
addonFile
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"disabling addon %s"
,
addon
.
AssetName
)
}
}
...
...
pkg/minikube/assets/addons.go
浏览文件 @
daec030c
...
...
@@ -377,3 +377,14 @@ func addMinikubeDirToAssets(basedir, vmpath string, assets *[]CopyableFile) erro
}
return
nil
}
// GenerateTemplateData generates template data for template assets
func
GenerateTemplateData
(
cfg
config
.
KubernetesConfig
)
interface
{}
{
opts
:=
struct
{
ImageRepository
string
}{
ImageRepository
:
cfg
.
ImageRepository
,
}
return
opts
}
pkg/minikube/bootstrapper/kubeadm/kubeadm.go
浏览文件 @
daec030c
...
...
@@ -432,7 +432,7 @@ func (k *Bootstrapper) UpdateCluster(cfg config.KubernetesConfig) error {
if
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"runtime"
)
}
kubeadmCfg
,
opts
,
err
:=
generateConfig
(
cfg
,
r
)
kubeadmCfg
,
err
:=
generateConfig
(
cfg
,
r
)
if
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"generating kubeadm cfg"
)
}
...
...
@@ -480,7 +480,7 @@ func (k *Bootstrapper) UpdateCluster(cfg config.KubernetesConfig) error {
return
errors
.
Wrap
(
err
,
"downloading binaries"
)
}
if
err
:=
addAddons
(
&
files
,
opts
);
err
!=
nil
{
if
err
:=
addAddons
(
&
files
,
assets
.
GenerateTemplateData
(
cfg
)
);
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"adding addons"
)
}
...
...
@@ -501,22 +501,22 @@ sudo systemctl start kubelet
return
nil
}
func
generateConfig
(
k8s
config
.
KubernetesConfig
,
r
cruntime
.
Manager
)
(
string
,
interface
{},
error
)
{
func
generateConfig
(
k8s
config
.
KubernetesConfig
,
r
cruntime
.
Manager
)
(
string
,
error
)
{
version
,
err
:=
ParseKubernetesVersion
(
k8s
.
KubernetesVersion
)
if
err
!=
nil
{
return
""
,
nil
,
errors
.
Wrap
(
err
,
"parsing kubernetes version"
)
return
""
,
errors
.
Wrap
(
err
,
"parsing kubernetes version"
)
}
// parses a map of the feature gates for kubeadm and component
kubeadmFeatureArgs
,
componentFeatureArgs
,
err
:=
ParseFeatureArgs
(
k8s
.
FeatureGates
)
if
err
!=
nil
{
return
""
,
nil
,
errors
.
Wrap
(
err
,
"parses feature gate config for kubeadm and component"
)
return
""
,
errors
.
Wrap
(
err
,
"parses feature gate config for kubeadm and component"
)
}
// generates a map of component to extra args for apiserver, controller-manager, and scheduler
extraComponentConfig
,
err
:=
NewComponentExtraArgs
(
k8s
.
ExtraOptions
,
version
,
componentFeatureArgs
)
if
err
!=
nil
{
return
""
,
nil
,
errors
.
Wrap
(
err
,
"generating extra component config for kubeadm"
)
return
""
,
errors
.
Wrap
(
err
,
"generating extra component config for kubeadm"
)
}
// In case of no port assigned, use util.APIServerPort
...
...
@@ -571,10 +571,10 @@ func generateConfig(k8s config.KubernetesConfig, r cruntime.Manager) (string, in
configTmpl
=
configTmplV1Beta1
}
if
err
:=
configTmpl
.
Execute
(
&
b
,
opts
);
err
!=
nil
{
return
""
,
nil
,
err
return
""
,
err
}
return
b
.
String
(),
opts
,
nil
return
b
.
String
(),
nil
}
func
maybeDownloadAndCache
(
binary
,
version
string
)
(
string
,
error
)
{
...
...
pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go
浏览文件 @
daec030c
...
...
@@ -121,7 +121,6 @@ func TestGenerateConfig(t *testing.T) {
description
string
cfg
config
.
KubernetesConfig
expectedCfg
string
expectedOpts
interface
{}
shouldErr
bool
}{
{
...
...
@@ -148,37 +147,6 @@ nodeName: minikube
apiServerExtraArgs:
admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
`
,
expectedOpts
:
struct
{
CertDir
string
ServiceCIDR
string
AdvertiseAddress
string
APIServerPort
int
KubernetesVersion
string
EtcdDataDir
string
NodeName
string
CRISocket
string
ImageRepository
string
ExtraArgs
[]
ComponentExtraArgs
FeatureArgs
map
[
string
]
bool
NoTaintMaster
bool
}{
CertDir
:
util
.
DefaultCertPath
,
ServiceCIDR
:
util
.
DefaultServiceCIDR
,
AdvertiseAddress
:
"192.168.1.100"
,
APIServerPort
:
8443
,
KubernetesVersion
:
"v1.10.0"
,
EtcdDataDir
:
"/data/minikube"
,
NodeName
:
"minikube"
,
ExtraArgs
:
[]
ComponentExtraArgs
{
{
Component
:
"apiServer"
,
Options
:
map
[
string
]
string
{
"admission-control"
:
"Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
,
},
},
},
FeatureArgs
:
map
[
string
]
bool
{},
NoTaintMaster
:
true
},
},
{
description
:
"extra args all components"
,
...
...
@@ -471,38 +439,6 @@ imageRepository: docker-proxy-image.io/google_containers
apiServerExtraArgs:
admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
`
,
expectedOpts
:
struct
{
CertDir
string
ServiceCIDR
string
AdvertiseAddress
string
APIServerPort
int
KubernetesVersion
string
EtcdDataDir
string
NodeName
string
CRISocket
string
ImageRepository
string
ExtraArgs
[]
ComponentExtraArgs
FeatureArgs
map
[
string
]
bool
NoTaintMaster
bool
}{
CertDir
:
util
.
DefaultCertPath
,
ServiceCIDR
:
util
.
DefaultServiceCIDR
,
AdvertiseAddress
:
"192.168.1.100"
,
APIServerPort
:
8443
,
KubernetesVersion
:
"v1.10.0"
,
EtcdDataDir
:
"/data/minikube"
,
NodeName
:
"minikube"
,
ExtraArgs
:
[]
ComponentExtraArgs
{
{
Component
:
"apiServer"
,
Options
:
map
[
string
]
string
{
"admission-control"
:
"Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
,
},
},
},
ImageRepository
:
"docker-proxy-image.io/google_containers"
,
FeatureArgs
:
map
[
string
]
bool
{},
NoTaintMaster
:
true
},
},
}
...
...
@@ -513,7 +449,7 @@ apiServerExtraArgs:
}
t
.
Run
(
test
.
description
,
func
(
t
*
testing
.
T
)
{
gotCfg
,
gotOpts
,
err
:=
generateConfig
(
test
.
cfg
,
runtime
)
gotCfg
,
err
:=
generateConfig
(
test
.
cfg
,
runtime
)
if
err
!=
nil
&&
!
test
.
shouldErr
{
t
.
Errorf
(
"got unexpected error generating config: %v"
,
err
)
return
...
...
@@ -529,11 +465,6 @@ apiServerExtraArgs:
if
diff
:=
cmp
.
Diff
(
gotSplit
,
wantSplit
);
diff
!=
""
{
t
.
Errorf
(
"unexpected diff: (-want +got)
\n
%s
\n
got: %s
\n
"
,
diff
,
gotCfg
)
}
if
test
.
expectedOpts
!=
nil
{
if
diff
:=
cmp
.
Diff
(
test
.
expectedOpts
,
gotOpts
);
diff
!=
""
{
t
.
Errorf
(
"opts differ: (-want +got)
\n
%s"
,
diff
)
}
}
})
}
}
pkg/minikube/constants/constants.go
浏览文件 @
daec030c
test/integration/util/util.go
浏览文件 @
daec030c
...
...
@@ -191,6 +191,7 @@ func (m *MinikubeRunner) RunDaemon2(command string) (*exec.Cmd, *bufio.Reader, *
}
return
cmd
,
bufio
.
NewReader
(
stdoutPipe
),
bufio
.
NewReader
(
stderrPipe
)
}
// SSH returns the output of running a command using SSH
func
(
m
*
MinikubeRunner
)
SSH
(
command
string
)
(
string
,
error
)
{
path
,
_
:=
filepath
.
Abs
(
m
.
BinaryPath
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录