Git Product home page Git Product logo

meshery-linkerd's Introduction

Meshery Logo

If you’re using Meshery or if you like the project, please this repository to show your support! 🤩

MESHERY IS A CLOUD NATIVE COMPUTING FOUNDATION PROJECT


A self-service engineering platform, Meshery, is the open source, cloud native manager that enables the design and management of all Kubernetes-based infrastructure and applications (multi-cloud). Among other features, As an extensible platform, Meshery offers visual and collaborative GitOps, freeing you from the chains of YAML while managing Kubernetes multi-cluster deployments.



Try Meshery in the Cloud Native Playground (teaser video)


 

Functionality

Cloud Native Lifecycle Management

Meshery manages the provisioning, configuration and operation of your Kubernetes clusters while supporting hundreds of different types of cloud native infrastructure integrations. Meshery also offers a catalog of curated design templates filled with configuration best practices.

Using a GitOps-centric approach, visually and collaboratively design and manage your infrastructure and microservices. Extend Meshery as your self-service engineering platform by taking advantage of its vast set of extensibility features, including gRPC adapters, hot-loadable Reactjs packages and Golang plugins, subscriptions on NATS topics, consumable and extendable API interfaces via REST and GraphQL.

Meshery cloud native management

Multi-Cluster Kubernetes, Multi-Cloud, and Cloud Native Configuration Management

Meshery supports 250+ integrations.

Assess your cloud native infrastructure configuration against deployment and operational best practices with Meshery's configuration validator. Manage your workloads with confidence. Check your Kubernetes configuration for anti-patterns and avoid common pitfalls.

Layer5 Service Mesh Configuration Management



OPA Logo

Context-Aware Policies For Applications



Leverage built-in relationships to enforce configuration best practices consistently from code to Kubernetes. Enhance development process by building custom rules in Open Policy Agent's Rego query language. Meshery and Open Policy Agent Integration



WebAssembly Logo

Manage data plane intelligence with WebAssembly filters

Dynamically load and manage your own WebAssembly filters in Envoy-based service meshes.



WebAssembly filters

See Image Hub.



Performance Management

Adhering to Cloud Native Standards

Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode.

In an effort to produce service mesh agnostic tooling, Meshery uses the Service Mesh Performance specification as a common format to capture and measure your infrastructure's performance against a universal cloud native performance index. As an implementation of Service Mesh Interface (SMI), Meshery participates in advancing cloud native infrastructure adoption through the standardization of APIs.

Standardized Cloud Native Performance Management

Meshery is the cloud native utility for uniformly managing the performance of microservices and the infrastructure that run them. As an implementation of the Service Mesh Performance (SMP), Meshery enables you to measure the value provided by Docker, Kubernetes, or a service mesh in the context of the overhead incurred.

Performance Management

Meshery Architecture

You may deploy Meshery internal to your cluster or external to your cluster.

Learn more about Meshery's architecture.

Get Started with Meshery

Using `mesheryctl`

Meshery runs as a set of containers inside or outside of your Kubernetes clusters.

curl -L https://meshery.io/install | bash -

Use the quick start guide.

See all supported platforms

See the getting started section to quickly deploy Meshery on any of these supported platforms:

Platform Supported?
Docker ✔️
    Docker - Docker App ✔️
    Docker - Docker Extension ✔️
Kubernetes ✔️
    Kubernetes - AKS ✔️
    Kubernetes - Docker Desktop ✔️
    Kubernetes - EKS ✔️
    Kubernetes - GKE ✔️
    Kubernetes - Helm ✔️
    Kubernetes - kind ✔️
    Kubernetes - Minikube ✔️
    Kubernetes - OpenShift In Progress
Linux ✔️
Mac ✔️
    Mac - Homebrew ✔️
Windows ✔️
    Scoop ✔️
    WSL2 ✔️
Raspberry Pi In Progress

Meshery documentation offers thorough installation guides for your platform of choice.

 

 

Join the Meshery community!

Our projects are community-built and welcome collaboration. 👍 Be sure to see the Contributor Journey Map and Community Handbook for a tour of resources available to you and the Repository Overview for a cursory description of repository by technology and programming language. Jump into community Slack or discussion forum to participate.

MeshMates

Find your MeshMate

MeshMates are experienced Layer5 community members, who will help you learn your way around, discover live projects, and expand your community network. Connect with a Meshmate today!

Find out more on the Layer5 community.



Layer5 Cloud Native Community

✔️ Join any or all of the weekly meetings on community calendar.
✔️ Watch community meeting recordings.
✔️ Fill-in a community member form to gain access to community resources.
✔️ Discuss in the Community Forum.
✔️ Explore more in the Community Handbook.





     Not sure where to start? Grab an open issue with the help-wanted label.



 

