Merge pull request #1764 from wuyingjun-lucky/debug_fot
feature_1753:support kube-image-mirror-country and kube-image-registry
This commit is contained in:
commit
a35672271f
|
@ -45,7 +45,9 @@ func NewCmdInit(cmdOut io.Writer, parentCommand string) *cobra.Command {
|
||||||
klog.Infof("No default release version found. build version: %s", version.Get().String())
|
klog.Infof("No default release version found. build version: %s", version.Get().String())
|
||||||
releaseVer = &version.ReleaseVersion{} // initialize to avoid panic
|
releaseVer = &version.ReleaseVersion{} // initialize to avoid panic
|
||||||
}
|
}
|
||||||
|
// kube image registry
|
||||||
|
flags.StringVarP(&opts.KubeImageMirrorCountry, "kube-image-mirror-country", "", "", "Country code of the kube image registry to be used. For Chinese mainland users, set it to cn")
|
||||||
|
flags.StringVarP(&opts.KubeImageRegistry, "kube-image-registry", "", "", "Kube image registry. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers to override default kube image registry")
|
||||||
// cert
|
// cert
|
||||||
flags.StringVar(&opts.ExternalIP, "cert-external-ip", "", "the external IP of Karmada certificate (e.g 192.168.1.2,172.16.1.2)")
|
flags.StringVar(&opts.ExternalIP, "cert-external-ip", "", "the external IP of Karmada certificate (e.g 192.168.1.2,172.16.1.2)")
|
||||||
flags.StringVar(&opts.ExternalDNS, "cert-external-dns", "", "the external DNS of Karmada certificate (e.g localhost,localhost.com)")
|
flags.StringVar(&opts.ExternalDNS, "cert-external-dns", "", "the external DNS of Karmada certificate (e.g localhost,localhost.com)")
|
||||||
|
@ -57,7 +59,7 @@ func NewCmdInit(cmdOut io.Writer, parentCommand string) *cobra.Command {
|
||||||
// etcd
|
// etcd
|
||||||
flags.StringVarP(&opts.EtcdStorageMode, "etcd-storage-mode", "", "emptyDir",
|
flags.StringVarP(&opts.EtcdStorageMode, "etcd-storage-mode", "", "emptyDir",
|
||||||
"etcd data storage mode(emptyDir,hostPath,PVC). value is PVC, specify --storage-classes-name")
|
"etcd data storage mode(emptyDir,hostPath,PVC). value is PVC, specify --storage-classes-name")
|
||||||
flags.StringVarP(&opts.EtcdImage, "etcd-image", "", "k8s.gcr.io/etcd:3.5.1-0", "etcd image")
|
flags.StringVarP(&opts.EtcdImage, "etcd-image", "", "", "etcd image")
|
||||||
flags.StringVarP(&opts.EtcdInitImage, "etcd-init-image", "", "docker.io/alpine:3.15.1", "etcd init container image")
|
flags.StringVarP(&opts.EtcdInitImage, "etcd-init-image", "", "docker.io/alpine:3.15.1", "etcd init container image")
|
||||||
flags.Int32VarP(&opts.EtcdReplicas, "etcd-replicas", "", 1, "etcd replica set, cluster 3,5...singular")
|
flags.Int32VarP(&opts.EtcdReplicas, "etcd-replicas", "", 1, "etcd replica set, cluster 3,5...singular")
|
||||||
flags.StringVarP(&opts.EtcdHostDataPath, "etcd-data", "", "/var/lib/karmada-etcd", "etcd data path,valid in hostPath mode.")
|
flags.StringVarP(&opts.EtcdHostDataPath, "etcd-data", "", "/var/lib/karmada-etcd", "etcd data path,valid in hostPath mode.")
|
||||||
|
@ -68,11 +70,11 @@ func NewCmdInit(cmdOut io.Writer, parentCommand string) *cobra.Command {
|
||||||
flags.StringVar(&opts.CRDs, "crds", crdURL, "Karmada crds resource.(local file e.g. --crds /root/crds.tar.gz)")
|
flags.StringVar(&opts.CRDs, "crds", crdURL, "Karmada crds resource.(local file e.g. --crds /root/crds.tar.gz)")
|
||||||
flags.Int32VarP(&opts.KarmadaAPIServerNodePort, "port", "p", 32443, "Karmada apiserver service node port")
|
flags.Int32VarP(&opts.KarmadaAPIServerNodePort, "port", "p", 32443, "Karmada apiserver service node port")
|
||||||
flags.StringVarP(&opts.KarmadaDataPath, "karmada-data", "d", "/etc/karmada", "karmada data path. kubeconfig cert and crds files")
|
flags.StringVarP(&opts.KarmadaDataPath, "karmada-data", "d", "/etc/karmada", "karmada data path. kubeconfig cert and crds files")
|
||||||
flags.StringVarP(&opts.KarmadaAPIServerImage, "karmada-apiserver-image", "", "k8s.gcr.io/kube-apiserver:v1.21.7", "Kubernetes apiserver image")
|
flags.StringVarP(&opts.KarmadaAPIServerImage, "karmada-apiserver-image", "", "", "Kubernetes apiserver image")
|
||||||
flags.Int32VarP(&opts.KarmadaAPIServerReplicas, "karmada-apiserver-replicas", "", 1, "karmada apiserver replica set")
|
flags.Int32VarP(&opts.KarmadaAPIServerReplicas, "karmada-apiserver-replicas", "", 1, "karmada apiserver replica set")
|
||||||
flags.StringVarP(&opts.KarmadaSchedulerImage, "karmada-scheduler-image", "", fmt.Sprintf("swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-scheduler:%s", releaseVer.PatchRelease()), "karmada scheduler image")
|
flags.StringVarP(&opts.KarmadaSchedulerImage, "karmada-scheduler-image", "", fmt.Sprintf("swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-scheduler:%s", releaseVer.PatchRelease()), "karmada scheduler image")
|
||||||
flags.Int32VarP(&opts.KarmadaSchedulerReplicas, "karmada-scheduler-replicas", "", 1, "karmada scheduler replica set")
|
flags.Int32VarP(&opts.KarmadaSchedulerReplicas, "karmada-scheduler-replicas", "", 1, "karmada scheduler replica set")
|
||||||
flags.StringVarP(&opts.KubeControllerManagerImage, "karmada-kube-controller-manager-image", "", "k8s.gcr.io/kube-controller-manager:v1.21.7", "Kubernetes controller manager image")
|
flags.StringVarP(&opts.KubeControllerManagerImage, "karmada-kube-controller-manager-image", "", "", "Kubernetes controller manager image")
|
||||||
flags.Int32VarP(&opts.KubeControllerManagerReplicas, "karmada-kube-controller-manager-replicas", "", 1, "karmada kube controller manager replica set")
|
flags.Int32VarP(&opts.KubeControllerManagerReplicas, "karmada-kube-controller-manager-replicas", "", 1, "karmada kube controller manager replica set")
|
||||||
flags.StringVarP(&opts.KarmadaControllerManagerImage, "karmada-controller-manager-image", "", fmt.Sprintf("swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-controller-manager:%s", releaseVer.PatchRelease()), "karmada controller manager image")
|
flags.StringVarP(&opts.KarmadaControllerManagerImage, "karmada-controller-manager-image", "", fmt.Sprintf("swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-controller-manager:%s", releaseVer.PatchRelease()), "karmada controller manager image")
|
||||||
flags.Int32VarP(&opts.KarmadaControllerManagerReplicas, "karmada-controller-manager-replicas", "", 1, "karmada controller manager replica set")
|
flags.Int32VarP(&opts.KarmadaControllerManagerReplicas, "karmada-controller-manager-replicas", "", 1, "karmada controller manager replica set")
|
||||||
|
@ -90,6 +92,12 @@ func initExample(parentCommand string) string {
|
||||||
# The karmada-apiserver binds the master node's IP by default` + "\n" +
|
# The karmada-apiserver binds the master node's IP by default` + "\n" +
|
||||||
fmt.Sprintf("%s init", parentCommand) + `
|
fmt.Sprintf("%s init", parentCommand) + `
|
||||||
|
|
||||||
|
# China mainland registry mirror can be specified by using kube-image-mirror-country` + "\n" +
|
||||||
|
fmt.Sprintf("%s init --kube-image-mirror-country=cn", parentCommand) + `
|
||||||
|
|
||||||
|
# Kube registry can be specified by using kube-image-registry` + "\n" +
|
||||||
|
fmt.Sprintf("%s init --kube-image-registry=registry.cn-hangzhou.aliyuncs.com/google_containers", parentCommand) + `
|
||||||
|
|
||||||
# Specify the URL to download CRD tarball` + "\n" +
|
# Specify the URL to download CRD tarball` + "\n" +
|
||||||
fmt.Sprintf("%s init --crds https://github.com/karmada-io/karmada/releases/download/v1.1.0/crds.tar.gz", parentCommand) + `
|
fmt.Sprintf("%s init --crds https://github.com/karmada-io/karmada/releases/download/v1.1.0/crds.tar.gz", parentCommand) + `
|
||||||
|
|
||||||
|
|
|
@ -26,19 +26,32 @@ import (
|
||||||
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
|
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var certList = []string{
|
var (
|
||||||
options.CaCertAndKeyName,
|
imageRepositories = map[string]string{
|
||||||
options.EtcdServerCertAndKeyName,
|
"global": "k8s.gcr.io",
|
||||||
options.EtcdClientCertAndKeyName,
|
"cn": "registry.cn-hangzhou.aliyuncs.com/google_containers",
|
||||||
options.KarmadaCertAndKeyName,
|
}
|
||||||
options.FrontProxyCaCertAndKeyName,
|
|
||||||
options.FrontProxyClientCertAndKeyName,
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultKubeConfig = filepath.Join(homeDir(), ".kube", "config")
|
certList = []string{
|
||||||
|
options.CaCertAndKeyName,
|
||||||
|
options.EtcdServerCertAndKeyName,
|
||||||
|
options.EtcdClientCertAndKeyName,
|
||||||
|
options.KarmadaCertAndKeyName,
|
||||||
|
options.FrontProxyCaCertAndKeyName,
|
||||||
|
options.FrontProxyClientCertAndKeyName,
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultKubeConfig = filepath.Join(homeDir(), ".kube", "config")
|
||||||
|
|
||||||
|
defaultEtcdImage = "etcd:3.5.1-0"
|
||||||
|
defaultKubeAPIServerImage = "kube-apiserver:v1.21.7"
|
||||||
|
defaultKubeControllerManagerImage = "kube-controller-manager:v1.21.7"
|
||||||
|
)
|
||||||
|
|
||||||
// CommandInitOption holds all flags options for init.
|
// CommandInitOption holds all flags options for init.
|
||||||
type CommandInitOption struct {
|
type CommandInitOption struct {
|
||||||
|
KubeImageRegistry string
|
||||||
|
KubeImageMirrorCountry string
|
||||||
EtcdImage string
|
EtcdImage string
|
||||||
EtcdReplicas int32
|
EtcdReplicas int32
|
||||||
EtcdInitImage string
|
EtcdInitImage string
|
||||||
|
@ -448,6 +461,49 @@ func (i *CommandInitOption) RunInit(_ io.Writer, parentCommand string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get kube components registry
|
||||||
|
func (i *CommandInitOption) kubeRegistry() string {
|
||||||
|
registry := i.KubeImageRegistry
|
||||||
|
mirrorCountry := strings.ToLower(i.KubeImageMirrorCountry)
|
||||||
|
|
||||||
|
if registry != "" {
|
||||||
|
return registry
|
||||||
|
}
|
||||||
|
|
||||||
|
if mirrorCountry != "" {
|
||||||
|
value, ok := imageRepositories[mirrorCountry]
|
||||||
|
if ok {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return imageRepositories["global"]
|
||||||
|
}
|
||||||
|
|
||||||
|
// get kube-apiserver image
|
||||||
|
func (i *CommandInitOption) kubeAPIServerImage() string {
|
||||||
|
if i.KarmadaAPIServerImage != "" {
|
||||||
|
return i.KarmadaAPIServerImage
|
||||||
|
}
|
||||||
|
return i.kubeRegistry() + "/" + defaultKubeAPIServerImage
|
||||||
|
}
|
||||||
|
|
||||||
|
// get kube-controller-manager image
|
||||||
|
func (i *CommandInitOption) kubeControllerManagerImage() string {
|
||||||
|
if i.KubeControllerManagerImage != "" {
|
||||||
|
return i.KubeControllerManagerImage
|
||||||
|
}
|
||||||
|
return i.kubeRegistry() + "/" + defaultKubeControllerManagerImage
|
||||||
|
}
|
||||||
|
|
||||||
|
// get etcd image
|
||||||
|
func (i *CommandInitOption) etcdImage() string {
|
||||||
|
if i.EtcdImage != "" {
|
||||||
|
return i.EtcdImage
|
||||||
|
}
|
||||||
|
return i.kubeRegistry() + "/" + defaultEtcdImage
|
||||||
|
}
|
||||||
|
|
||||||
func homeDir() string {
|
func homeDir() string {
|
||||||
if h := os.Getenv("HOME"); h != "" {
|
if h := os.Getenv("HOME"); h != "" {
|
||||||
return h
|
return h
|
||||||
|
|
|
@ -160,7 +160,7 @@ func (i *CommandInitOption) makeKarmadaAPIServerDeployment() *appsv1.Deployment
|
||||||
Containers: []corev1.Container{
|
Containers: []corev1.Container{
|
||||||
{
|
{
|
||||||
Name: karmadaAPIServerDeploymentAndServiceName,
|
Name: karmadaAPIServerDeploymentAndServiceName,
|
||||||
Image: i.KarmadaAPIServerImage,
|
Image: i.kubeAPIServerImage(),
|
||||||
Command: i.karmadaAPIServerContainerCommand(),
|
Command: i.karmadaAPIServerContainerCommand(),
|
||||||
Ports: []corev1.ContainerPort{
|
Ports: []corev1.ContainerPort{
|
||||||
{
|
{
|
||||||
|
@ -255,7 +255,7 @@ func (i *CommandInitOption) makeKarmadaKubeControllerManagerDeployment() *appsv1
|
||||||
Containers: []corev1.Container{
|
Containers: []corev1.Container{
|
||||||
{
|
{
|
||||||
Name: kubeControllerManagerClusterRoleAndDeploymentAndServiceName,
|
Name: kubeControllerManagerClusterRoleAndDeploymentAndServiceName,
|
||||||
Image: i.KubeControllerManagerImage,
|
Image: i.kubeControllerManagerImage(),
|
||||||
Command: []string{
|
Command: []string{
|
||||||
"kube-controller-manager",
|
"kube-controller-manager",
|
||||||
"--allocate-node-cidrs=true",
|
"--allocate-node-cidrs=true",
|
||||||
|
|
|
@ -234,7 +234,7 @@ func (i *CommandInitOption) makeETCDStatefulSet() *appsv1.StatefulSet {
|
||||||
Containers: []corev1.Container{
|
Containers: []corev1.Container{
|
||||||
{
|
{
|
||||||
Name: etcdStatefulSetAndServiceName,
|
Name: etcdStatefulSetAndServiceName,
|
||||||
Image: i.EtcdImage,
|
Image: i.etcdImage(),
|
||||||
Command: []string{
|
Command: []string{
|
||||||
"/usr/local/bin/etcd",
|
"/usr/local/bin/etcd",
|
||||||
fmt.Sprintf("--config-file=%s/%s", etcdContainerConfigDataMountPath, etcdConfigName),
|
fmt.Sprintf("--config-file=%s/%s", etcdContainerConfigDataMountPath, etcdConfigName),
|
||||||
|
|
Loading…
Reference in New Issue