Giter Club home page Giter Club logo

meshery-nginx-sm's Introduction

Meshery Adapter for NGINX Service Mesh

Docker Pulls Go Report Card Build Status GitHub GitHub issues by-label Website Twitter Follow Discuss Users Slack CII Best Practices



Meshery - the Cloud Native Manager Meshery - the Cloud Native Manager As a self-service engineering platform, Meshery enables collaborative design and operation of cloud native infrastructure. Through it's extension points, Meshery offers the ability to optionally plugin adapters in order to more deeply integrate with specific systems.

If you’re using Meshery or if you like the project, please β˜… star this repository to show your support! 🀩

NGINX Service Mesh (NSM), a fully integrated lightweight service mesh that leverages a data plane powered by NGINX Plus to manage container traffic in Kubernetes environments.

Our projects are community-built and welcome collaboration. πŸ‘ Be sure to see the Contributor Journey Map for a tour of resources available to you and jump into our Slack! Contributors are expected to adhere to the CNCF Code of Conduct. Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode.

βœ”οΈ Join any or all of the weekly meetings on the community calendar.
βœ”οΈ Watch community meeting recordings.
βœ”οΈ To access the Community Drive, fill Community Member Form.
βœ”οΈ Discuss in the Community Forum.

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

License

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

meshery-nginx-sm's People

Contributors

acald-creator avatar ahmadshen avatar anita-ihuman avatar asubedy avatar ayushthe1 avatar chandrashritii avatar delusionaloptimist avatar dependabot[bot] avatar dhruv0000 avatar goldfishdolphin avatar gr455 avatar iamsdas avatar kumarabd avatar kushthedude avatar leecalcote avatar lolverae avatar muzairs15 avatar npdebs avatar philip-21 avatar revolyssup avatar rohith-raju avatar ruhi09 avatar sayantan1413 avatar shreyas220 avatar tangledbytes avatar tapanhalani avatar thebeginner86 avatar utkarsh-pro avatar warunicorn19 avatar yash37158 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meshery-nginx-sm's Issues

[CI] Failing E2E tests

Current Behavior

https://github.com/meshery/meshery-nginx-sm/actions/runs/6887101726

Expected Behavior

All E2E test should pass for latest Meshery Adapter for NGINX Service Mesh.

Screenshots/Logs

Environment

  • Host OS: Mac Linux Windows
  • Platform: Docker or Kubernetes
  • Meshery Server Version: stable-v
  • Meshery Client Version: stable-v
  • Meshery Adapter Version: stable-v

Contributor Guides and Resources

[bugs] nginx-sm installation

Description
Bugs encountered while installing Nginx-sm using the edge-latest release of Meshery and the adapter installed in cluster.

1. Meshery server and adapter installed using mesheryctl:

time="2021-09-24T10:28:33Z" level=error msg="failed to install CRD crds/circuitbreaker.yaml: customresourcedefinitions.apiextensions.k8s.io is forbidden: User\"system:serviceaccount:meshery:default\" cannot create resource \"customresourcedefinitions\" in API group \"apiextensions.k8s.io\" at the cluster scope" app=nginx-adaptor code=1006 probable-cause= severity=2 short-description="Error with Nginx installation" suggested-remediation=
  • Cause: Missing serviceAccount in manifests downloaded by mesheryctl however they're present in the upstream adapter manifests

  • Workaround Edit the adapter's resource and add meshery-server as serviceAccount manually.

  • If you apply the above fix which works with other adapters, the adapter tries to install in meshery namespace regardless of the namespace specified and even then the nginx-sm init pods fail with errors:

    2021-09-24_16-07

    State:          Terminated
    Reason:       Error
    Exit Code:    1

2. Installing meshery and adpater manifests directly using kubectl

  • The same bug you would face when deploying after applying the workaround in the above step.

3. Installing meshery and adapter using Helm

  • Helm charts for nginx-sm adapter not present.

Other bugs:
nginx-sm deployment doesn't show up in Meshery dashboard even though meshsync is receiving the updates.

Environment:

  • OS: Linux
  • Meshery: edge-latest
  • Nginx-sm-adapter: edge-latest
  • Environment: kubernetes 1.20.7
  • Nginx-sm version: v1.2.0