Contributing

Please do! We're a warm and welcoming community of open source contributors. Please join. All types of contributions are welcome. Be sure to read the Contributor Guides for a tour of resources available to you and how to get started.

 

Stargazers

If you like Meshery, please star this repository to show your support! 🤩

License

This repository and site are available as open-source under the terms of the Apache 2.0 License.

meshery-linkerd's People

Contributors

acald-creator avatar aisuko avatar anita-ihuman avatar antonis-ant avatar antweiss avatar ashiscs avatar asubedy avatar ayushthe1 avatar debjani1413 avatar delusionaloptimist avatar dependabot-preview[bot] avatar dependabot[bot] avatar dhruv0000 avatar duckling69 avatar ghat0tkach avatar girishranganathan avatar gr455 avatar gunjanmimo avatar karnatisrinivas avatar kumarabd avatar leecalcote avatar lolverae avatar mgfeller avatar muzairs15 avatar revolyssup avatar sayantan1413 avatar tangledbytes avatar thebeginner86 avatar utkarshmishra12 avatar warunicorn19 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meshery-linkerd's Issues

Meshery-linkerd needs to change the way which manages the Linkerd2 life-cycle to more native with Linkerd2

Enhancement Description

This may difficult and complex we need to change the main logistic of the Meshery-linkerd and this is the main feature of this adapter.

Current logistic:

  • Every one hour the adapter needs to go to the Github release API to check the newest version of Linkerd2 CLI and download the CLI into the local folder(Sometimes download process was closed but did not with an except, this may cause the deploy process was killed by os without the reason.)

The desired logistic please see below:

  • Using the pre-check while every time the deploy event was triggered
    • Pre-check the cluster status and confirm the cluster can handler linkerd2
      • If there the LInkerd2 was deployed provide, update the Linkerd2 deployments under the native way
      • ELSE deploy the Linkerd2 by native way
      • Return the state of the deployments

Related Challenges
A brief description of what the problem is. (e.g. I need to be able to...)

There needs to get deeper into Linkerd2's original project. (So should lock the version of the dependent package)


[Optional] Alternatives
A brief description of any alternative solutions or features you've considered.

But there is a disadvantage to these two approaches above, neither of then can do a pre-check. In fact, we should follow the official deploy approach to let the deploy process more smooth and do not let the struggling problems happen

[Optional] Additional context
Add any other context or screenshots about the feature request here.

Failed to load [extension-apiserver-authentication] config

Description
A brief description of the issue.

