Install uses helm client to install cloudcore release
(opts *types.InitOptions)
| 90 | |
| 91 | // Install uses helm client to install cloudcore release |
| 92 | func (c *CloudCoreHelmTool) Install(opts *types.InitOptions) error { |
| 93 | ver, err := util.GetCurrentVersion(opts.KubeEdgeVersion) |
| 94 | if err != nil { |
| 95 | return fmt.Errorf("failed to get version with err:%v", err) |
| 96 | } |
| 97 | opts.KubeEdgeVersion = ver |
| 98 | |
| 99 | // The flag --force would not care about whether the cloud components exist or not also. |
| 100 | // If gives a external helm root, no need to check and verify, because it is always not a cloudcore. |
| 101 | if !opts.Force && opts.ExternalHelmRoot == "" { |
| 102 | if err := c.verifyCloudCoreProcessRunning(); err != nil { |
| 103 | return err |
| 104 | } |
| 105 | } |
| 106 | if err := c.Common.OSTypeInstaller.IsK8SComponentInstalled(c.Common.KubeConfig, c.Common.Master); err != nil { |
| 107 | return fmt.Errorf("failed to verify k8s component installed, err: %v", err) |
| 108 | } |
| 109 | |
| 110 | fmt.Printf("Kubernetes version verification passed, KubeEdge %s installation will start...\n", opts.KubeEdgeVersion) |
| 111 | |
| 112 | appendDefaultSets(opts.KubeEdgeVersion, opts.AdvertiseAddress, &opts.CloudInitUpdateBase) |
| 113 | // Load profile values, and merges the sets flag |
| 114 | var vals map[string]interface{} |
| 115 | if opts.Profile != "" { |
| 116 | // Load extern values, and merges the sets flag |
| 117 | vals, err = MergeExternValues(opts.Profile, opts.GetValidSets()) |
| 118 | if err != nil { |
| 119 | return err |
| 120 | } |
| 121 | } else { |
| 122 | valueOpts := &Options{ |
| 123 | Values: opts.GetValidSets(), |
| 124 | } |
| 125 | vals, err = valueOpts.MergeValues() |
| 126 | if err != nil { |
| 127 | return err |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | // TODO: think about how to support addons, and should we support addons? |
| 132 | subDir := path.Join(dirCharts, cloudCoreHelmComponent) |
| 133 | componentName := cloudCoreHelmComponent |
| 134 | |
| 135 | // Build a new renderer instance |
| 136 | renderer := NewGenericRenderer(kecharts.BuiltinOrDir(opts.ExternalHelmRoot), |
| 137 | subDir, componentName, constants.SystemNamespace, vals, opts.SkipCRDs) |
| 138 | // Load the charts to this renderer |
| 139 | if err := renderer.LoadChart(); err != nil { |
| 140 | return fmt.Errorf("cannot load the given charts %s, error: %s", renderer.componentName, err.Error()) |
| 141 | } |
| 142 | |
| 143 | helper, err := NewHelper(opts.KubeConfig, constants.SystemNamespace) |
| 144 | if err != nil { |
| 145 | return err |
| 146 | } |
| 147 | // Determine whether the cloudcore release has been installed |
| 148 | if rel, err := helper.GetRelease(renderer.componentName); err != nil { |
| 149 | return err |