Incorporate adapter version # at buildtime

Current Behavior
The adapter doesn't get build version assigned at build time.

Desired Behavior


Contributor Resources

The meshery.io website uses Jekyll and GitHub Pages. Site content is found under the master branch.

[Read Me] ADD COMMUNITY FORUM

In the README file of this repo, the link for the community discussion forum has not been added yet.

Current State:
image

Desired State:
image


I would like to add the above-mentioned link to the README file for the convenience of the developers who are just starting to contribute to this project.

Add application in E2E tests

Current Behavior

Currently we run e2e tests which run a patternfile(which only installs nginx service mesh)

Desired Behavior

We need to a nginx demo application in patternfile format and add that in e2etest

Implementation

Acceptance Tests

Mockups


Contributor Guides and Resources

Enhance E2E tests to use mesheryctl to deploy Meshery

Current Behavior

The tests in https://github.com/meshery/meshery-nginx-sm/.github/workflows/e2etests.yaml use Kubernetes manifests to deploy Meshery .

Desired Behavior

Edit the workflow to use mesheryctl in deploying meshery.

Implementation

Acceptance Tests

Mockups


Contributor Guides and Resources

Need for upgrading test adapter to v2 for all e2e tests

Current Behavior

Till now we are using v1 for all centralized e2e tests

Expected Behavior

We are now migrating to v2 for all the adapters

Screenshots/Logs

Environment

  • Host OS: Mac Linux Windows
  • Platform: Docker or Kubernetes
  • Meshery Server Version: stable-v
  • Meshery Client Version: stable-v
  • Meshery Adapter Version: stable-v

Contributor Guides and Resources

[CI] Support for Generation of Pattern Components

Current Behavior
Meshery Adapter for NSM should have support for pattern components.

Design spec reference

Desired Behavior
Historical and version versions of NSM components should be created and embedded in this adapter repo.

Implementation

Create a GitHub workflow for getting the manifest from NGINX SM Helm Charts using the kubeopenapi-jsonschema to read and generate json schemas from those manifests and then also generating workload definitions from those schemas.

A sample workflow is here


Contributor Resources

The meshery.io website uses Jekyll and GitHub Pages. Site content is found under the master branch.

[CI] Update Slack.yml and add newcomer-alert workflow

Current Behavior
Currently the slack.yml is outdated. Also there is no automated way of notifying the slack channel when a "good first issue" has been created.

Desired Behavior
Update slack.yml and add newcomer-alert.yml to the Github workflow.


Resources
Add the updated slack.yml file and the newcomer-alert.yml file to the .github/workflow folder.

Files needed:
https://github.com/meshery/meshery-istio/blob/master/.github/workflows/slack.yml
https://github.com/layer5io/layer5/blob/master/.github/workflows/newcomers-alert.yml

Change component generation workflow to normalize with other adapters

Current Behavior

Currently the component-generator workflow is stale and fails.

Desired Behavior

Use the same workflow as other adapters and generate components by running the adapter.

Implementation

Acceptance Tests

Mockups


Contributor Guides and Resources

[CI] Support multi-platform Docker images

Desired Behavior

Meshery users, particularly those running Docker Desktop can benefit from multi-platform images of Meshery Server.

Implementation

Refactor existing stable and edge build and release workflows to use docker-build-push actions. See https://github.com/meshery/meshery/blob/master/.github/workflows/build-and-release-dde.yml as an example.

Be aware of local binaries and their needs:

  1. layer5/kubeopenapi-json

Acceptance Tests

  1. platform: linux/amd64,linux/arm64 should both be supported.

Mockups


Contributor Guides and Resources

[Security] Fix for CVE-2016-9962 (moderate severity)

Current State:

CVE-2016-9962 (moderate severity)

Vulnerable versions: <= 1.0.0-rc2
Patched version: 1.0.0-rc3
RunC allowed additional container processes via 'runc exec' to be ptraced by the pid 1 of the container. This allows the main processes of the container, if running as root, to gain access to file-descriptors of these new processes during the initialization and can lead to container escapes or modification of runC state before the process is fully placed inside the container.

Desired State:

In go.mod:

require github.com/opencontainers/runc v1.0.3

Contributor Resources

[configuration] add operation for enabling automatic sidecar injection