➜  meshery git:(dev) ✗ kubectl get pods -n linkerd2 -w
NAME                                      READY   STATUS            RESTARTS   AGE
linkerd-controller-7fb9695767-dscql       0/2     Running           0          13s
linkerd-destination-67958568db-sjpt9      0/2     Running           0          13s
linkerd-grafana-6db94c66c6-w7fjn          0/2     Running           0          12s
linkerd-identity-6d899c698c-6kgq8         0/2     Running           0          13s
linkerd-prometheus-7cc46954c-8zr5w        0/2     PodInitializing   0          12s
linkerd-proxy-injector-5db5848f7b-rmspm   0/2     Running           0          12s
linkerd-sp-validator-5c7f848b65-nq2ns     0/2     PodInitializing   0          12s
linkerd-tap-64c5949bf4-7667q              0/2     Error             0          12s
linkerd-web-7bdd6b465b-7sqzt              0/2     Running           0          12s
linkerd-prometheus-7cc46954c-8zr5w        0/2     Running           0          12s
linkerd-tap-64c5949bf4-7667q              0/2     CrashLoopBackOff   1          12s
linkerd-sp-validator-5c7f848b65-nq2ns     0/2     Running            0          13s
linkerd-identity-6d899c698c-6kgq8         1/2     Running            0          15s
linkerd-destination-67958568db-sjpt9      1/2     Running            0          18s
linkerd-controller-7fb9695767-dscql       1/2     Running            0          20s
linkerd-identity-6d899c698c-6kgq8         2/2     Running            0          20s
linkerd-controller-7fb9695767-dscql       2/2     Running            0          22s
linkerd-grafana-6db94c66c6-w7fjn          1/2     Running            0          21s
linkerd-proxy-injector-5db5848f7b-rmspm   1/2     Running            0          21s
linkerd-web-7bdd6b465b-7sqzt              1/2     Running            0          23s
linkerd-sp-validator-5c7f848b65-nq2ns     1/2     Running            0          25s
linkerd-tap-64c5949bf4-7667q              0/2     Error              2          25s
linkerd-web-7bdd6b465b-7sqzt              2/2     Running            0          25s
linkerd-grafana-6db94c66c6-w7fjn          2/2     Running            0          25s
linkerd-sp-validator-5c7f848b65-nq2ns     2/2     Running            0          25s
linkerd-proxy-injector-5db5848f7b-rmspm   2/2     Running            0          26s
linkerd-destination-67958568db-sjpt9      2/2     Running            0          27s
linkerd-tap-64c5949bf4-7667q              0/2     CrashLoopBackOff   2          26s
linkerd-tap-64c5949bf4-7667q              1/2     CrashLoopBackOff   2          30s
^C%                                                                                                                                                                                                                                                                       ➜  meshery git:(dev) ✗ kubectl logs -f linkerd-tap-64c5949bf4-7667q -n linkerd
Error from server (NotFound): pods "linkerd-tap-64c5949bf4-7667q" not found
➜  meshery git:(dev) ✗ kubectl logs -f linkerd-tap-64c5949bf4-7667q -n linkerd2
error: a container name must be specified for pod linkerd-tap-64c5949bf4-7667q, choose one of: [tap linkerd-proxy] or one of the init containers: [linkerd-init]
➜  meshery git:(dev) ✗ kubectl logs -f linkerd-tap-64c5949bf4-7667q -n linkerd2 -c tap
time="2020-04-19T11:06:01Z" level=info msg="running version edge-20.4.2"
time="2020-04-19T11:06:01Z" level=info msg="Using trust domain: cluster.local"
time="2020-04-19T11:06:01Z" level=fatal msg="failed to load [extension-apiserver-authentication] config: configmaps \"extension-apiserver-authentication\" is forbidden: User \"system:serviceaccount:linkerd2:linkerd-tap\" cannot get resource \"configmaps\" in API group \"\" in the namespace \"kube-system\""
➜  meshery git:(dev) ✗ kubectl logs -f linkerd-tap-64c5949bf4-7667q -n linkerd2 -c tap
time="2020-04-19T11:08:12Z" level=info msg="running version edge-20.4.2"
time="2020-04-19T11:08:12Z" level=info msg="Using trust domain: cluster.local"
time="2020-04-19T11:08:12Z" level=fatal msg="failed to load [extension-apiserver-authentication] config: configmaps \"extension-apiserver-authentication\" is forbidden: User \"system:serviceaccount:linkerd2:linkerd-tap\" cannot get resource \"configmaps\" in API group \"\" in the namespace \"kube-system\""
➜  meshery git:(dev) ✗ ls


➜  meshery git:(dev) ✗ kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-13T11:52:32Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T20:55:23Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}

Expected Behavior
A brief description of what you expected to happen.

The adapter can deploy Linkerd work well

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
    • latest version Meshery and Meshery-Linkerd
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

The CI Security check catches the defer function issue with G306 G307

Description
A brief description of the issue.

  • The defer function in the adapter's source code got the gosec(Golang Security Checker)-G307. To check the available rule list

Expected Behavior
A brief description of what you expected to happen.

  • All the test scripts will be pass

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

Add 'linkerd check' to verify linkerd installation

Enhancement Description
Currently there's only a check pre-installation.
The success isn't verified.
Meshery notifies on installation success while the images for linkerd are still being initialized.
I think we should wait until 'linkerd check' returns full success.

Related Challenges
The use may have to wait a bit longer until Linkerd installation is confirmed. But I think this is better then notifying of success without actually verifying it.

The dependencies of `k8s.io/apimachinery` version change the functions of resource that make the function not working well.

Description
A brief description of the issue.

v0.19.1
https://github.com/kubernetes/client-go/blob/028b2b5fa000f4a7ce10503e2e2523b6bbac11a6/dynamic/interface.go#L37

v0.17.4
https://github.com/kubernetes/client-go/blob/9927afa2880713c4332723b7f0865adee5e63a7b/dynamic/interface.go#L35

There a little change with the dynamic.ResourceInterface please see below, if we upgrade client-go version to v0.19.1, we should manually test the function can be useful(If we keep k8s.io/apimachinery to v0.19.1 ,client-go current v1.17.4 there may some issues when we build the project), so we should revert PR #93

Expected Behavior

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

Linkerd installation broken

Description
Latest edge release of linkerd changed the --linkerd-namespace flag from -l to -L and thus broke our installation command.
meshery-linkerd_1 | time="2020-02-25T08:44:04Z" level=error msg="received error while attempting to prepare install yaml: Error: unknown shorthand flag: 'l' in -l

Expected Behavior
Linkerd should be installed correctly

Screenshots
Screen Shot 2020-02-25 at 11 21 34

