Skip to content

Commit

Permalink
update egctl mesh install command
Browse files Browse the repository at this point in the history
  • Loading branch information
zouyingjie committed Apr 14, 2021
1 parent ee96554 commit 345a687
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 105 deletions.
32 changes: 0 additions & 32 deletions cmd/client/command/k8sutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package command

import (
"context"
"fmt"
appsV1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
Expand All @@ -13,37 +12,6 @@ import (
"k8s.io/client-go/kubernetes/scheme"
)

const (
k8sServiceKind = "Service"
k8sDeploymentKind = "Deployment"
k8sNamespaceKind = "Namespace"
k8sStatefulSetKind = "StatefulSet"
k8sConfigMapKind = "ConfigMap"
k8sPersistentVolumeKind = "PersistentVolume"
)

func createK8SObject(clientset *kubernetes.Clientset, object runtime.Object, groupVersionKind *schema.GroupVersionKind, namespace string) error {
var err error
switch groupVersionKind.Kind {
case k8sServiceKind:
err = createService(object.(*v1.Service), clientset, namespace)
case k8sDeploymentKind:
err = createDeployment(object, clientset, namespace)
case k8sNamespaceKind:
err = createNameSpace(object.(*v1.Namespace), clientset)
case k8sStatefulSetKind:
err = createStatefulSet(object, clientset, namespace)
case k8sConfigMapKind:
err = createConfigMap(object.(*v1.ConfigMap), clientset, namespace)
case k8sPersistentVolumeKind:
err = createPersistentVolume(object, clientset)
default:
return fmt.Errorf("Create K8S Object failed, unknonwn resource kind, %v ", groupVersionKind)

}
return err
}

func createNameSpace(namespace *v1.Namespace, clientSet *kubernetes.Clientset) error {
_, err := clientSet.CoreV1().Namespaces().Get(context.TODO(), namespace.Name, metav1.GetOptions{})
if err != nil && errors.IsNotFound(err) {
Expand Down
104 changes: 31 additions & 73 deletions cmd/client/command/mesh_install.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"path"
"path/filepath"
"strconv"
"strings"
"time"

"gopkg.in/yaml.v2"
Expand All @@ -40,9 +39,9 @@ var (
)

const (
defaultEgFilePath = "./manifests/easegateway/easegateway.yaml"
defaultEgIngressFilePath = "./manifests/easegateway/easegateway-ingress.yaml"
defaultOperatorPath = "./manifests/mesh-operator-config/default"
defaultEgControlPlaneFilePath = "./manifests/easegateway/control-plane"
defaultEgIngressFilePath = "./manifests/easegateway/ingress-controller"
defaultOperatorPath = "./manifests/mesh-operator-config/default"
// EaseGateway deploy default params
defaultMeshNameSpace = "easemesh"

Expand Down Expand Up @@ -183,28 +182,11 @@ func deployEaseGateway(cmd *cobra.Command, kubeClient *kubernetes.Clientset, arg
return err
}

easegatewayYaml, err := ioutil.ReadFile(manifestPath(defaultEgFilePath))
if err != nil {
return err
}

easegatewayK8SComponents, err := parseK8SYamlToComponents(easegatewayYaml)
if err != nil {
return err
}

for _, component := range easegatewayK8SComponents {
if len(strings.TrimSpace(component)) == 0 {
continue
}
object, kind, err := decodeToK8SObject([]byte(component))
err = createK8SObject(kubeClient, object, kind, args.meshNameSpace)
if err != nil {
return err
}
}

return nil
var configPath = manifestPath(defaultEgControlPlaneFilePath)
applyCmd := "cd " + configPath + " && kustomize edit set namespace " + args.meshNameSpace + " && kustomize build | kubectl apply -f -"
command := exec.Command("bash", "-c", applyCmd)
err = command.Run()
return err
}

func completeEaseGatewayNameSpace(cmd *cobra.Command, kubeClient *kubernetes.Clientset, args *installArgs) error {
Expand Down Expand Up @@ -273,39 +255,48 @@ func completeEaseGatewayServices(cmd *cobra.Command, kubeClient *kubernetes.Clie
selector := map[string]string{}
selector["app"] = "easegateway"

service := easegatewayService(args)
service.Spec.Selector = selector
err := createService(service, kubeClient, args.meshNameSpace)

headlessService := easegatewayHeadlessService(args)
headlessService.Spec.Selector = selector
err = createService(headlessService, kubeClient, args.meshNameSpace)
return err
}

func easegatewayService(args *installArgs) *v1.Service {
selector := map[string]string{}
selector["app"] = "easegateway"

service := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: args.egServiceName,
Namespace: args.meshNameSpace,
},
}
//service.Spec.Type = v1.ServiceTypeNodePort
service.Spec.Ports = []v1.ServicePort{
v1.ServicePort{
Name: defaultEgAdminPortName,
Port: int32(args.egAdminPort),
TargetPort: intstr.IntOrString{IntVal: 2381},
//NodePort: 32381,
},
v1.ServicePort{
Name: defaultEgPeerPortName,
Port: int32(args.egPeerPort),
TargetPort: intstr.IntOrString{IntVal: 2380},
//NodePort: 32380,
},
v1.ServicePort{
Name: defaultEgClientPortName,
Port: int32(args.egClientPort),
TargetPort: intstr.IntOrString{IntVal: 2379},
//NodePort: 32379,
},
}
service.Spec.Selector = selector
err := createService(service, kubeClient, args.meshNameSpace)
if err != nil {
return err
}
return service
}

func easegatewayHeadlessService(args *installArgs) *v1.Service {
headlessService := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: defaultEgHeadlessServiceName,
Expand All @@ -332,12 +323,7 @@ func completeEaseGatewayServices(cmd *cobra.Command, kubeClient *kubernetes.Clie
},
}

headlessService.Spec.Selector = selector
err = createService(headlessService, kubeClient, args.meshNameSpace)
if err != nil {
return err
}
return err
return headlessService
}

func manifestPath(filePath string) string {
Expand All @@ -349,18 +335,6 @@ func manifestPath(filePath string) string {
return path.Join(filepath.Dir(exPath), filePath)
}

func parseK8SYamlToComponents(content []byte) ([]string, error) {

fileAsString := string(content)
yamlSplits := strings.Split(fileAsString, "---")

s := make([]string, len(yamlSplits), len(yamlSplits))
for _, content := range yamlSplits {
s = append(s, content)
}
return s, nil
}

func easegatewayDeploySuccess(httpMethod string, url string, reqBody []byte, cmd *cobra.Command) bool {
req, err := http.NewRequest(httpMethod, url, bytes.NewReader(reqBody))
if err != nil {
Expand Down Expand Up @@ -413,28 +387,12 @@ func deployEaseGatewayIngress(cmd *cobra.Command, kubeClient *kubernetes.Clients
if err != nil {
return err
}
easegatewayIngressYaml, err := ioutil.ReadFile(manifestPath(defaultEgIngressFilePath))
if err != nil {
return err
}

easegatewayK8SComponents, err := parseK8SYamlToComponents(easegatewayIngressYaml)
if err != nil {
return err
}

for _, component := range easegatewayK8SComponents {
if len(strings.TrimSpace(component)) == 0 {
continue
}
object, kind, err := decodeToK8SObject([]byte(component))
err = createK8SObject(kubeClient, object, kind, args.meshNameSpace)
if err != nil {
return err
}
}

return nil
var configPath = manifestPath(defaultEgIngressFilePath)
applyCmd := "cd " + configPath + " && kustomize edit set namespace " + args.meshNameSpace + " && kustomize build | kubectl apply -f -"
command := exec.Command("bash", "-c", applyCmd)
err = command.Run()
return err

}

Expand Down

0 comments on commit 345a687

Please sign in to comment.