Current Behavior
There is no operation to prepare targeted namespace and enable nginx-sm automatic sidecar injection on it.

Desired Behavior

  • An operation which would allow users to annotate a namespace and thus prepare it for auto sidecar injection.
  • Whenever a sample app is deployed, this operation should be triggered automatically to ensure that the pods have NGINX sidecars injected.

Resources
For reference, see:
https://github.com/meshery/meshery-istio/blob/7d73a272e4886588bb3552018f0eae6f440aa2ea/istio/istio.go#L126
https://github.com/meshery/meshery-istio/blob/40d1ab790a50fd74f603c450da3d05984f8564db/istio/sample_apps.go#L84
https://github.com/meshery/meshery-istio/blob/40d1ab790a50fd74f603c450da3d05984f8564db/istio/sample_apps.go#L108

Contributor Resources

The meshery.io website uses Jekyll and GitHub Pages. Site content is found under the master branch.

Issue Template Updates for Figma link

Current Behavior

The project's current issue templates are missing an open invitation link where new contributors can join the community's Figma team and view user interface designs and other UX projects.

Desired Behavior

Each template that has a reference to Figma in its resources section should an invite link added.

Implementation

In each issue template that refers to Figma, replace the current line referring to Figma with this line:

- 🎨 Wireframes and [designs for Meshery UI](https://www.figma.com/file/SMP3zxOjZztdOLtgN4dS2W/Meshery-UI) in Figma [(open invite)](https://www.figma.com/team_invite/redeem/qJy1c95qirjgWQODApilR9)

Acceptance Tests

  1. All references to Figma include the "open invite" link.

Contributor Guides and Resources

Support for displaying pre-req

Support for displaying pre-req before installing the NGINX-SM in Meshery dashboard, whenever someone tries to install NGINX-sm in the cluster. The mesh requires PV supported and configured in the cluster before installation.

[Readme] Consistently present Meshery logo

Current State

1> The logo in the readme is not consistent with the one in meshery/meshery repo make it consistent :)

2> "Join Layer5 Slack!" text in the readme doesn't display properly in dark mode. Fix it.

Desired State


Contributor Guides and Resources

[CI] Define end-to-end integration test assertions

Current Behavior

The following end-to-end integration test workflow has an incomplete definition of test assertions -

https://github.com/meshery/meshery-nginx-sm/pull/74/files#diff-97b970edb06fde1bf84caf7d208459d2b5e22e8c3166eb9ec6969a321923c9fcR93-R95

Desired Behavior

Define end-to-end integration test assertions

Acceptance Tests

Passing/failing results should show in Meshery Docs compatibility matrix - https://docs.meshery.io/project/compatibility-matrix (this portion of the workflow is complete already).


Contributor Guides and Resources

Create Docker Hub Repository

Description
Adapter images will need to be stored in Layer5's Docker Hub org.

A new repo needs to be created for this adapter.

[CI] add label commenter workflow

Description:

This repository should have the label commenter workflow.
It would run whenever an issue/pr is labelled with one of the targeted labels and comment down any relevant information.

Contributor Reference:

The workflow would use: https://github.com/peaceiris/actions-label-commenter

A sample workflow is defined in: https://github.com/meshery/meshery/blob/master/.github/workflows/label-commenter.yml.

It would also need a sample configuration which is defined in: https://github.com/meshery/meshery/blob/master/.github/label-commenter-config.yml

NOTE:

Adapter version not displaying in Meshery UI

Current Behavior

Screen Shot 2022-01-11 at 5 01 51 PM

Expected Behavior

The release tag (version) should be displayed in this tooltip.

Environment

  • Host OS: Mac
  • Platform: Kubernetes
  • Meshery Server Version: stable-v0.6.0-rc-3
  • Meshery Client Version: stable-v0.6.0-rc-3
  • Meshery Adapter Version: ???

Container image digest: sha256:93c2291e83e86d69d9c0838a81b6373cae005910be7298aac65fa2696aa8112d


Contributor Guides and Resources

Normalise Service Mesh Meshmodel model names to SMP enums

Current Behavior

Desired Behavior

model name should be SMP enum and display-model-name should be human readable sourced from the spreadsheet

Implementation

Acceptance Tests