[Install] Linkerd installation failure

Description

received error while attempting to prepare install yaml: time="2020-07-05T19:54:31Z" level=error msg="could not set namespace from kubectl context: ensure a valid KUBECONFIG path has been set"

Environment
Meshery Client Version: 0.3.18
Meshery Server Version: v0.4.0-beta.1

The CI `Setup Go` version condition is blank

Description
A brief description of the issue.

I saw the version of go is blank so I'm not sure which version go we used and may the CI tools may not compatible correctly with the specific version e.g gosec just change the go version with the PR

https://github.com/layer5io/meshery-linkerd/runs/569837091?check_suite_focus=true

The CI file

    - name: Setup Go
      uses: actions/setup-go@v1
      with:
        go-version: ${{ secrets.GO_VERSION }}

So the secrets.GO_VERSION should have the right value

Expected Behavior
A brief description of what you expected to happen.

I believe the version should follow the go.mod under the root folder of the project and should be as a dynamic parameter

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

SMI Conformance Testing Support

Enhancement Description
Linkerd is SMI compatible. Its compatibility needs to be verified against the standard suite of compliance tests.

Create the resource invoked kubernetes interface need to use `waituntilready` feature

Enhancement Description

We need to add the wait until ready feature(the feature may something like Reconcile function) into our business logic of create the resource into the cluster. So, I plan to PR this on meshery-linkerd and update to other adapter later.

This is long way to achieve but must to do. Because we always believe that the network is working well and the cluster running no exceptions, but the real words more complex then the situation before I said. So, we should keep going to do this.

And we can change the CURD function to match the client-go and apimachinery x.19.x

Related Challenges

We need to change the core functions of the adapters


[Optional] Alternatives
A brief description of any alternative solutions or features you've considered.

[Optional] Additional context
Add any other context or screenshots about the feature request here.

[Feature] Add the Unit test for the adapter

Enhancement Description
A brief description of the enhancement.

Add the unit test for the adapter functions:

  • In order to make the adapter more stable
  • In order to develop install process with Helm package
  • In order to get experiences with the adapter's development process and these will output to project cattle
  • The PR is beginning after this I will do more PR includes unit test

Related Challenges
A brief description of what the problem is. (e.g. I need to be able to...)


[Optional] Alternatives
A brief description of any alternative solutions or features you've considered.

[Optional] Additional context
Add any other context or screenshots about the feature request here.

The CI `Security check` got the error and can not work very well

Description
A brief description of the issue.

The Ci Security check got the error below

go get github.com/securego/gosec/cmd/gosec: no matching versions for query "upgrade"

Reference issue
securego/gosec#458

Expected Behavior
A brief description of what you expected to happen.

The CI scripts all pass

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

Sample Applications: Istio Bookinfo app is not getting installed

Description
Sample Applications: Istio Bookinfo app is not getting installed, also there are no logs as well as notification on the ui about failed installation

Expected Behavior
Istio Bookinfo app should get installed

Logs

