Git Product home page Git Product logo

meshery-consul'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](#functionality) - [Meshery Architecture](#meshery-architecture) - [Join the Meshery community!](#join-the-meshery-community) - [Contributing](#contributing) - [Stargazers](#stargazers) - [License](#license)

 

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-consul's People

Contributors

acald-creator avatar aisuko avatar ashiscs avatar asubedy avatar ayushthe1 avatar cristiangutie avatar cypherpunksamurai avatar deepakdinesh1123 avatar delusionaloptimist avatar dependabot-preview[bot] avatar dependabot[bot] avatar girishranganathan avatar gr455 avatar gunjanmimo avatar iamsdas avatar karnatisrinivas avatar kumarabd avatar kushthedude avatar leecalcote avatar lmilekic avatar mgfeller avatar msaini28r avatar muzairs15 avatar nishantn31 avatar ramrodo avatar revolyssup avatar shreyas220 avatar thebeginner86 avatar utkarshmishra12 avatar zanda256 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

meshery-consul's Issues

[Validation] Day 2 operations of Consul server with Autopilot

Enhancement Description
Meshery adapters facilitate service mesh configuration. Consul deployments may be configured with Autopilot running to allow for automatic, operator-friendly management of Consul servers.

Desired Behavior
The Meshery adapter for Consul should support the configuration of running Autopilot to [cleanup dead servers, monitor the state of the Raft cluster, and stable server introduction].(https://learn.hashicorp.com/consul/day-2-operations/autopilot).

Dependabot can't resolve your Go dependency files

Dependabot can't resolve your Go dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:


If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Patternfile Support: Adapter Operation Registration in Meshery Server

Current Behavior
Adapter operations are retrieved from Meshery Server using the meshops proto.

Desired Behavior

  • Implementation of trait definition and workload definitions
  • Registration of OAM traits with Meshery Server.

Resources
See the Meshery and Service Mesh Patterns design spec and the Meshery Architecture deck.

Add PULL_REQUEST_TEMPLATE.md

Current Behavior

This repository does not have a Pull request template just like our other repositories have. You can have a look at the Layer5 repo to know what a PR template looks like.

Desired Behavior

Navigate to the .github folder and create a new file PULL_REQUEST_TEMPLATE.md, copy the contents of the PR template here and paste in the new file.


Contributor Resources

[Sample App] Support deployment of Consul sample app

Enhancement Description
Each service mesh generally has one or more associated sample applications that can be used to demonstrate the power of the given service mesh. Consul uses https://github.com/hashicorp/consul-k8s-l7-obs-guide as a sample application.

Desired Behavior
The Consul adapter currently supports deploying sample applications from other service meshes. It should support the canonical Consul sample app, so that users can get the most thorough tour of Consul's features.

[CI] Trigger 'Meshery Consul' workflow also on pushes to branches with '/' in their name.

Current Behavior

Pushing to a branch whose name contain slashes '/' does not trigger the ci workflow, 'Meshery Consul'. Our naming convention for branches includes '/', e.g. feature/jdoe/24.

Desired Behavior

It is desired that the ci workflow 'Meshery Consul' is triggered when pushing changes to all branches. This ensures that checks are performed and issues caught before a PR is created.

Implementation

In ci.yaml, change the on.pushes.branches filter from '*' to '**'

[CI] Add some basic end-to-end tests

Current Behavior

Currently, there are no automatic tests that help make refactoring safe(r). Testing has to be performed manually.

Desired Behavior

A basic set of simple end-to-end tests that check basic functionality. Initially, the tests are intended to be used only locally, i.e. not as part of the CI pipeline. At first, the tests will not be fully automated, i.e. require some manual setup, e.g. setting up a local cluster.


Resources

Alternatives / Additional Context

The basic pattern of these tests is to install the mesh in the cluster, wait until all rollouts are ready, install sample applications, wait until all rollouts are ready, possibly test the sample application, delete the sample application, repeat for all sample applications, and finally delete the mesh.

Improve support for Consul deployments on clusters with less than 3 nodes

Issue: A Consul deployment on a cluster with less than three nodes finds "consul-server" pods stuck in a Pending state.

Example of a two node system:

➜  ~ k get pods -n consul
NAME                                                              READY   STATUS    RESTARTS   AGE
consul-consul-6jkw6                                               0/1     Running   0          24m
consul-consul-connect-injector-webhook-deployment-5579b766zpmwm   1/1     Running   0          24m
consul-consul-server-0                                            0/1     Pending   0          24m
consul-consul-server-1                                            0/1     Pending   0          24m
consul-consul-server-2                                            0/1     Pending   0          24m
consul-consul-test-1klet                                          0/1     Error     0          24m

The consul servers fail to start:

 Type     Reason            Age                 From               Message
 ----     ------            ----                ----               -------
 Warning  FailedScheduling  47s (x21 over 26m)  default-scheduler  pod has unbound immediate PersistentVolumeClaims

Request: Provide flag to nullify "consul-server"s Pod anti-affinity requirement at https://github.com/layer5io/meshery-consul/blob/master/consul/config_templates/consul.yaml#L615.

@nicholasjackson @eveld, regarding this issue, it seems we’ll need to null the podAntiAffinity requirement in the consul pod spec to allow deployments onto lesser than 3 node clusters. Is that right? https://www.consul.io/docs/platform/k8s/helm.html#v-server-affinity Are there any other solutions we should consider for small deployments?

[CI] Push to Docker Hub only in presence of Release Tag

Currently Behavior
A copy of Meshery-consul is "released" with every merge to master branch.

Desired Behavior
Update ci.yml to only push docker images in the presence of a release tag. Tag docker images akin to the method used for learn-layer5 with a slight tweak: prefix each release tag with the word "stable".

Example
Image 1

  • layer5/meshery-consul:stable-latest
  • layer5/meshery-consul:stable-v0.4.1
  • layer5/meshery-consul:stable-324vdgb (sha)

Image 2

  • layer5/meshery-consul:stable-v0.4.0
  • layer5/meshery-consul:stable-289d02 (sha)

See this section Meshery Build & Release Strategy: https://docs.google.com/document/d/11nAxYtz2SUusCYZ0JeNRrOLIxkgmmbUVWz63MBZV2oE/edit#heading=h.25ywhtn8rxkj

Dependabot can't resolve your Go dependency files

Dependabot can't resolve your Go dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:


If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Create contributing.md in Meshery-consul 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.

[Code] Refactor to use meshery-adapter-library

Current Behavior

This adapter is not using the meshery-adapter-library.

Desired Behavior

This adapter is using the meshery-adapter-library.


Resources

Additional Context

The initial version of meshery-adapter-library has been developed by using code from the kuma adapter and this adapter. The code for this adapter has been refactored to use meshery-adapter-library, for verification and testing purposes. This is the issue related to that work.

[App] Update the Deployment version in httpbin-consul.yaml

Current Situation

Applying http-bin.yaml to the cluster gives the following error:

error: unable to recognize "httpbin-consul.yaml": no matches for kind "Deployment" in version "extensions/v1beta1"

Desired Situation

Applying http-bin.yaml to the cluster is successful.

Implementation

This Deployment version was deprecated and no longer works in recent versions of k8s (e.g. 1.16).
Specify apiVersion: apps/v1 and modify the template, a label selector field needed.

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.

Fix static and error checks

Description
The current build has failing error checks and failing static checks.

Expected Behavior
All build checks should be passing.

Change the status badge in readme with the current workflow

Description
Right now, CI-Status badge shows actions as failing but that job is deprecated & we have renamed our ci action.

Expected Behavior
Change the current badge with this badge:

Meshery Consul

![Meshery Consul](https://github.com/layer5io/meshery-consul/workflows/Meshery%20Consul/badge.svg)

[Install] Make the name of the installConsulCommand operation more descriptive

Current Behavior

The current name is ""Latest version of Consul with sidecar injector"

Desired Behavior

It would be useful to have a name that describes the configuration, in this case that it is an unsecured configuration for one node.
Also, "Latest version" might be removed, because it quickly isn't.
Suggestions

  • "Consul Connect (unsecured, 1 server)"
  • "Consul Connect - unsecured / not production-ready - suitable for one node"?

Implementation

Change in https://github.com/layer5io/meshery-consul/blob/master/consul/supported_ops.go

[Validation] Configuration best practices

Enhancement Description
Meshery adapters facilitate service mesh configuration. Consul deployments may be configured in any number of ways. There are best practices of deploying Consul that a deployment should be checked against.

Desired Behavior
The Meshery adapter for Consul should provide support for validating the current Consul deployment against best practices.

[CI] Incorporate the running of the BATS integration tests in the CI workflow

Current Behavior

Currently, BATS tests can only be run locally, they're not executed as part of the CI-workflow.

Desired Behavior

BATS integration tests should be executed as part of GitHub CI-workflow.


Resources

Alternatives / Additional Context

  • The tests are run directly against the adapter.
  • Locally, the tests can be run by make e2e-tests-localhost if the adapter is reachable on localhost
  • If not, the the env variable MESHERY_ADAPTER_ADDR can be set, and make e2e-tests used to run the tests.

Eliminate Consul Adapter code check (lint) failures

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

Found 5 lint suggestions; failing.
129
##[error]/home/runner/work/meshery-consul/meshery-consul/consul/client.go:23:2: a blank import should be only in a main or test package, or have a comment justifying it
130
##[error]/home/runner/work/meshery-consul/meshery-consul/consul/client.go:29:6: type name will be used as consul.ConsulClient by other packages, and that stutters; consider calling this Client
131
##[error]/home/runner/work/meshery-consul/meshery-consul/consul/consul.go:39:1: exported method ConsulClient.CreateMeshInstance should have comment or be unexported
132
##[error]/home/runner/work/meshery-consul/meshery-consul/consul/consul.go:309:1: comment on exported method ConsulClient.ApplyOperation should be of the form "ApplyOperation ..."
133
##[error]/home/runner/work/meshery-consul/meshery-consul/consul/yaml.go:65:1: exported method YAMLDecoder.Close should have comment or be unexported
134
##[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-consul/pull/7/checks?check_run_id=218292837

[App] Update the Deployment version in bookinfo.yaml

Current Situation

Applying http-bin.yaml to the cluster gives the following error:

error: unable to recognize "bookinfo.yaml": no matches for kind "Deployment" in version "extensions/v1beta1"

Desired Situation

Applying bookinfo.yaml to the cluster is successful.

Implementation:

This Deployment version was deprecated and no longer works in recent versions of k8s (e.g. 1.16).
Specify apiVersion: apps/v1 and modify the template, a label selector field needed.

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.