Mockups


Contributor Guides and Resources

[CI] Update Multi Platform build and Release workflow

Current Behavior

Currently, the multiplatform.yml file is sending unwanted build arguments to docker build process because of which release tag and commit_sha are not being passed over to the image and hence the version of meshery adapter are not visible on-hovering adapters chips on Meshery UI Dashboard.

Desired Behavior

This would be fixed when correct build args are passed to the docker build step inside multiplatform workfow.
Required Args:

  • VERSION
  • GIT_COMMITSHA

Check this commit for reference:
meshery/meshery-consul@446ad17

related to: meshery/meshery#6245

Environment

  • Host OS: Mac Linux Windows
  • Platform: Docker or Kubernetes
  • Meshery Server Version: stable-v
  • Meshery Client Version: stable-v
  • Meshery Adapter Version: stable-v

Contributor Guides and Resources

[Patterns] Support Runtime Generation and Registration of Components

Current Behavior
Adapter invokes predefined operations.

Desired Behavior
In support of service mesh patterns, and now that the open application model types are in meshkit, istio adapter should be modified to use these.


Contributor Resources

The meshery.io website uses Jekyll and GitHub Pages. Site content is found under the master branch.

[MeshOps V2] Nginx being installed in wrong namespace

Current Behavior

In these run https://github.com/meshery/meshery-nginx-sm/actions/runs/4344979097/jobs/7589088220 even after giving namespace explicitly as nginx-system, it is being installed in meshery namespace.

Expected Behavior

Nginx service mesh should be installed in correct namespace.

Screenshots/Logs

Environment

  • Host OS: Mac Linux Windows
  • Platform: Docker or Kubernetes
  • Meshery Server Version: stable-v
  • Meshery Client Version: stable-v
  • Meshery Adapter Version: stable-v

Contributor Guides and Resources

Fix reference to Welcome image

The path to the welcome image needs to be fixed so that the Welcome image appears correctly.

Thanks for your contribution to the Layer5 community! πŸŽ‰

![Congrats!](../.github/welcome/Layer5-celebration.png)

Originally posted by @WELCOME in #8 (comment)

Replace the Logo of Layer5 with Meshery in config.yml workflow

Description

Currently, we are using the Logo of Layer5 instead of Meshery. This repository is under the organization Meshery, so, there should be the image of Meshery.

How to resolve this?

  • Go to .github and replace this welcome image with the new one:

  • Make sure to display the images conditionally, based on the theme selected by user.
    Here's the sample code:

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/GiorgosXou/Random-stuff/main/Programming/StackOverflow/Answers/70200610_11465149/w.png">
  <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/GiorgosXou/Random-stuff/main/Programming/StackOverflow/Answers/70200610_11465149/b.png">
  <img alt="Meshery Logo" src="">
</picture>

New images are:

Meshery-celebration-Light
Meshery-celebration-Dark

  • Download these images, and upload with an appropriate name. Make sure to use conditional rendering as described above.

  • After uploading the image, and removing the previous image, go to .github/config.yml folder and update the reference to previous image to the new image in the following part:

firstPRMergeComment: >
  Thanks for your contribution to the Layer5 and Meshery community! :tada:
   
  ![Congrats!](https://raw.githubusercontent.com/meshery/meshery.io/master/.github/welcome/Layer5-celebration.png)
  &nbsp; &#9; &nbsp; &#9;  &nbsp; &#9;  &nbsp; &#9; :star: Please leave a [star on the project](../stargazers). :smile:

Here, replace ![Congrats!](https://raw.githubusercontent.com/meshery/meshery.io/master/.github/welcome/Layer5-celebration.png) with the code

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/GiorgosXou/Random-stuff/main/Programming/StackOverflow/Answers/70200610_11465149/w.png">
  <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/GiorgosXou/Random-stuff/main/Programming/StackOverflow/Answers/70200610_11465149/b.png">
  <img alt="Shows a black logo in light color mode and a white one in dark color mode." src="https://user-images.githubusercontent.com/25423296/163456779-a8556205-d0a5-45e2-ac17-42d089e3c3f8.png">
</picture>

make sure to change the image sources with the path to image in the folder where you upload it.

  • That's it.

Contributor Guides and Handbook

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.