DEBUG=true go run main.go
INFO[0000] Serving gRPC on :10001
DEBU[0034] received contextName: docker-desktop
DEBU[0034] received contextName: docker-desktop
DEBU[0034] waiting on event stream. . .
DEBU[0038] received contextName: docker-desktop
DEBU[0038] received contextName: docker-desktop
DEBU[0038] waiting on event stream. . .
DEBU[0039] received contextName: docker-desktop
DEBU[0048] received contextName: docker-desktop
DEBU[0048] getResource data: &unstructured.Unstructured{Object:map[string]interface {}{"metadata":map[string]interface {}{"name":"default"}}}
DEBU[0048] getResource res: schema.GroupVersionResource{Group:"", Version:"v1", Resource:"namespaces"}
INFO[0048] Retrieved Resource of type:  and name: default
DEBU[0048] retrieved namespace: &unstructured.Unstructured{Object:map[string]interface {}{"apiVersion":"v1", "kind":"Namespace", "metadata":map[string]interface {}{"annotations":map[string]interface {}{"linkerd.io/inject":"enabled"}, "creationTimestamp":"2020-10-09T18:08:56Z", "labels":map[string]interface {}{"istio-injection":"enabled"}, "managedFields":[]interface {}{map[string]interface {}{"apiVersion":"v1", "fieldsType":"FieldsV1", "fieldsV1":map[string]interface {}{"f:status":map[string]interface {}{"f:phase":map[string]interface {}{}}}, "manager":"kube-apiserver", "operation":"Update", "time":"2020-10-09T18:08:56Z"}, map[string]interface {}{"apiVersion":"v1", "fieldsType":"FieldsV1", "fieldsV1":map[string]interface {}{"f:metadata":map[string]interface {}{"f:labels":map[string]interface {}{".":map[string]interface {}{}, "f:istio-injection":map[string]interface {}{}}}}, "manager":"kubectl", "operation":"Update", "time":"2020-10-10T14:39:42Z"}, map[string]interface {}{"apiVersion":"v1", "fieldsType":"FieldsV1", "fieldsV1":map[string]interface {}{"f:metadata":map[string]interface {}{"f:annotations":map[string]interface {}{".":map[string]interface {}{}, "f:linkerd.io/inject":map[string]interface {}{}}}}, "manager":"meshery-linkerd", "operation":"Update", "time":"2020-10-10T20:54:01Z"}}, "name":"default", "resourceVersion":"128892", "selfLink":"/api/v1/namespaces/default", "uid":"a267a06e-98f0-498b-b2b5-127602ca3877"}, "spec":map[string]interface {}{"finalizers":[]interface {}{"kubernetes"}}, "status":map[string]interface {}{"phase":"Active"}}}
INFO[0048] Updated Resource of type: Namespace and name: default
DEBU[0048] &{/v1, Resource=services /v1, Kind=Service 0x2f03170}
DEBU[0048] map[apiVersion:v1 kind:Service metadata:map[creationTimestamp:<nil> labels:map[app:details service:details] name:details] spec:map[ports:[map[name:http port:9080 targetPort:0]] selector:map[app:details]] status:map[loadBalancer:map[]]]
INFO[0048] Create the Service details in namespace  failed
DEBU[0048] sending event: &meshes.EventsResponse{EventType:2, Summary:"Error while deploying the canonical Istio canonical Book Info App", Details:"the server does not allow this method on the requested resource", OperationId:"9319572b-eb9c-45a9-bdd7-bc5bfc2b48ca", XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}
ERRO[0048] unable to send event: rpc error: code = Internal desc = transport: transport: the stream is done or WriteHeader was already called
DEBU[0048] sending event: &meshes.EventsResponse{EventType:2, Summary:"Error while deploying the canonical Istio canonical Book Info App", Details:"the server does not allow this method on the requested resource", OperationId:"9319572b-eb9c-45a9-bdd7-bc5bfc2b48ca", XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:172}

Add Stale bot to this repo

Description
Unaddressed issues that remain open for long periods may be automatically marked stale and closed.

Implementation
Copy stale.yml from the Meshery repo and put into the .github folder here.

[Issue]The CI scripts need to provide the Kubernetes cluster config information

Description
A brief description of the issue.

##[error]    client_test.go:33: Load kubeconfig err open /home/runner/.config/k3d/k3s-default/kubeconfig.yaml: no such file or directory
45
##[error]    client_test.go:41: NewClient function was failed unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined
46
##[error]    client_test.go:45: Client is nil

Expected Behavior
A brief description of what you expected to happen.

All test scripts in CI will be pass

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

Add linkerd custom configurations

Enhancement Description
Istio adapter comes with predefined custom configs. Let's add similar configs for Linkerd.
IMHO this will provide some added value for Meshery as a Linkerd playground.
Related Challenges
We'll probably need to create service profiles, etc. ourselves as there are no ready-to-use yaml files provided by Buoyant. At least AFAIK.

[Lifecycle] Provide notification of namespace annotation

Enhancement Description
Users are able to annotate namespaces for sidecar proxy injection. Users should receive notifications on success and failure of operation.

Success:

"default" namespace annotated for injection of Linkerd sidecar proxy.

Failure:

Failed to annotate "default" namespace for injection of Linkerd sidecar proxy.

The install way of linkerd needs to be change to the other ways

Enhancement Description
A brief description of the enhancement.

As we can see the code below. We should focus on the stable version and as you can see the linkerd2 release list top 10 almost the edge version. So, we should change to other ways

https://github.com/layer5io/meshery-linkerd/blob/8fb895de16cd3255043dc296ccde668658abc528/linkerd/install.go#L40-L41

https://github.com/layer5io/meshery-linkerd/blob/8fb895de16cd3255043dc296ccde668658abc528/linkerd/install.go#L92-L93

Related Challenges
A brief description of what the problem is. (e.g. I need to be able to...)


[Optional] Alternatives
A brief description of any alternative solutions or features you've considered.

[Optional] Additional context
Add any other context or screenshots about the feature request here.

Create CONTRIBUTING.md in meshery-linkerd repo

Issue Description
Create contributing.md that points to the central contributing.md in the Meshery repo.

