github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/pkg/apis/componentconfig/edgesite/v1alpha1/default.go (about)

     1  /*
     2  Copyright 2019 The KubeEdge Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8     http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package v1alpha1
    18  
    19  import (
    20  	"os"
    21  	"path"
    22  
    23  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    24  
    25  	"github.com/kubeedge/kubeedge/common/constants"
    26  	cloudcoreconfig "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/cloudcore/v1alpha1"
    27  	edgecoreconfig "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha1"
    28  	metaconfig "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/meta/v1alpha1"
    29  	"github.com/kubeedge/kubeedge/pkg/util"
    30  )
    31  
    32  // NewDefaultEdgeSiteConfig returns a full EdgeSiteConfig object
    33  func NewDefaultEdgeSiteConfig() *EdgeSiteConfig {
    34  	hostnameOverride, err := os.Hostname()
    35  	if err != nil {
    36  		hostnameOverride = constants.DefaultHostnameOverride
    37  	}
    38  	localIP, _ := util.GetLocalIP(hostnameOverride)
    39  	return &EdgeSiteConfig{
    40  		TypeMeta: metav1.TypeMeta{
    41  			Kind:       Kind,
    42  			APIVersion: path.Join(GroupName, APIVersion),
    43  		},
    44  		DataBase: &edgecoreconfig.DataBase{
    45  			DriverName: DataBaseDriverName,
    46  			AliasName:  DataBaseAliasName,
    47  			DataSource: DataBaseDataSource,
    48  		},
    49  		KubeAPIConfig: &cloudcoreconfig.KubeAPIConfig{
    50  			Master:      "",
    51  			ContentType: constants.DefaultKubeContentType,
    52  			QPS:         constants.DefaultKubeQPS,
    53  			Burst:       constants.DefaultKubeBurst,
    54  			KubeConfig:  constants.DefaultKubeConfig,
    55  		},
    56  		Modules: &Modules{
    57  			EdgeController: &cloudcoreconfig.EdgeController{
    58  				Enable:              true,
    59  				NodeUpdateFrequency: 10,
    60  				Buffer: &cloudcoreconfig.EdgeControllerBuffer{
    61  					UpdatePodStatus:            constants.DefaultUpdatePodStatusBuffer,
    62  					UpdateNodeStatus:           constants.DefaultUpdateNodeStatusBuffer,
    63  					QueryConfigmap:             constants.DefaultQueryConfigMapBuffer,
    64  					QuerySecret:                constants.DefaultQuerySecretBuffer,
    65  					QueryService:               constants.DefaultQueryServiceBuffer,
    66  					QueryEndpoints:             constants.DefaultQueryEndpointsBuffer,
    67  					PodEvent:                   constants.DefaultPodEventBuffer,
    68  					ConfigmapEvent:             constants.DefaultConfigMapEventBuffer,
    69  					SecretEvent:                constants.DefaultSecretEventBuffer,
    70  					ServiceEvent:               constants.DefaultServiceEventBuffer,
    71  					EndpointsEvent:             constants.DefaultEndpointsEventBuffer,
    72  					QueryPersistentVolume:      constants.DefaultQueryPersistentVolumeBuffer,
    73  					QueryPersistentVolumeClaim: constants.DefaultQueryPersistentVolumeClaimBuffer,
    74  					QueryVolumeAttachment:      constants.DefaultQueryVolumeAttachmentBuffer,
    75  					QueryNode:                  constants.DefaultQueryNodeBuffer,
    76  					UpdateNode:                 constants.DefaultUpdateNodeBuffer,
    77  				},
    78  				Context: &cloudcoreconfig.EdgeControllerContext{
    79  					SendModule:     metaconfig.ModuleNameMetaManager,
    80  					ReceiveModule:  metaconfig.ModuleNameEdgeController,
    81  					ResponseModule: metaconfig.ModuleNameMetaManager,
    82  				},
    83  				Load: &cloudcoreconfig.EdgeControllerLoad{
    84  					UpdatePodStatusWorkers:            constants.DefaultUpdatePodStatusWorkers,
    85  					UpdateNodeStatusWorkers:           constants.DefaultUpdateNodeStatusWorkers,
    86  					QueryConfigmapWorkers:             constants.DefaultQueryConfigMapWorkers,
    87  					QuerySecretWorkers:                constants.DefaultQuerySecretWorkers,
    88  					QueryServiceWorkers:               constants.DefaultQueryServiceWorkers,
    89  					QueryEndpointsWorkers:             constants.DefaultQueryEndpointsWorkers,
    90  					QueryPersistentVolumeWorkers:      constants.DefaultQueryPersistentVolumeWorkers,
    91  					QueryPersistentVolumeClaimWorkers: constants.DefaultQueryPersistentVolumeClaimWorkers,
    92  					QueryVolumeAttachmentWorkers:      constants.DefaultQueryVolumeAttachmentWorkers,
    93  					QueryNodeWorkers:                  constants.DefaultQueryNodeWorkers,
    94  					UpdateNodeWorkers:                 constants.DefaultUpdateNodeWorkers,
    95  				},
    96  			},
    97  			Edged: &edgecoreconfig.Edged{
    98  				Enable:                      true,
    99  				NodeStatusUpdateFrequency:   constants.DefaultNodeStatusUpdateFrequency,
   100  				DockerAddress:               constants.DefaultDockerAddress,
   101  				RuntimeType:                 constants.DefaultRuntimeType,
   102  				NodeIP:                      localIP,
   103  				ClusterDNS:                  "",
   104  				ClusterDomain:               "",
   105  				EdgedMemoryCapacity:         constants.DefaultEdgedMemoryCapacity,
   106  				RemoteRuntimeEndpoint:       constants.DefaultRemoteRuntimeEndpoint,
   107  				RemoteImageEndpoint:         constants.DefaultRemoteImageEndpoint,
   108  				PodSandboxImage:             constants.DefaultPodSandboxImage,
   109  				ImagePullProgressDeadline:   constants.DefaultImagePullProgressDeadline,
   110  				RuntimeRequestTimeout:       constants.DefaultRuntimeRequestTimeout,
   111  				HostnameOverride:            hostnameOverride,
   112  				RegisterNode:                true,
   113  				RegisterNodeNamespace:       constants.DefaultRegisterNodeNamespace,
   114  				InterfaceName:               constants.DefaultInterfaceName,
   115  				DevicePluginEnabled:         false,
   116  				GPUPluginEnabled:            false,
   117  				ImageGCHighThreshold:        constants.DefaultImageGCHighThreshold,
   118  				ImageGCLowThreshold:         constants.DefaultImageGCLowThreshold,
   119  				MaximumDeadContainersPerPod: constants.DefaultMaximumDeadContainersPerPod,
   120  				CGroupDriver:                edgecoreconfig.CGroupDriverCGroupFS,
   121  			},
   122  			MetaManager: &edgecoreconfig.MetaManager{
   123  				Enable:                true,
   124  				ContextSendGroup:      metaconfig.GroupNameEdgeController,
   125  				ContextSendModule:     metaconfig.ModuleNameEdgeController,
   126  				PodStatusSyncInterval: constants.DefaultPodStatusSyncInterval,
   127  			},
   128  		},
   129  	}
   130  }
   131  
   132  // NewMinEdgeSiteConfig returns a common EdgeSiteConfig object
   133  func NewMinEdgeSiteConfig() *EdgeSiteConfig {
   134  	hostnameOverride, err := os.Hostname()
   135  	if err != nil {
   136  		hostnameOverride = constants.DefaultHostnameOverride
   137  	}
   138  	localIP, _ := util.GetLocalIP(hostnameOverride)
   139  	return &EdgeSiteConfig{
   140  		TypeMeta: metav1.TypeMeta{
   141  			Kind:       Kind,
   142  			APIVersion: path.Join(GroupName, APIVersion),
   143  		},
   144  		DataBase: &edgecoreconfig.DataBase{
   145  			DataSource: DataBaseDataSource,
   146  		},
   147  		KubeAPIConfig: &cloudcoreconfig.KubeAPIConfig{
   148  			Master:     "",
   149  			KubeConfig: constants.DefaultKubeConfig,
   150  		},
   151  		Modules: &Modules{
   152  			Edged: &edgecoreconfig.Edged{
   153  				DockerAddress:         constants.DefaultDockerAddress,
   154  				RuntimeType:           constants.DefaultRuntimeType,
   155  				NodeIP:                localIP,
   156  				ClusterDNS:            "",
   157  				ClusterDomain:         "",
   158  				RemoteRuntimeEndpoint: constants.DefaultRemoteRuntimeEndpoint,
   159  				RemoteImageEndpoint:   constants.DefaultRemoteImageEndpoint,
   160  				//TODO (@kuramal) Automatically set PodSandboxImage according to the architecture.(x86,amd64,arm or arm64)
   161  				PodSandboxImage:     constants.DefaultPodSandboxImage,
   162  				HostnameOverride:    hostnameOverride,
   163  				InterfaceName:       constants.DefaultInterfaceName,
   164  				DevicePluginEnabled: false,
   165  				GPUPluginEnabled:    false,
   166  				CGroupDriver:        edgecoreconfig.CGroupDriverCGroupFS,
   167  			},
   168  		},
   169  	}
   170  }