refactor extend trait feature and doc

Signed-off-by: 天元 <jianbo.sjb@alibaba-inc.com>
This commit is contained in:
天元
2020-11-16 19:22:38 +08:00
parent 3269c4f48f
commit daef0523fa
11 changed files with 230 additions and 150 deletions
+40
View File
@@ -0,0 +1,40 @@
package common
import (
"fmt"
"os"
"github.com/crossplane/oam-kubernetes-runtime/apis/core"
certmanager "github.com/wonderflow/cert-manager-api/pkg/apis/certmanager/v1"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"github.com/oam-dev/kubevela/api/types"
"github.com/oam-dev/kubevela/api/v1alpha1"
k8sruntime "k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client/config"
)
var (
Scheme = k8sruntime.NewScheme()
)
func init() {
_ = clientgoscheme.AddToScheme(Scheme)
_ = certmanager.AddToScheme(Scheme)
_ = core.AddToScheme(Scheme)
_ = v1alpha1.AddToScheme(Scheme)
// +kubebuilder:scaffold:scheme
}
func InitBaseRestConfig() (types.Args, error) {
restConf, err := config.GetConfig()
if err != nil {
fmt.Println("get kubeConfig err", err)
os.Exit(1)
}
return types.Args{
Config: restConf,
Schema: Scheme,
}, nil
}
+33 -1
View File
@@ -7,6 +7,8 @@ import (
"os"
"strings"
"github.com/oam-dev/kubevela/pkg/utils/common"
"github.com/pkg/errors"
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/chart"
@@ -15,17 +17,41 @@ import (
"helm.sh/helm/v3/pkg/getter"
"helm.sh/helm/v3/pkg/release"
"helm.sh/helm/v3/pkg/repo"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/oam-dev/kubevela/api/types"
cmdutil "github.com/oam-dev/kubevela/pkg/commands/util"
)
const VelaDebugLog = "VELA_DEBUG"
var (
settings = cli.New()
)
func Install(ioStreams cmdutil.IOStreams, repoName, repoURL, chartName, version, namespace, releaseName string,
vals map[string]interface{}) error {
if len(namespace) > 0 {
args, err := common.InitBaseRestConfig()
if err != nil {
return err
}
kubeClient, err := client.New(args.Config, client.Options{Scheme: args.Schema})
if err != nil {
return err
}
exist, err := cmdutil.DoesNamespaceExist(kubeClient, namespace)
if err != nil {
return err
}
if !exist {
if err = cmdutil.NewNamespace(kubeClient, namespace); err != nil {
return fmt.Errorf("create namespace (%s) failed for chart %s: %s", namespace, chartName, err)
}
}
}
if !IsHelmRepositoryExist(repoName, repoURL) {
err := AddHelmRepository(repoName, repoURL,
"", "", "", "", "", false, ioStreams.Out)
@@ -195,7 +221,9 @@ func GetHelmRelease(ns string) ([]*release.Release, error) {
}
func GetChart(client *action.Install, name string) (*chart.Chart, error) {
settings.Debug = true
if os.Getenv(VelaDebugLog) != "" {
settings.Debug = true
}
chartPath, err := client.ChartPathOptions.LocateChart(name, settings)
if err != nil {
@@ -208,3 +236,7 @@ func GetChart(client *action.Install, name string) (*chart.Chart, error) {
}
return chartRequested, nil
}
func InstallHelmChart(ioStreams cmdutil.IOStreams, c types.Chart) error {
return Install(ioStreams, c.Repo, c.URL, c.Name, c.Version, c.Namespace, c.Name, c.Values)
}