Create a stub CONTRIBUTING.md in each of the repos that essentially say:
“You want to contribute to the project? Yay! We want you to! Visit our centralized instructions for contributing.", where the “contributing” is a hyperlink to the CONTRIBUTING.md in the main meshery repo.

Future Effort
In time, as more contributors join the project, we may need a meshery-community repo that has all this and much more info or to have a community / contributing section in the meshery docs.

Add back the CI test condition

Enhancement Description
A brief description of the enhancement.

As we can see, or CI file needs condition was comment out. Every PR the runner all build and push docker image. Even though other check steps was failed.

Related Challenges
A brief description of what the problem is. (e.g. I need to be able to...)

As you can see, we have been fixed the CI issue. So, I believe it's time to add CI condition back.


[Optional] Alternatives
A brief description of any alternative solutions or features you've considered.

[Optional] Additional context
Add any other context or screenshots about the feature request here.

Add the unit test for download Linkerd-cli and install Linkerd to Kubernetes cluster

Description
A brief description of the issue.
There was no unit test for linked download-cli and execute

Expected Behavior
A brief description of what you expected to happen.

Add the unit test functions

Screenshots
Add screenshots, if applicable, to help explain your problem.

Enviroment:

  • OS: [e.g. Ubuntu]
  • Browser: [e.g. Chrome, Safari]
  • Version: [e.g. 22]
  • Device: [e.g. laptop, iPhone 8]

[Optional] To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

[Optional] Additional Context
Add any other context about the problem here.

README: Add hyperlinks to badges

Description
Some of the badges in this repos readme are missing informative hyperlinks.

Desired Behavior
The badges (and their links) that are used in the Meshery repo's README are a great example of how the badges in this repo can be improved.

Meshery Adapter for Linkerd build status badge defunct

Description
The Meshery project recently switched from TravisCI to GitHub Actions. As such, each of the Meshery repositories need the build badges in their READMEs updated. Badges from shields.io are mostly used across the repositories, however, shields.io support for GitHub Actions badge seems pending. A number of solutions, including one from GitHub, have cropped up. Any should work.

Expected Behavior
Each Meshery repository's README should have a build badge showing the current status of that components build.

Eliminate Linkerd Adapter code check (lint) failures

Description
The Meshery adapter for Linkerd is failing lint checks when building. Currently, these checks are not passing:

Found 9 lint suggestions; failing.
132
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/client.go:26:2: a blank import should be only in a main or test package, or have a comment justifying it
133
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/client.go:30:6: type name will be used as linkerd.LinkerdClient by other packages, and that stutters; consider calling this Client
134
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/install.go:44:2: exported var URLSuffix should have comment or be unexported
135
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/install.go:50:6: exported type APIInfo should have comment or be unexported
136
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/install.go:56:6: exported type Asset should have comment or be unexported
137
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/install.go:190:10: if block ends with a return statement, so drop this else and outdent its block
138
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/linkerd.go:39:1: exported method LinkerdClient.CreateMeshInstance should have comment or be unexported
139
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/linkerd.go:350:1: comment on exported method LinkerdClient.ApplyOperation should be of the form "ApplyOperation ..."
140
##[error]/home/runner/work/meshery-linkerd/meshery-linkerd/linkerd/yaml.go:65:1: exported method YAMLDecoder.Close should have comment or be unexported
141
##[error]Process completed with exit code 123.

Expected Behavior
All lint checks should pass.

See an example of these failures here - https://github.com/layer5io/meshery-linkerd/runs/215054799

[Workloads] Unable to find exposed port for Emojivoto web service

Description
Meshery adapter for Linkerd will attempt to retrieve the service port that has been exposed upon deployment of a given workload (sample app).

Expected Behavior
When provisioning Emojivoto, users should be told what port its "web-svc" is available on.

Screenshots
Screen Shot 2020-10-03 at 8 09 08 PM

Logs

DEBU[0559] received contextName: docker-desktop         
DEBU[0561] file successfully downloaded . . .           
DEBU[0561] getResource data: &unstructured.Unstructured{Object:map[string]interface {}{"metadata":map[string]interface {}{"name":"default"}}} 
DEBU[0561] getResource res: schema.GroupVersionResource{Group:"", Version:"v1", Resource:"namespaces"} 
INFO[0561] Retrieved Resource of type:  and name: default 
DEBU[0561] retrieved namespace: &unstructured.Unstructured{Object:map[string]interface {}{"apiVersion":"v1", "kind":"Namespace", "metadata":map[string]interface {}{"creationTimestamp":"2020-10-04T01:00:27Z", "managedFields":[]interface {}{map[string]interface {}{"apiVersion":"v1", "fieldsType":"FieldsV1", "fieldsV1":map[string]interface {}{"f:status":map[string]interface {}{"f:phase":map[string]interface {}{}}}, "manager":"kube-apiserver", "operation":"Update", "time":"2020-10-04T01:00:27Z"}}, "name":"default", "resourceVersion":"151", "selfLink":"/api/v1/namespaces/default", "uid":"335cef97-cf45-4545-a336-c323b927c3c6"}, "spec":map[string]interface {}{"finalizers":[]interface {}{"kubernetes"}}, "status":map[string]interface {}{"phase":"Active"}}} 
INFO[0561] Updated Resource of type: Namespace and name: default 
DEBU[0561] &{/v1, Resource=namespaces /v1, Kind=Namespace 0x2f01180} 
DEBU[0561] map[apiVersion:v1 kind:Namespace metadata:map[creationTimestamp:<nil> name:emojivoto] spec:map[] status:map[]] 
INFO[0561] Create the Namespace emojivoto succeed       
DEBU[0561] &{/v1, Resource=serviceaccounts /v1, Kind=ServiceAccount 0x2f01170} 
DEBU[0561] map[apiVersion:v1 kind:ServiceAccount metadata:map[creationTimestamp:<nil> name:emoji namespace:emojivoto]] 
INFO[0561] Create the ServiceAccount emoji in namespace emojivoto succeed 
DEBU[0561] &{/v1, Resource=serviceaccounts /v1, Kind=ServiceAccount 0x2f01170} 
DEBU[0561] map[apiVersion:v1 kind:ServiceAccount metadata:map[creationTimestamp:<nil> name:voting namespace:emojivoto]] 
INFO[0561] Create the ServiceAccount voting in namespace emojivoto succeed 
DEBU[0561] &{/v1, Resource=serviceaccounts /v1, Kind=ServiceAccount 0x2f01170} 
DEBU[0561] map[apiVersion:v1 kind:ServiceAccount metadata:map[creationTimestamp:<nil> name:web namespace:emojivoto]] 
INFO[0561] Create the ServiceAccount web in namespace emojivoto succeed 
DEBU[0561] &{/v1, Resource=services /v1, Kind=Service 0x2f01170} 
DEBU[0561] map[apiVersion:v1 kind:Service metadata:map[creationTimestamp:<nil> name:emoji-svc namespace:emojivoto] spec:map[ports:[map[name:grpc port:8080 targetPort:8080] map[name:prom port:8801 targetPort:8801]] selector:map[app:emoji-svc]] status:map[loadBalancer:map[]]] 
INFO[0561] Create the Service emoji-svc in namespace emojivoto succeed 
DEBU[0561] &{/v1, Resource=services /v1, Kind=Service 0x2f01170} 
DEBU[0561] map[apiVersion:v1 kind:Service metadata:map[creationTimestamp:<nil> name:voting-svc namespace:emojivoto] spec:map[ports:[map[name:grpc port:8080 targetPort:8080] map[name:prom port:8801 targetPort:8801]] selector:map[app:voting-svc]] status:map[loadBalancer:map[]]] 
INFO[0561] Create the Service voting-svc in namespace emojivoto succeed 
DEBU[0561] &{/v1, Resource=services /v1, Kind=Service 0x2f01170} 
DEBU[0561] map[apiVersion:v1 kind:Service metadata:map[creationTimestamp:<nil> name:web-svc namespace:emojivoto] spec:map[ports:[map[name:http port:80 targetPort:8080]] selector:map[app:web-svc] type:ClusterIP] status:map[loadBalancer:map[]]] 
INFO[0561] Create the Service web-svc in namespace emojivoto succeed 
DEBU[0562] &{apps/v1, Resource=deployments apps/v1, Kind=Deployment 0x2f01170} 
DEBU[0562] map[apiVersion:apps/v1 kind:Deployment metadata:map[creationTimestamp:<nil> labels:map[app.kubernetes.io/name:emoji app.kubernetes.io/part-of:emojivoto app.kubernetes.io/version:v10] name:emoji namespace:emojivoto] spec:map[replicas:1 selector:map[matchLabels:map[app:emoji-svc version:v10]] strategy:map[] template:map[metadata:map[creationTimestamp:<nil> labels:map[app:emoji-svc version:v10]] spec:map[containers:[map[env:[map[name:GRPC_PORT value:8080] map[name:PROM_PORT value:8801]] image:buoyantio/emojivoto-emoji-svc:v10 name:emoji-svc ports:[map[containerPort:8080 name:grpc] map[containerPort:8801 name:prom]] resources:map[requests:map[cpu:100m]]]] serviceAccountName:emoji]]] status:map[]] 
INFO[0562] Create the Deployment emoji in namespace emojivoto succeed 
DEBU[0562] &{apps/v1, Resource=deployments apps/v1, Kind=Deployment 0x2f01170} 
DEBU[0562] map[apiVersion:apps/v1 kind:Deployment metadata:map[creationTimestamp:<nil> labels:map[app.kubernetes.io/name:vote-bot app.kubernetes.io/part-of:emojivoto app.kubernetes.io/version:v10] name:vote-bot namespace:emojivoto] spec:map[replicas:1 selector:map[matchLabels:map[app:vote-bot version:v10]] strategy:map[] template:map[metadata:map[creationTimestamp:<nil> labels:map[app:vote-bot version:v10]] spec:map[containers:[map[command:[emojivoto-vote-bot] env:[map[name:WEB_HOST value:web-svc.emojivoto:80]] image:buoyantio/emojivoto-web:v10 name:vote-bot resources:map[requests:map[cpu:10m]]]]]]] status:map[]] 
INFO[0562] Create the Deployment vote-bot in namespace emojivoto succeed 
DEBU[0563] &{apps/v1, Resource=deployments apps/v1, Kind=Deployment 0x2f01170} 
DEBU[0563] map[apiVersion:apps/v1 kind:Deployment metadata:map[creationTimestamp:<nil> labels:map[app.kubernetes.io/name:voting app.kubernetes.io/part-of:emojivoto app.kubernetes.io/version:v10] name:voting namespace:emojivoto] spec:map[replicas:1 selector:map[matchLabels:map[app:voting-svc version:v10]] strategy:map[] template:map[metadata:map[creationTimestamp:<nil> labels:map[app:voting-svc version:v10]] spec:map[containers:[map[env:[map[name:GRPC_PORT value:8080] map[name:PROM_PORT value:8801]] image:buoyantio/emojivoto-voting-svc:v10 name:voting-svc ports:[map[containerPort:8080 name:grpc] map[containerPort:8801 name:prom]] resources:map[requests:map[cpu:100m]]]] serviceAccountName:voting]]] status:map[]] 
INFO[0563] Create the Deployment voting in namespace emojivoto succeed 
DEBU[0563] &{apps/v1, Resource=deployments apps/v1, Kind=Deployment 0x2f01170} 
DEBU[0563] map[apiVersion:apps/v1 kind:Deployment metadata:map[creationTimestamp:<nil> labels:map[app.kubernetes.io/name:web app.kubernetes.io/part-of:emojivoto app.kubernetes.io/version:v10] name:web namespace:emojivoto] spec:map[replicas:1 selector:map[matchLabels:map[app:web-svc version:v10]] strategy:map[] template:map[metadata:map[creationTimestamp:<nil> labels:map[app:web-svc version:v10]] spec:map[containers:[map[env:[map[name:WEB_PORT value:8080] map[name:EMOJISVC_HOST value:emoji-svc.emojivoto:8080] map[name:VOTINGSVC_HOST value:voting-svc.emojivoto:8080] map[name:INDEX_BUNDLE value:dist/index_bundle.js]] image:buoyantio/emojivoto-web:v10 name:web-svc ports:[map[containerPort:8080 name:http]] resources:map[requests:map[cpu:100m]]]] serviceAccountName:web]]] status:map[]] 
INFO[0563] Create the Deployment web in namespace emojivoto succeed 
DEBU[0563] getResource data: &unstructured.Unstructured{Object:map[string]interface {}{"metadata":map[string]interface {}{"name":"web-svc", "namespace":"default"}}} 
DEBU[0563] getResource res: schema.GroupVersionResource{Group:"", Version:"v1", Resource:"services"} 
WARN[0563] unable to retrieve the resource with a matching name, attempting operation without namespace: services "web-svc" not found 
ERRO[0563] unable to retrieve the resource with a matching name, while attempting to apply the config: the server could not find the requested resource 
ERRO[0563] unable to get service details: unable to retrieve the resource with a matching name, while attempting to apply the config: the server could not find the requested resource 
DEBU[0563] sending event: &meshes.EventsResponse{EventType:1, Summary:"Emojivoto App is deployed but unable to retrieve the port info for the service at the moment", Details:"unable to get service details: unable to retrieve the resource with a matching name, while attempting to apply the config: the server could not find the requested resource", OperationId:"e65a9529-35f4-48b9-bf4e-231dcd0acec9", XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0} 

[Feature] The test cases need to use mock feature

Enhancement Description
A brief description of the enhancement.

Related Challenges
A brief description of what the problem is. (e.g. I need to be able to...)


[Optional] Alternatives
A brief description of any alternative solutions or features you've considered.

[Optional] Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.