diff --git a/.github/workflows/meshmap.yml b/.github/workflows/meshmap.yml new file mode 100644 index 000000000000..ea1f3ba433c9 --- /dev/null +++ b/.github/workflows/meshmap.yml @@ -0,0 +1,47 @@ +name: MeshMap Screenshot Service +'on': + pull_request_target: + types: + - opened + - synchronize + - reopened + workflow_call: + inputs: + fileName: + description: Relative file path from the root directory + required: true + type: string + outputs: + resource_url: + description: The URL of the generated resource. + value: ${{ jobs.MeshMapScreenshot.outputs.resource_url }} +permissions: + actions: read + contents: write + security-events: write + statuses: write + pull-requests: write + id-token: write +jobs: + MeshMapScreenshot: + runs-on: ubuntu-latest + outputs: + resource_url: ${{ steps.test_result.outputs.resource_url }} + steps: + - name: Set PR number + run: | + export pull_number=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") + echo "PULL_NO=$pull_number" >> $GITHUB_ENV + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + path: action + repository: layer5labs/meshmap-snapshot + - id: test_result + uses: ${GITHUB_REF/refs/tags//} + with: + githubToken: ${{ secrets.GITHUB_TOKEN }} + providerToken: ${{ secrets.PROVIDER_TOKEN }} + prNumber: ${{ env.PULL_NO }} + application_type: Kubernetes Manifest + filePath: ${{ inputs.fileName == '' && 'lkjh' || inputs.fileName }} diff --git a/package-lock.json b/package-lock.json index 2e0b19c3bb08..1c7505d4d8be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,21 +8,26 @@ "name": "Layer5", "version": "1.0.0", "dependencies": { + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.0", "@fullcalendar/daygrid": "^5.11.3", "@fullcalendar/google-calendar": "^6.1.9", "@fullcalendar/interaction": "^6.1.10", "@fullcalendar/react": "^5.11.2", "@layer5/meshery-design-embed": "^0.2.0", + "@layer5/sistent": "^0.14.13", "@loadable/component": "^5.15.3", "@mdx-js/mdx": "^1.6.22", "@mdx-js/react": "^1.6.22", + "@mui/material": "^5.15.11", "@react-icons/all-files": "^4.1.0", "@sideway/address": "^5.0.0", "@svgr/webpack": "^8.0.1", - "axios": "^1.4.0", + "@types/mui-datatables": "^4.3.12", + "axios": "^1.6.7", "babel-plugin-styled-components": "^2.1.4", "babel-preset-gatsby": "^2.22.0", - "cytoscape": "^3.26.0", + "cytoscape": "^3.28.1", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "dedent": "^1.5.1", @@ -53,6 +58,7 @@ "joi": "^17.10.2", "js-search": "^2.0.0", "lodash": "^4.17.21", + "mui-datatables": "^4.3.0", "prism-react-renderer": "^1.3.5", "prop-types": "^15.7.2", "react": "^17.0.2", @@ -74,7 +80,7 @@ "react-table": "^7.8.0", "react-tabs": "^4.2.1", "react-tooltip": "^4.5.1", - "react-tsparticles": "^2.1.4", + "react-tsparticles": "^2.12.2", "react-vertical-timeline-component": "^3.5.2", "react-visibility-sensor": "^5.1.1", "sharp": "^0.33.2", @@ -94,7 +100,7 @@ "env-cmd": "^10.1.0", "eslint": "^8.28.0", "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.30", - "gh-pages": "^4.0.0", + "gh-pages": "^6.1.1", "husky": "^8.0.3", "rimraf": "^3.0.2", "webpack-cli": "^5.0.2" @@ -2059,16 +2065,38 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.0.tgz", + "integrity": "sha512-HxiRMOncx3ly6f3fcZ1GVKf+/EROcI9qwPgmij8Czqy6Okm/0T37T4y2ZIlLUuEUFjtM7NRsfdCO8Y3tAiJZew==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/runtime-corejs3/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/@babel/template": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", @@ -2216,14 +2244,14 @@ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", + "@emotion/serialize": "^1.1.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1", "@emotion/weak-memoize": "^0.3.1", @@ -2239,9 +2267,9 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", + "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", "dependencies": { "@emotion/hash": "^0.9.1", "@emotion/memoize": "^0.8.1", @@ -2255,6 +2283,36 @@ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/styled/node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, "node_modules/@emotion/stylis": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", @@ -2366,13 +2424,31 @@ "integrity": "sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==" }, "node_modules/@floating-ui/dom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.4.1.tgz", - "integrity": "sha512-loCXUOLzIC3jp50RFOKXZ/kQjjz26ryr/23M+FWG9jrmAv8lRf3DUfC2AiVZ3+K316GOhB08CR+Povwz8e9mDw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dependencies": { - "@floating-ui/core": "^1.3.1" + "@floating-ui/dom": "^1.6.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, "node_modules/@fullcalendar/common": { "version": "5.11.5", "resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.11.5.tgz", @@ -3508,6 +3584,40 @@ "react-dom": "^17.0.2" } }, + "node_modules/@layer5/sistent": { + "version": "0.14.13", + "resolved": "https://registry.npmjs.org/@layer5/sistent/-/sistent-0.14.13.tgz", + "integrity": "sha512-XBaJtCp7IanpVH1kP7zMl1gzuCexamULJdfgKsTET4AAL4x9TJFLHSH4shp02JK1Bgpsv2O+RvrQT2Ne9En1WA==", + "peerDependencies": { + "@emotion/react": "*", + "@emotion/styled": "*", + "@mui/material": "*", + "@types/mui-datatables": "*", + "mui-datatables": "*", + "react": ">=17", + "react-dom": ">=17" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material": { + "optional": true + }, + "mui-datatables": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@lezer/common": { "version": "0.15.12", "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", @@ -3869,6 +3979,291 @@ "win32" ] }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.37", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.37.tgz", + "integrity": "sha512-/o3anbb+DeCng8jNsd3704XtmmLDZju1Fo8R2o7ugrVtPQ/QpcqddwKNzKPZwa0J5T8YNW3ZVuHyQgbTnQLisQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.11", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.11.tgz", + "integrity": "sha512-JVrJ9Jo4gyU707ujnRzmE8ABBWpXd6FwL9GYULmwZRtfPg89ggXs/S3MStQkpJ1JRWfdLL6S5syXmgQGq5EDAw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.11.tgz", + "integrity": "sha512-R5ZoQqnKpd+5Ew7mBygTFLxgYsQHPhgR3TDXSgIHYIjGzYuyPLmGLSdcPUoMdi6kxiYqHlpPj4NJxlbaFD0UHA==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.11.tgz", + "integrity": "sha512-FA3eEuEZaDaxgN3CgfXezMWbCZ4VCeU/sv0F0/PK5n42qIgsPVD6q+j71qS7/62sp6wRFMHtDMpXRlN+tT/7NA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.37", + "@mui/core-downloads-tracker": "^5.15.11", + "@mui/system": "^5.15.11", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.11", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/private-theming": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.11.tgz", + "integrity": "sha512-jY/696SnSxSzO1u86Thym7ky5T9CgfidU3NFJjguldqK4f3Z5S97amZ6nffg8gTD0HBjY9scB+4ekqDEUmxZOA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.11", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.11.tgz", + "integrity": "sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/system": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.11.tgz", + "integrity": "sha512-9j35suLFq+MgJo5ktVSHPbkjDLRMBCV17NMBdEQurh6oWyGnLM4uhU4QGZZQ75o0vuhjJghOCA1jkO3+79wKsA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.11", + "@mui/styled-engine": "^5.15.11", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.11", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/system/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@mui/types": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", + "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.11.tgz", + "integrity": "sha512-D6bwqprUa9Stf8ft0dcMqWyWDKEo7D+6pB1k8WajbqlYIRA8J8Kw9Ra7PSZKKePGBGWO+/xxrX1U8HpG/aXQCw==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -4873,6 +5268,30 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-dnd/asap": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", + "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==" + }, + "node_modules/@react-dnd/invariant": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", + "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", + "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" + }, "node_modules/@react-icons/all-files": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz", @@ -5104,9 +5523,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.0.0.tgz", - "integrity": "sha512-UKrY3860AQICgH7g+6h2zkoxeVEPLYwX/uAjmqo4PIq2FIHppwhIqZstIyTz0ZtlwreKR41O3W3BzsBBiJV2Aw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "engines": { "node": ">=14" }, @@ -5134,9 +5553,9 @@ } }, "node_modules/@svgr/babel-preset": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.0.0.tgz", - "integrity": "sha512-KLcjiZychInVrhs86OvcYPLTFu9L5XV2vj0XAaE1HwE3J3jLmIzRY8ttdeAg/iFyp8nhavJpafpDZTt+1LIpkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", @@ -5144,7 +5563,7 @@ "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "engines": { @@ -5159,12 +5578,12 @@ } }, "node_modules/@svgr/core": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.0.0.tgz", - "integrity": "sha512-aJKtc+Pie/rFYsVH/unSkDaZGvEeylNv/s2cP+ta9/rYWxRVvoV/S4Qw65Kmrtah4CBK5PM6ISH9qUH7IJQCng==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dependencies": { "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.0.0", + "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", "cosmiconfig": "^8.1.3", "snake-case": "^3.0.4" @@ -5178,13 +5597,13 @@ } }, "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dependencies": { - "import-fresh": "^3.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", + "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "engines": { @@ -5192,6 +5611,14 @@ }, "funding": { "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@svgr/hast-util-to-babel-ast": { @@ -5211,12 +5638,12 @@ } }, "node_modules/@svgr/plugin-jsx": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.0.1.tgz", - "integrity": "sha512-bfCFb+4ZsM3UuKP2t7KmDwn6YV8qVn9HIQJmau6xeQb/iV65Rpi7NBNBWA2hcCd4GKoCqG8hpaaDk5FDR0eH+g==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "dependencies": { "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.0.0", + "@svgr/babel-preset": "8.1.0", "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, @@ -5232,9 +5659,9 @@ } }, "node_modules/@svgr/plugin-svgo": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.0.1.tgz", - "integrity": "sha512-29OJ1QmJgnohQHDAgAuY2h21xWD6TZiXji+hnx+W635RiXTAlHTbjrZDktfqzkN0bOeQEtNe+xgq73/XeWFfSg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", "dependencies": { "cosmiconfig": "^8.1.3", "deepmerge": "^4.3.1", @@ -5260,13 +5687,13 @@ } }, "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dependencies": { - "import-fresh": "^3.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", + "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "engines": { @@ -5274,6 +5701,14 @@ }, "funding": { "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@svgr/plugin-svgo/node_modules/css-select": { @@ -5379,14 +5814,15 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, "node_modules/@svgr/plugin-svgo/node_modules/svgo": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", - "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^2.2.1", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, @@ -5402,18 +5838,18 @@ } }, "node_modules/@svgr/webpack": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.0.1.tgz", - "integrity": "sha512-zSoeKcbCmfMXjA11uDuCJb+1LWNb3vy6Qw/VHj0Nfcl3UuqwuoZWknHsBIhCWvi4wU9vPui3aq054qjVyZqY4A==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", "dependencies": { "@babel/core": "^7.21.3", "@babel/plugin-transform-react-constant-elements": "^7.21.3", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.0", - "@svgr/core": "8.0.0", - "@svgr/plugin-jsx": "8.0.1", - "@svgr/plugin-svgo": "8.0.1" + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" }, "engines": { "node": ">=14" @@ -5631,6 +6067,18 @@ "@types/node": "*" } }, + "node_modules/@types/mui-datatables": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@types/mui-datatables/-/mui-datatables-4.3.12.tgz", + "integrity": "sha512-Xz7My6kOi7Q3LK0lNEKVF/XU0jMawIRMpROaXQxn2E8Ccmiguh19MHi/v7I8Qae8AAj/fuDx9EAHGBmvluRf3A==", + "dependencies": { + "@emotion/react": "^11.10.5", + "@emotion/styled": "^11.10.5", + "@mui/material": "^5.11.4", + "@types/react": "*", + "csstype": "3.1.1 || 3.1.2" + } + }, "node_modules/@types/node": { "version": "20.3.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", @@ -5674,9 +6122,9 @@ "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/reach__router": { "version": "1.3.11", @@ -5697,9 +6145,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", - "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } @@ -6640,11 +7088,11 @@ } }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.4", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -9478,9 +9926,9 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/cytoscape": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.26.0.tgz", - "integrity": "sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w==", + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz", + "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==", "dependencies": { "heap": "^0.2.6", "lodash": "^4.17.21" @@ -9651,17 +10099,6 @@ } } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -9914,6 +10351,16 @@ "node": ">=8" } }, + "node_modules/dnd-core": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-11.1.3.tgz", + "integrity": "sha512-QugF55dNW+h+vzxVJ/LSJeTeUw9MCJ2cllhmVThVPEtF16ooBkxj0WBE5RB+AceFxMFo1rO6bJKXtqKl+JNnyA==", + "dependencies": { + "@react-dnd/asap": "^4.0.0", + "@react-dnd/invariant": "^2.0.0", + "redux": "^4.0.4" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -10060,9 +10507,9 @@ "integrity": "sha512-5Gvm09UZTQRaWrimRtWRO5rvaX6Kpk5WHAPKDa7A4Gj6NIPuJ8w8WNpnxCXdd+CJJt6RBU6tUw0KyULoW6XuHw==" }, "node_modules/email-addresses": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", "dev": true }, "node_modules/emoji-regex": { @@ -11767,9 +12214,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -14703,17 +15150,17 @@ } }, "node_modules/gh-pages": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz", - "integrity": "sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.1.1.tgz", + "integrity": "sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==", "dev": true, "dependencies": { - "async": "^2.6.1", - "commander": "^2.18.0", - "email-addresses": "^3.0.1", + "async": "^3.2.4", + "commander": "^11.0.0", + "email-addresses": "^5.0.0", "filenamify": "^4.3.0", "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", + "fs-extra": "^11.1.1", "globby": "^6.1.0" }, "bin": { @@ -14737,32 +15184,32 @@ } }, "node_modules/gh-pages/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true }, "node_modules/gh-pages/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } }, "node_modules/gh-pages/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=14.14" } }, "node_modules/gh-pages/node_modules/globby": { @@ -14781,15 +15228,6 @@ "node": ">=0.10.0" } }, - "node_modules/gh-pages/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/gh-pages/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -14799,15 +15237,6 @@ "node": ">=0.10.0" } }, - "node_modules/gh-pages/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/git-up": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", @@ -17096,6 +17525,11 @@ "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==" }, + "node_modules/lodash.assignwith": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", + "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==" + }, "node_modules/lodash.bind": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", @@ -17131,6 +17565,11 @@ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==" }, + "node_modules/lodash.find": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", + "integrity": "sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==" + }, "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", @@ -17146,6 +17585,21 @@ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, "node_modules/lodash.map": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", @@ -17906,6 +18360,38 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, + "node_modules/mui-datatables": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mui-datatables/-/mui-datatables-4.3.0.tgz", + "integrity": "sha512-LFliQwNnnxW03IO+V3q/ORxZsOHkzl53iGogLbjUJzme47hNEN106dM0ie8oMSc0heYJY0J07oZmKm7Xn3X7IQ==", + "dependencies": { + "@babel/runtime-corejs3": "^7.12.1", + "@emotion/cache": "^11.7.1", + "clsx": "^1.1.1", + "lodash.assignwith": "^4.2.0", + "lodash.clonedeep": "^4.5.0", + "lodash.debounce": "^4.0.8", + "lodash.find": "^4.6.0", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "lodash.isundefined": "^3.0.1", + "lodash.memoize": "^4.1.2", + "lodash.merge": "^4.6.2", + "prop-types": "^15.7.2", + "react-dnd": "^11.1.3", + "react-dnd-html5-backend": "^11.1.3", + "react-sortable-tree-patch-react-17": "^2.9.0", + "react-to-print": "^2.8.0", + "tss-react": "^3.6.0" + }, + "peerDependencies": { + "@emotion/react": "^11.10.5", + "@mui/icons-material": "^5.11.0", + "@mui/material": "^5.11.0", + "react": "^16.8.0 || ^17.0.2 || ^18.2.0", + "react-dom": "^16.8.0 || ^17.0.2 || ^18.2.0" + } + }, "node_modules/multer": { "version": "1.4.5-lts.1", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", @@ -20617,6 +21103,51 @@ "node": ">=8" } }, + "node_modules/react-display-name": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz", + "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==" + }, + "node_modules/react-dnd": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-11.1.3.tgz", + "integrity": "sha512-8rtzzT8iwHgdSC89VktwhqdKKtfXaAyC4wiqp0SywpHG12TTLvfOoL6xNEIUWXwIEWu+CFfDn4GZJyynCEuHIQ==", + "dependencies": { + "@react-dnd/shallowequal": "^2.0.0", + "@types/hoist-non-react-statics": "^3.3.1", + "dnd-core": "^11.1.3", + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "react": ">= 16.9.0", + "react-dom": ">= 16.9.0" + } + }, + "node_modules/react-dnd-html5-backend": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-11.1.3.tgz", + "integrity": "sha512-/1FjNlJbW/ivkUxlxQd7o3trA5DE33QiRZgxent3zKme8DwF4Nbw3OFVhTRFGaYhHFNL1rZt6Rdj1D78BjnNLw==", + "dependencies": { + "dnd-core": "^11.1.3" + } + }, + "node_modules/react-dnd-scrollzone-patch-react-17": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-dnd-scrollzone-patch-react-17/-/react-dnd-scrollzone-patch-react-17-1.0.2.tgz", + "integrity": "sha512-Wfhyc/Y/Veim29REBYm8nMmtDB5IwSmPPhXIuabBgsEa1MrVsuOwK9+7LmuP+mGbDOEP/S6G8+5XvDqPlRFK2g==", + "dependencies": { + "hoist-non-react-statics": "^3.1.0", + "lodash.throttle": "^4.0.1", + "prop-types": "^15.5.9", + "raf": "^3.2.0", + "react-display-name": "^0.2.0" + }, + "peerDependencies": { + "react": "^17.0.1", + "react-dnd": "^11.1.3", + "react-dom": "^17.0.1" + } + }, "node_modules/react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", @@ -20663,8 +21194,7 @@ "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", @@ -20798,6 +21328,27 @@ "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-sortable-tree-patch-react-17": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-sortable-tree-patch-react-17/-/react-sortable-tree-patch-react-17-2.9.0.tgz", + "integrity": "sha512-Ngtdbf78OfjqCxLj7+N+K4zM9d1mQ/tfnUsOfICFDzNa5JHg6AjixAj69ijvz0ykEiA9lYop+0Fm4KCOqCdlKA==", + "dependencies": { + "lodash.isequal": "^4.5.0", + "prop-types": "^15.6.1", + "react": "^17.0.0", + "react-dnd": "^11.1.3", + "react-dnd-html5-backend": "^11.1.3", + "react-dnd-scrollzone-patch-react-17": "^1.0.2", + "react-dom": "^17.0.0", + "react-lifecycles-compat": "^3.0.4", + "react-virtualized": "^9.21.2" + }, + "peerDependencies": { + "react": "^17.0.0", + "react-dnd": "^11.1.3", + "react-dom": "^17.0.0" + } + }, "node_modules/react-swipeable": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-6.2.2.tgz", @@ -20830,6 +21381,15 @@ "react": "^16.8.0 || ^17.0.0-0 || ^18.0.0" } }, + "node_modules/react-to-print": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.15.1.tgz", + "integrity": "sha512-1foogIFbCpzAVxydkhBiDfMiFYhIMphiagDOfcG4X/EcQ+fBPqJ0rby9Wv/emzY1YLkIQy/rEgOrWQT+rBKhjw==", + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-tooltip": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-4.5.1.tgz", @@ -20870,9 +21430,10 @@ } }, "node_modules/react-tsparticles": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/react-tsparticles/-/react-tsparticles-2.10.1.tgz", - "integrity": "sha512-l/xzw9ZOV9M0WJTsZh6AE0SQ9gqZCeGpLsKdm5rr6qWk1DEOd/szbQca3DQENTjQNXXwqZZjKuoAOomnLlRvuA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/react-tsparticles/-/react-tsparticles-2.12.2.tgz", + "integrity": "sha512-/nrEbyL8UROXKIMXe+f+LZN2ckvkwV2Qa+GGe/H26oEIc+wq/ybSG9REDwQiSt2OaDQGu0MwmA4BKmkL6wAWcA==", + "deprecated": "@tsparticles/react is the new version, please use that", "funding": [ { "type": "github", @@ -20889,8 +21450,7 @@ ], "hasInstallScript": true, "dependencies": { - "deep-eql": "^4.1.3", - "tsparticles-engine": "^2.10.1" + "tsparticles-engine": "^2.12.0" }, "peerDependencies": { "react": ">=16" @@ -20949,6 +21509,23 @@ "react": "^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0" } }, + "node_modules/react-virtualized": { + "version": "9.22.5", + "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.5.tgz", + "integrity": "sha512-YqQMRzlVANBv1L/7r63OHa2b0ZsAaDp1UhVNEdUaXI8A5u6hTpA5NYtUueLH2rFuY/27mTGIBl7ZhqFKzw18YQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "clsx": "^1.0.4", + "dom-helpers": "^5.1.3", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0", + "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-visibility-sensor": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-visibility-sensor/-/react-visibility-sensor-5.1.1.tgz", @@ -24178,9 +24755,10 @@ "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" }, "node_modules/tsparticles-engine": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.10.1.tgz", - "integrity": "sha512-DV2gYsbChyiXYIZYgnXtKHSAZdvnNMJpVf9Cw0gO7vjQ6pcgLAeyboRtvsaTfwKZNzzA7BeSf1lVhgGxorL4CQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz", + "integrity": "sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", "funding": [ { "type": "github", @@ -24197,6 +24775,26 @@ ], "hasInstallScript": true }, + "node_modules/tss-react": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/tss-react/-/tss-react-3.7.1.tgz", + "integrity": "sha512-dfWUoxBlKZfIG9UC1A2h02OmcE/Ni0itCmmZu94E9g+KyBhKMHKcsKvUm0bNlRqTmYjXiCgPJDmj5fyc8CSrLg==", + "dependencies": { + "@emotion/cache": "*", + "@emotion/serialize": "*", + "@emotion/utils": "*" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/server": "^11.4.0", + "react": "^16.8.0 || ^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/server": { + "optional": true + } + } + }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -24243,14 +24841,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", diff --git a/package.json b/package.json index f1167e577e1b..6b87709abc31 100644 --- a/package.json +++ b/package.json @@ -25,21 +25,26 @@ "prepare": "husky install" }, "dependencies": { + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.0", "@fullcalendar/daygrid": "^5.11.3", "@fullcalendar/google-calendar": "^6.1.9", "@fullcalendar/interaction": "^6.1.10", "@fullcalendar/react": "^5.11.2", "@layer5/meshery-design-embed": "^0.2.0", + "@layer5/sistent": "^0.14.13", "@loadable/component": "^5.15.3", "@mdx-js/mdx": "^1.6.22", "@mdx-js/react": "^1.6.22", + "@mui/material": "^5.15.11", "@react-icons/all-files": "^4.1.0", "@sideway/address": "^5.0.0", "@svgr/webpack": "^8.0.1", - "axios": "^1.4.0", + "@types/mui-datatables": "^4.3.12", + "axios": "^1.6.7", "babel-plugin-styled-components": "^2.1.4", "babel-preset-gatsby": "^2.22.0", - "cytoscape": "^3.26.0", + "cytoscape": "^3.28.1", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "dedent": "^1.5.1", @@ -70,6 +75,7 @@ "joi": "^17.10.2", "js-search": "^2.0.0", "lodash": "^4.17.21", + "mui-datatables": "^4.3.0", "prism-react-renderer": "^1.3.5", "prop-types": "^15.7.2", "react": "^17.0.2", @@ -91,7 +97,7 @@ "react-table": "^7.8.0", "react-tabs": "^4.2.1", "react-tooltip": "^4.5.1", - "react-tsparticles": "^2.1.4", + "react-tsparticles": "^2.12.2", "react-vertical-timeline-component": "^3.5.2", "react-visibility-sensor": "^5.1.1", "sharp": "^0.33.2", @@ -111,7 +117,7 @@ "env-cmd": "^10.1.0", "eslint": "^8.28.0", "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.30", - "gh-pages": "^4.0.0", + "gh-pages": "^6.1.1", "husky": "^8.0.3", "rimraf": "^3.0.2", "webpack-cli": "^5.0.2" diff --git a/src/assets/brand/layer5-social-backgrounds.zip b/src/assets/brand/layer5-social-backgrounds.zip new file mode 100644 index 000000000000..81bfe4ca0119 Binary files /dev/null and b/src/assets/brand/layer5-social-backgrounds.zip differ diff --git a/src/assets/data/faq/index.js b/src/assets/data/faq/index.js index ad276de8aa9b..ccc5a2582884 100644 --- a/src/assets/data/faq/index.js +++ b/src/assets/data/faq/index.js @@ -171,7 +171,7 @@ const data = { ], }, { - question: "How does Meshery infused GitOps practices into cloud native managemement?", + question: "How does Meshery infuse GitOps practices into cloud native managemement?", category: "Meshery Integrations", link: "https://layer5.io/cloud-native-management/meshery", linktext: "Run Meshery", diff --git a/src/assets/images/app/projects/sistent/bg-colors-table-dark.png b/src/assets/images/app/projects/sistent/bg-colors-table-dark.png new file mode 100644 index 000000000000..7d2afa6a700a Binary files /dev/null and b/src/assets/images/app/projects/sistent/bg-colors-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/bg-colors-table.png b/src/assets/images/app/projects/sistent/bg-colors-table.png new file mode 100644 index 000000000000..44d2fad2d81d Binary files /dev/null and b/src/assets/images/app/projects/sistent/bg-colors-table.png differ diff --git a/src/assets/images/app/projects/sistent/border-colors-table-dark.png b/src/assets/images/app/projects/sistent/border-colors-table-dark.png new file mode 100644 index 000000000000..6bc1932344d6 Binary files /dev/null and b/src/assets/images/app/projects/sistent/border-colors-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/border-colors-table.png b/src/assets/images/app/projects/sistent/border-colors-table.png new file mode 100644 index 000000000000..d668a7bad309 Binary files /dev/null and b/src/assets/images/app/projects/sistent/border-colors-table.png differ diff --git a/src/assets/images/app/projects/sistent/brand-colors-table-dark.png b/src/assets/images/app/projects/sistent/brand-colors-table-dark.png new file mode 100644 index 000000000000..f3a3d3301790 Binary files /dev/null and b/src/assets/images/app/projects/sistent/brand-colors-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/brand-colors-table.png b/src/assets/images/app/projects/sistent/brand-colors-table.png new file mode 100644 index 000000000000..21846768f68e Binary files /dev/null and b/src/assets/images/app/projects/sistent/brand-colors-table.png differ diff --git a/src/assets/images/app/projects/sistent/components-table-dark.png b/src/assets/images/app/projects/sistent/components-table-dark.png new file mode 100644 index 000000000000..3bb5200ba39e Binary files /dev/null and b/src/assets/images/app/projects/sistent/components-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/components-table.png b/src/assets/images/app/projects/sistent/components-table.png new file mode 100644 index 000000000000..078ff2bd7e13 Binary files /dev/null and b/src/assets/images/app/projects/sistent/components-table.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-1.png b/src/assets/images/app/projects/sistent/context-visuals-1.png new file mode 100644 index 000000000000..8a5ab3ff6cdc Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-1.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-2.png b/src/assets/images/app/projects/sistent/context-visuals-2.png new file mode 100644 index 000000000000..c29a0ed20d33 Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-2.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-3.png b/src/assets/images/app/projects/sistent/context-visuals-3.png new file mode 100644 index 000000000000..a73fc404bd56 Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-3.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-4.png b/src/assets/images/app/projects/sistent/context-visuals-4.png new file mode 100644 index 000000000000..620a4d7671f2 Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-4.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-5.png b/src/assets/images/app/projects/sistent/context-visuals-5.png new file mode 100644 index 000000000000..17803855ca44 Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-5.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-6-dark.png b/src/assets/images/app/projects/sistent/context-visuals-6-dark.png new file mode 100644 index 000000000000..5e1eee56a0f7 Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-6-dark.png differ diff --git a/src/assets/images/app/projects/sistent/context-visuals-6.png b/src/assets/images/app/projects/sistent/context-visuals-6.png new file mode 100644 index 000000000000..818df11acd04 Binary files /dev/null and b/src/assets/images/app/projects/sistent/context-visuals-6.png differ diff --git a/src/assets/images/app/projects/sistent/font-pair-dark.png b/src/assets/images/app/projects/sistent/font-pair-dark.png new file mode 100644 index 000000000000..d1baeadcc93e Binary files /dev/null and b/src/assets/images/app/projects/sistent/font-pair-dark.png differ diff --git a/src/assets/images/app/projects/sistent/font-pair-light.png b/src/assets/images/app/projects/sistent/font-pair-light.png new file mode 100644 index 000000000000..fbcfc1905d1b Binary files /dev/null and b/src/assets/images/app/projects/sistent/font-pair-light.png differ diff --git a/src/assets/images/app/projects/sistent/function-colors-table-dark.png b/src/assets/images/app/projects/sistent/function-colors-table-dark.png new file mode 100644 index 000000000000..1493cb1e1715 Binary files /dev/null and b/src/assets/images/app/projects/sistent/function-colors-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/function-colors-table.png b/src/assets/images/app/projects/sistent/function-colors-table.png new file mode 100644 index 000000000000..860843e1a28d Binary files /dev/null and b/src/assets/images/app/projects/sistent/function-colors-table.png differ diff --git a/src/assets/images/app/projects/sistent/greyscale-colors-table-dark.png b/src/assets/images/app/projects/sistent/greyscale-colors-table-dark.png new file mode 100644 index 000000000000..a3baf41bbc9d Binary files /dev/null and b/src/assets/images/app/projects/sistent/greyscale-colors-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/greyscale-colors-table.png b/src/assets/images/app/projects/sistent/greyscale-colors-table.png new file mode 100644 index 000000000000..d56a49b84a8d Binary files /dev/null and b/src/assets/images/app/projects/sistent/greyscale-colors-table.png differ diff --git a/src/assets/images/app/projects/sistent/space-token-table-1-dark.png b/src/assets/images/app/projects/sistent/space-token-table-1-dark.png new file mode 100644 index 000000000000..d73e380fc360 Binary files /dev/null and b/src/assets/images/app/projects/sistent/space-token-table-1-dark.png differ diff --git a/src/assets/images/app/projects/sistent/space-token-table-1-light.png b/src/assets/images/app/projects/sistent/space-token-table-1-light.png new file mode 100644 index 000000000000..5ef3f01a8054 Binary files /dev/null and b/src/assets/images/app/projects/sistent/space-token-table-1-light.png differ diff --git a/src/assets/images/app/projects/sistent/space-token-table-2-dark.png b/src/assets/images/app/projects/sistent/space-token-table-2-dark.png new file mode 100644 index 000000000000..9f9f28fa40bf Binary files /dev/null and b/src/assets/images/app/projects/sistent/space-token-table-2-dark.png differ diff --git a/src/assets/images/app/projects/sistent/space-token-table-2-light.png b/src/assets/images/app/projects/sistent/space-token-table-2-light.png new file mode 100644 index 000000000000..3da2ef877d88 Binary files /dev/null and b/src/assets/images/app/projects/sistent/space-token-table-2-light.png differ diff --git a/src/assets/images/app/projects/sistent/space-token-table-3-dark.png b/src/assets/images/app/projects/sistent/space-token-table-3-dark.png new file mode 100644 index 000000000000..f745e45e2602 Binary files /dev/null and b/src/assets/images/app/projects/sistent/space-token-table-3-dark.png differ diff --git a/src/assets/images/app/projects/sistent/space-token-table-3-light.png b/src/assets/images/app/projects/sistent/space-token-table-3-light.png new file mode 100644 index 000000000000..96418ac81119 Binary files /dev/null and b/src/assets/images/app/projects/sistent/space-token-table-3-light.png differ diff --git a/src/assets/images/app/projects/sistent/text-colors-table-dark.png b/src/assets/images/app/projects/sistent/text-colors-table-dark.png new file mode 100644 index 000000000000..13fb7214cab5 Binary files /dev/null and b/src/assets/images/app/projects/sistent/text-colors-table-dark.png differ diff --git a/src/assets/images/app/projects/sistent/text-colors-table.png b/src/assets/images/app/projects/sistent/text-colors-table.png new file mode 100644 index 000000000000..126db0cfd25f Binary files /dev/null and b/src/assets/images/app/projects/sistent/text-colors-table.png differ diff --git a/src/assets/images/app/projects/sistent/tonal-palettes-dark.png b/src/assets/images/app/projects/sistent/tonal-palettes-dark.png new file mode 100644 index 000000000000..12b1b64970b1 Binary files /dev/null and b/src/assets/images/app/projects/sistent/tonal-palettes-dark.png differ diff --git a/src/assets/images/app/projects/sistent/tonal-palettes-full-dark.png b/src/assets/images/app/projects/sistent/tonal-palettes-full-dark.png new file mode 100644 index 000000000000..4f42f0913384 Binary files /dev/null and b/src/assets/images/app/projects/sistent/tonal-palettes-full-dark.png differ diff --git a/src/assets/images/app/projects/sistent/tonal-palettes-full.png b/src/assets/images/app/projects/sistent/tonal-palettes-full.png new file mode 100644 index 000000000000..a74af5997df0 Binary files /dev/null and b/src/assets/images/app/projects/sistent/tonal-palettes-full.png differ diff --git a/src/assets/images/app/projects/sistent/tonal-palettes.png b/src/assets/images/app/projects/sistent/tonal-palettes.png new file mode 100644 index 000000000000..e81d6e2d9a5f Binary files /dev/null and b/src/assets/images/app/projects/sistent/tonal-palettes.png differ diff --git a/src/assets/images/app/projects/sistent/type-details-1-dark.png b/src/assets/images/app/projects/sistent/type-details-1-dark.png new file mode 100644 index 000000000000..5a46eacf4be5 Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-details-1-dark.png differ diff --git a/src/assets/images/app/projects/sistent/type-details-1-light.png b/src/assets/images/app/projects/sistent/type-details-1-light.png new file mode 100644 index 000000000000..86cf137677c0 Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-details-1-light.png differ diff --git a/src/assets/images/app/projects/sistent/type-scale-1-dark.png b/src/assets/images/app/projects/sistent/type-scale-1-dark.png new file mode 100644 index 000000000000..25b70ceb180a Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-scale-1-dark.png differ diff --git a/src/assets/images/app/projects/sistent/type-scale-1-light.png b/src/assets/images/app/projects/sistent/type-scale-1-light.png new file mode 100644 index 000000000000..67a52c74dc5d Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-scale-1-light.png differ diff --git a/src/assets/images/app/projects/sistent/type-scale-2-dark.png b/src/assets/images/app/projects/sistent/type-scale-2-dark.png new file mode 100644 index 000000000000..d4dfebff0be8 Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-scale-2-dark.png differ diff --git a/src/assets/images/app/projects/sistent/type-scale-2-light.png b/src/assets/images/app/projects/sistent/type-scale-2-light.png new file mode 100644 index 000000000000..b12b3b53c92c Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-scale-2-light.png differ diff --git a/src/assets/images/app/projects/sistent/type-scale-3-dark.png b/src/assets/images/app/projects/sistent/type-scale-3-dark.png new file mode 100644 index 000000000000..0518575fbe6e Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-scale-3-dark.png differ diff --git a/src/assets/images/app/projects/sistent/type-scale-3-light.png b/src/assets/images/app/projects/sistent/type-scale-3-light.png new file mode 100644 index 000000000000..cfa12f90caa2 Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-scale-3-light.png differ diff --git a/src/assets/images/app/projects/sistent/type-table-1-dark.png b/src/assets/images/app/projects/sistent/type-table-1-dark.png new file mode 100644 index 000000000000..14093a8fffef Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-table-1-dark.png differ diff --git a/src/assets/images/app/projects/sistent/type-table-1-light.png b/src/assets/images/app/projects/sistent/type-table-1-light.png new file mode 100644 index 000000000000..58e90e71c5f7 Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-table-1-light.png differ diff --git a/src/assets/images/app/projects/sistent/type-table-2-dark.png b/src/assets/images/app/projects/sistent/type-table-2-dark.png new file mode 100644 index 000000000000..e69934e6af80 Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-table-2-dark.png differ diff --git a/src/assets/images/app/projects/sistent/type-table-2-light.png b/src/assets/images/app/projects/sistent/type-table-2-light.png new file mode 100644 index 000000000000..027da28c674e Binary files /dev/null and b/src/assets/images/app/projects/sistent/type-table-2-light.png differ diff --git a/src/assets/images/meshery/full-logo/meshery-logo-dark-text-side.webp b/src/assets/images/meshery/full-logo/meshery-logo-dark-text-bg.webp similarity index 100% rename from src/assets/images/meshery/full-logo/meshery-logo-dark-text-side.webp rename to src/assets/images/meshery/full-logo/meshery-logo-dark-text-bg.webp diff --git a/src/assets/images/meshery/full-logo/meshery-logo-light-text-tag.svg b/src/assets/images/meshery/full-logo/meshery-logo-light-text-tag.svg deleted file mode 100644 index 3b708d2095fe..000000000000 --- a/src/assets/images/meshery/full-logo/meshery-logo-light-text-tag.svg +++ /dev/null @@ -1 +0,0 @@ -meshery-logo-light-text-tagTHE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/full-logo/meshery-logo-tag-dark-text-side.svg b/src/assets/images/meshery/full-logo/meshery-logo-tag-dark-text-side.svg deleted file mode 100644 index d0355e42181b..000000000000 --- a/src/assets/images/meshery/full-logo/meshery-logo-tag-dark-text-side.svg +++ /dev/null @@ -1 +0,0 @@ -meshery-logo-tag-dark-text-sideTHE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/full-logo/meshery-logo-tag-dark-text-side.webp b/src/assets/images/meshery/full-logo/meshery-logo-tag-dark-text-side.webp deleted file mode 100644 index c8dd5dad7a18..000000000000 Binary files a/src/assets/images/meshery/full-logo/meshery-logo-tag-dark-text-side.webp and /dev/null differ diff --git a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-text-side.svg b/src/assets/images/meshery/full-logo/meshery-logo-tag-light-text-side.svg deleted file mode 100644 index 1ca8d43e4d72..000000000000 --- a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-text-side.svg +++ /dev/null @@ -1 +0,0 @@ -meshery-logo-tag-light-text-sideTHE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-text-side.webp b/src/assets/images/meshery/full-logo/meshery-logo-tag-light-text-side.webp deleted file mode 100644 index d8d91a4bc2c2..000000000000 Binary files a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-text-side.webp and /dev/null differ diff --git a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-white-text-side.svg b/src/assets/images/meshery/full-logo/meshery-logo-tag-light-white-text-side.svg deleted file mode 100644 index 0e32b9c181ad..000000000000 --- a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-white-text-side.svg +++ /dev/null @@ -1 +0,0 @@ -meshery-logo-tag-light-white-text-sideTHE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-white-text-side.webp b/src/assets/images/meshery/full-logo/meshery-logo-tag-light-white-text-side.webp deleted file mode 100644 index 81d0064e44b5..000000000000 Binary files a/src/assets/images/meshery/full-logo/meshery-logo-tag-light-white-text-side.webp and /dev/null differ diff --git a/src/assets/images/meshery/full-logo/meshery-logo-white-tag-side.svg b/src/assets/images/meshery/full-logo/meshery-logo-white-tag-side.svg deleted file mode 100644 index ec73947071b4..000000000000 --- a/src/assets/images/meshery/full-logo/meshery-logo-white-tag-side.svg +++ /dev/null @@ -1 +0,0 @@ -Asset 10THE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/text-only/meshery-dark-tag-text.svg b/src/assets/images/meshery/text-only/meshery-dark-tag-text.svg deleted file mode 100644 index d5e2ff0e30f3..000000000000 --- a/src/assets/images/meshery/text-only/meshery-dark-tag-text.svg +++ /dev/null @@ -1 +0,0 @@ -meshery-dark-tag-textTHE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/text-only/meshery-dark-tag-text.webp b/src/assets/images/meshery/text-only/meshery-dark-tag-text.webp deleted file mode 100644 index 441526caa763..000000000000 Binary files a/src/assets/images/meshery/text-only/meshery-dark-tag-text.webp and /dev/null differ diff --git a/src/assets/images/meshery/text-only/meshery-dark-text.webp b/src/assets/images/meshery/text-only/meshery-dark-text.webp deleted file mode 100644 index 5ddbd9d25d8b..000000000000 Binary files a/src/assets/images/meshery/text-only/meshery-dark-text.webp and /dev/null differ diff --git a/src/assets/images/meshery/text-only/meshery-text-tag-dark.svg b/src/assets/images/meshery/text-only/meshery-text-tag-dark.svg deleted file mode 100644 index b6fe7f544493..000000000000 --- a/src/assets/images/meshery/text-only/meshery-text-tag-dark.svg +++ /dev/null @@ -1 +0,0 @@ -meshery-text-tag-darkTHE MULTI-MESH MANAGER \ No newline at end of file diff --git a/src/assets/images/meshery/text-only/meshery-text-tag-dark.webp b/src/assets/images/meshery/text-only/meshery-text-tag-dark.webp deleted file mode 100644 index 3e878fe9809d..000000000000 Binary files a/src/assets/images/meshery/text-only/meshery-text-tag-dark.webp and /dev/null differ diff --git a/src/assets/images/partners/aya_pay_black.svg b/src/assets/images/partners/aya_pay_black.svg new file mode 100644 index 000000000000..77ab6a4e7269 --- /dev/null +++ b/src/assets/images/partners/aya_pay_black.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/sistent/sistent-logo.svg b/src/assets/images/sistent/sistent-logo.svg new file mode 100644 index 000000000000..c497b2781e4e --- /dev/null +++ b/src/assets/images/sistent/sistent-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/social-backgrounds/layer5-charcoal-background.png b/src/assets/images/social-backgrounds/layer5-charcoal-background.png new file mode 100644 index 000000000000..fbc537bac244 Binary files /dev/null and b/src/assets/images/social-backgrounds/layer5-charcoal-background.png differ diff --git a/src/collections/blog/2022/2022-01-22-the-story-of-meshery-1000-stars/index.mdx b/src/collections/blog/2022/2022-01-22-the-story-of-meshery-1000-stars/index.mdx index 1e0d4d613abf..e7e5391866a7 100644 --- a/src/collections/blog/2022/2022-01-22-the-story-of-meshery-1000-stars/index.mdx +++ b/src/collections/blog/2022/2022-01-22-the-story-of-meshery-1000-stars/index.mdx @@ -43,7 +43,7 @@ import Slack from "./meshery-star-notifications.webp"; networking,{" "}
{" "} empowers them to design and apply patterns containing tried and true best diff --git a/src/collections/blog/2023/Load-Generation-Load-Balancing/Layer5.svg b/src/collections/blog/2023/Load-Generation-Load-Balancing/Layer5.svg new file mode 100644 index 000000000000..d9e15b1b0d37 --- /dev/null +++ b/src/collections/blog/2023/Load-Generation-Load-Balancing/Layer5.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/collections/blog/2023/Load-Generation-Load-Balancing/MeshMap.svg b/src/collections/blog/2023/Load-Generation-Load-Balancing/MeshMap.svg new file mode 100644 index 000000000000..2416229bf08d --- /dev/null +++ b/src/collections/blog/2023/Load-Generation-Load-Balancing/MeshMap.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/collections/blog/2023/Load-Generation-Load-Balancing/index.md b/src/collections/blog/2023/Load-Generation-Load-Balancing/index.md new file mode 100644 index 000000000000..334679e654fb --- /dev/null +++ b/src/collections/blog/2023/Load-Generation-Load-Balancing/index.md @@ -0,0 +1,145 @@ +--- +title: "Load Generation and Load Balancing" +subtitle: "Fueling Performance Testing and Ensuring Fair Distribution of Workload" +date: 2024-03-29 10:30:05 -0530 +author: Chandravijay Rai +thumbnail: "./MeshMap.svg" +darkthumbnail: "./MeshMap.svg" +category: "Kubernetes" +description: "Load Generation simulates demand on software, identifying capacity and bottlenecks and Load Balancing distributes workloads across resources, preventing overload and enhancing performance." +tags: + - Kubernetes + - Meshery +type: Blog +resource: false +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; +import Layer5 from "./Layer5.svg"; + + + +# Load Generation + +Load generation is a crucial testing technique employed to scrutinize a system's behavior under specific loads. The primary objectives include identifying bottlenecks, measuring performance, and gaining insights into how the system operates under extreme conditions. + +Load tests empower developers to: + +- Understand the scalability of the application +- Identify and rectify bottlenecks +- Ensure reliability and robustness of the application +- Predict system behavior under varying conditions + +## [Meshery](https://meshery.io/) Load Generator + +Let's delve into Meshery, a multi-Cloud Native management plane founded by [Layer5](https://layer5.io/)—a community dedicated to open-source initiatives in network management and observability. Meshery aids developers in assessing the performance of their Cloud Native applications. + + Meshery boasts a comprehensive set of features, including: + +- Performance testing +- Cloud Native Lifecycle Management +- Configuration management + +Supporting various load generators like HTTP/HTTPS/HTTP2, [Nighthawk](https://layer5.io/projects/nighthawk) and its built-in load generator, Meshery facilitates the creation of synthetic HTTP load and enables benchmarking the performance of Cloud Native applications. +Developers can choose their preferred load generator for tests and benefit from the capability to run tests, providing a more comprehensive performance analysis. + +With Meshery, developers can: + +- Manage the lifecycle of various [Cloud Native](https://play.meshery.io/) applications. +- Conduct performance tests and compare results between across different [Cloud Native](https://play.meshery.io/) environments. +- Apply custom or pre-defined configurations to enhance [Cloud Native](https://play.meshery.io/) functionality. + + +# Load Balancing + +Load balancing is a critical technique that enhances the responsiveness, reliability, and scalability of applications by efficiently distributing incoming network traffic across multiple servers. In this guide, we'll explore various load balancing techniques and algorithms, shedding light on their roles, benefits, and challenges in the context of Kubernetes networking. + +## Introduction: The Crucial Role of Load Balancing + +Load balancing plays a pivotal role in optimizing the performance of internet applications by efficiently managing network traffic. Imagine a grocery store with multiple checkout lines—one open and the others closed. Load balancing is akin to opening all checkout lines,thereby reducing wait times, and improving overall efficiency. +
+ +
+ +
+

Layer5

+
+
+ +### How Load Balancing Works: + +Load balancing involves three main components: + +1. **Load Balancer:** Positioned between users and application servers, it monitors incoming traffic and redirects it to the most suitable server. It can be hardware-based or software-based, with the latter running on existing infrastructure. + +2. **Application Servers:** These servers host applications, receiving traffic from the load balancer and serving requested content to users. + +3. **Users:** End-users access applications through the internet or intranet. + +When a user initiates a request, the load balancer evaluates factors such as server capacity, usage rate, and response time to determine the optimal server. This process enhances efficiency and reduces user wait times. + +## Benefits of Load Balancers: Performance, Reliability, and Scalability + + > **Improved Performance:** By distributing workloads evenly, response time and system latency are reduced. + + > **Increased Reliability:** Fault tolerance is enhanced by detecting and removing failed or unhealthy servers,redirecting traffic to functional servers. + + > **Enhanced Scalability:** The system's capacity can be horizontally scaled by adding more servers without impacting existing ones. + + > **Reduced Costs:** Efficient resource utilization avoids underutilization or overprovisioning of servers. + +## Load Balancing with [Meshery](https://meshery.io/) + +Meshery serves as a platform for managing various Cloud Native applications . While it doesn't directly perform load balancing directly, Meshery allows users to configure and observe load balancing within their chosen Cloud Native Adaptors. Through a unified dashboard, users can customize load balancing settings, monitor relevant metrics, and leverage observability tools to gain insights into the performance and health of load balancing features. Meshery's focus is on providing a consistent and user-friendly interface for Cloud Native Lifecycle Management, including load balancing configuration. + +**Adapters** + + - [Istio](https://docs.meshery.io/service-meshes/adapters/istio) + - [Linkerd](https://docs.meshery.io/service-meshes/adapters/linkerd) + - [Consul](https://docs.meshery.io/service-meshes/adapters/consul) + - [Network Service Mesh](https://docs.meshery.io/service-meshes/adapters/nsm) + + +## Types of Load Balancers in Kubernetes: Service, Ingress, and External + +1. **Service Load Balancing:** This basic Kubernetes tactic routes all requests to a service and directs them to matching pods. It's suitable for cluster-internal traffic but lacks advanced features like SSL termination. + +2. **Ingress Load Balancing:** Handling external traffic, it routes requests based on rules defined in an ingress resource. It offers more flexibility and functionality, including SSL termination and authentication. + +3. **External Load Balancing:** Involving external load balancers from cloud providers (AWS ELB, Google Cloud Load Balancer), it provides layer-4 or layer-7 load balancing and high availability. However, it adds complexity and additional costs. + +## Challenges of Load Balancing + +Despite its advantages, load balancing comes with challenges such as the need for careful configuration to address specific application requirements and potential complexities in managing dynamic workloads. + + +## Load Balance Algorithms: Static and Dynamic +
+ +##### Static Load Balancing Algorithms: + +1. **Round Robin:** Distributes requests sequentially across servers. + +2. **Hash:** Distributes requests based on a key, such as client IP address or request URL. + +3. **Random:** Distributes requests randomly. + +##### Dynamic Load Balancing Algorithms: + +1. **Least Connections:** Directs requests to the server with the fewest active connections. + +2. **Least Response Time:** Considers active connections and average response time to determine the optimal server. + +3. **Least Bandwidth:** Routes requests to the server with the least traffic. + +## Choosing the Right Load Balancer: Tips and Considerations + +Consider factors like application needs, performance requirements, and scalability when selecting a load balancer—whether hardware, software, or a combination. +
+ +## Conclusion: Empowering Applications with Optimal Load Balancing + +Load balancing is a powerful technique that significantly impacts the performance, reliability, and scalability of applications. Whether distributing workloads based on static or dynamic algorithms, choosing the right load balancing strategy is crucial for delivering an exceptional user experience and optimizing resources. As technologies evolve, staying informed about the latest load balancing practices ensures continuous improvement in application delivery. + +
diff --git a/src/collections/blog/2024/01-07-contributing-as-a-designer/header-image.svg b/src/collections/blog/2024/01-07-contributing-as-a-designer/header-image.svg new file mode 100644 index 000000000000..874c306526d5 --- /dev/null +++ b/src/collections/blog/2024/01-07-contributing-as-a-designer/header-image.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/collections/blog/2024/01-07-contributing-as-a-designer/index.mdx b/src/collections/blog/2024/01-07-contributing-as-a-designer/index.mdx new file mode 100644 index 000000000000..e8d96eddfc20 --- /dev/null +++ b/src/collections/blog/2024/01-07-contributing-as-a-designer/index.mdx @@ -0,0 +1,60 @@ +--- +title: "Contributing to Layer5: A Designer’s Journey" +subtitle: "Insights from a visual design intern at Layer5" +date: 2024-01-07 10:30:05 -0530 +author: Victoria Nduka +thumbnail: ./header-image.svg +darkthumbnail: ./header-image.svg +category: "Community" +description: "Insights from my experience contributing to Layer5 as a design intern" +tags: + - Community + - Internship +type: Blog +resource: false +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; + + + +Early last month, I got the news that I had been accepted as a UI Visual Design Intern at Layer5. Five months ago, I was a new contributor with zero knowledge of cloud native technologies roaming through their Github looking to make my first contribution. In this article, I’ll share my journey contributing to Layer5 as a designer. I’ll also share insights I hope new contributors find useful as they navigate their open source journey. + +### Discovery +I first learned about Layer5 through the LFX Mentorship. I stumbled upon a tweet by [Anita Ihuman](/community/members/anita-ihuman) announcing that [Meshery](https://layer5.io/cloud-native-management/meshery) was accepting mentees for a design-related project. I had always been looking to make design contributions to open source projects but it was hard finding one. So, this was a great opportunity for me. + +### My First Contribution +Interestingly, my first contribution to Layer5 had nothing to do with design. It was a writing task. They needed a blog that highlighted [the importance of GitHub stars](https://layer5.io/blog/community/on-the-importance-of-github-stars) to a project. The purpose of the blog was to boost the project’s visibility by encouraging more people to [give Meshery a star](https://github.com/meshery/meshery) on GitHub. Since I had some experience writing, I volunteered to write the blog. It was a bit more tasking than I had anticipated but with the help of the community, I was able to work through it. + +### Making Design Contributions +I noticed there were a bunch of open issues to design badges for users and contributors. I requested to work on one of the badges and got assigned. I didn’t initially have edit access to the community Figma file so I struggled to get assets like the logo and font to create the design. I eventually found them in the local branch of Layer5 that I had cloned earlier on my PC. Turned out that all the resources I needed to complete that task were available to me; I just needed to know where to look. + +That was my first design contribution. Since then I’ve designed more badges and contributed in many other ways besides design. For instance, I worked on documentation and helped with marketing and community management. + +### How I've Benefited +Here’s a non-exhaustive summary of how contributing to Layer5 has benefited me: +1. **Autonomy** - I’ve learned to own my process and see tasks from start to finish. When I volunteered to write that first blog, I thought I’d do just the writing part and someone else would get it up on the website. I didn’t realize that I would have to clone a repository, learn to use Git CMD, make commits, learn Markdown, and raise a pull request. These were all foreign to me and I was doing them for the first time. It was a great learning opportunity and I’m grateful for it. +1. **Presentation** - We hold weekly meetings where contributors share what they’re working on and receive feedback. Presenting at these meetings has taught me to not just show my work, but to talk about it. I’m not a great orator so this was challenging for me at first but I’ve noticed that I’m getting more confident with each presentation I make. I’m gradually learning how to clearly articulate my thought process and have a valid justification for any route I choose to take to complete a task. +1. **Design** - Making design contributions has helped improve the quality of my work. Sometimes, I’d nail a design on my first try. Other times, I may have to iterate several times before I get it right. The important thing is that I end up producing high-quality work. I’ve also learned to detach myself from my work, be objective, and gracefully accept constructive criticism. +1. **Collaboration** - For the first time, I get to work together with developers and other designers. Thanks to Layer5. I’m also learning to use communication and collaboration tools like Slack, GitHub, and ClickUp. + +### How You Can Contribute to Layer5 +My experience clearly shows that you don’t necessarily need to know anything about coding or cloud native technologies to contribute to Layer5 projects. Are you a designer, technical writer, community manager, or digital marketer? There are several ways to contribute. You can +- Work on improving the [documentation](https://docs.layer5.io), +- Design new website pages or improve the UX of existing ones, +- Warmly welcome newcomers to the community and offer support, +- Give constructive feedback during the weekly meetings, +- Talk about Layer5 and invite your friends to use and [star Meshery](https://github.com/meshery), +- Write articles for our blog. + +The list is endless. My advice is that you do not box yourself. Don’t feel that because you’re a designer, your contributions will be strictly design-related. If you want to make impactful contributions, pay attention to the needs of the community/project and help where you can. + +For more guidance on contributing to Layer5, check out our [newcomer’s guide](https://layer5.io/community/newcomers). + + +\-- Victoria Nduka + +_**P.S.: If these topics excite you and you want to explore the beautiful realm of service meshes, come and say "Hi" on our [Slack Channel](http://slack.layer5.io) and one of us will reach out to you!**_ + + diff --git a/src/collections/blog/2024/02-13-what-is-platform-engineering/index.mdx b/src/collections/blog/2024/02-13-what-is-platform-engineering/index.mdx new file mode 100644 index 000000000000..19dc42b45414 --- /dev/null +++ b/src/collections/blog/2024/02-13-what-is-platform-engineering/index.mdx @@ -0,0 +1,155 @@ +--- +title: What is Platform Engineering? +subtitle: +date: 2024-02-23 08:00:00 -0530 +author: Layer5 Team +thumbnail: ./platform-engineering-hero.png +darkthumbnail: ./platform-engineering-hero.png +description: "What is Platform Engineering? What is an internal developer platform? How Meshery is a self-service, extensible engineering platform." +type: Blog +category: Platform Engineering +tags: + - Platform Engineering + - Kubernetes +featured: true +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; +import { Link } from "gatsby"; +import Button from "../../../../reusecore/Button"; +import CTA_FullWidth from "../../../../components/Call-To-Actions/CTA_FullWidth"; +import CTAImg from "../../../../assets/images/meshery/icon-only/meshery-logo-shadow.webp" + + +

In today's fast-paced and interconnected world, the success of many businesses depends heavily on technology platforms that enable them to deliver their products and services efficiently. Platform engineering plays a crucial role in the development, operation, and maintenance of these platforms, ensuring their stability, scalability, and security.

+ +

+In this article, we will explore the fundamentals of platform engineering, providing a comprehensive overview of the key concepts, benefits, and challenges associated with this field. We will delve into the process of designing and building a platform, discussing the identification of requirements, architectural considerations, and the tools and technologies that facilitate platform development. Additionally, we will explore the critical aspects of operating and maintaining a platform, including managing infrastructure, monitoring performance, and ensuring security and compliance. +

+ +By understanding the intricacies of platform engineering, businesses and technology professionals can effectively leverage the power of platforms to drive innovation, enhance customer experiences, and achieve their organizational goals. Whether you are a software engineer, a platform architect, or a business leader, this article will provide valuable insights into the world of platform engineering and equip you with the knowledge required to navigate this ever-evolving landscape. + +## Fundamentals of Platform Engineering + +Platform engineering is a rapidly evolving discipline that plays a crucial role in the development and success of modern software systems. In this section, we will explore the fundamentals of platform engineering, including its definition, importance, key concepts, and the benefits and challenges associated with it. + +### Definition and Importance of Platform Engineering + +Platform engineering can be defined as the process of designing, building, and maintaining a stable and scalable foundation upon which software applications and services can be developed, deployed, and operated. It involves creating a set of reusable and customizable components, tools, and frameworks that enable developers to build and deploy applications with greater efficiency and speed. + +

The importance of platform engineering cannot be overstated. A well-designed platform provides a solid foundation for software development, allowing organizations to deliver high-quality applications that meet the needs of their users. By creating a standardized set of tools, processes, and best practices, platform engineering ensures consistency and reduces the time and effort required to develop, deploy, and maintain software systems.

+ +### Key Concepts in Platform Engineering + +To understand platform engineering better, it is essential to familiarize ourselves with some key concepts. These concepts include: + +1. Modularity: Platforms are designed to be modular, with components that can be easily added, removed, or replaced. This modularity enables flexibility and adaptability, allowing for the rapid development and integration of new features and functionalities. + +2. Scalability: A well-designed platform can handle increased workloads and user demands without sacrificing performance. Scalability involves the ability to add resources, such as servers or processing power, to meet growing demands and ensure optimal system performance. + +3. Extensibility: Platforms should be designed to accommodate future growth and evolution. They should provide the necessary flexibility to integrate new technologies, frameworks, and tools as they emerge, allowing developers to stay ahead of the curve and leverage the latest advancements. Learn about Meshery's extensibility. + +### Benefits and Challenges of Platform Engineering + +Platform engineering offers numerous benefits to organizations, including: + +1. Increased development speed: By providing reusable components and standardized processes, platforms enable developers to build applications more quickly, reducing time-to-market and increasing productivity. + +2. Improved collaboration: Platforms foster collaboration by providing a shared framework and tools that allow developers to work together seamlessly. This collaborative environment promotes knowledge sharing, reduces duplication of effort, and facilitates efficient problem-solving. + +3. Cost savings: Building on a solid platform foundation reduces development costs by eliminating the need to reinvent the wheel for each application. Additionally, platforms enable organizations to leverage economies of scale by sharing resources and infrastructure across multiple applications. + +However, platform engineering also presents its own set of challenges, including: + +1. Complexity: Building and maintaining a platform can be complex due to the interdependencies between various components and the need for integration with other systems. It requires a deep understanding of the underlying technologies and the ability to manage and mitigate potential risks and issues. + +2. Continuous evolution: Platforms need to evolve continuously to keep up with changing technologies and user needs. This requires a proactive approach to stay updated with emerging trends, evaluate new tools and frameworks, and invest in ongoing maintenance and upgrades. + +In the next section, we will delve into the process of designing and building a platform, exploring the key considerations, requirements, and tools involved in the platform engineering journey. + +<> + + + +## Designing and Building a Platform + +Designing and building a platform is a crucial step in platform engineering. It requires careful consideration of various factors to ensure a robust and scalable infrastructure that meets the needs of the organization and its users. In this section, we will explore the key aspects of designing and building a platform, including identifying platform requirements, architectural considerations, and the tools and technologies involved in platform development. + +### Identifying Platform Requirements + +Before starting the design and development process, it is essential to identify the specific requirements of the platform. This involves understanding the goals and objectives of the platform, as well as the target audience and their needs. By clearly defining the requirements, platform engineers can make informed decisions throughout the development process. + +Platform requirements can vary significantly depending on the industry and organization. For example, an e-commerce platform may need to handle high volumes of traffic and transactions, while a healthcare platform may require stringent security and privacy measures. It is important to consider factors such as scalability, performance, security, integration capabilities, and user experience when determining the platform requirements. + +### Architectural Considerations for Platform Design + +Once the requirements are in place, the next step is to determine the architectural design of the platform. The architecture serves as the blueprint for the platform and guides the development process. It defines the structure, components, and interactions within the platform. + +There are various architectural patterns to consider, such as monolithic, microservices, serverless, and container-based architectures. Each pattern has its own advantages and trade-offs, and the choice depends on factors like scalability, flexibility, maintainability, and cost. + +Additionally, platform engineers need to consider factors such as data storage and management, communication protocols, integration with external systems, and fault tolerance. These considerations ensure that the platform is designed to handle the expected workload and can adapt to future needs. + +### Tools and Technologies for Platform Development + +Designing and building a platform requires the use of various tools and technologies that facilitate the development process. These tools range from integrated development environments (IDEs) to version control systems, testing frameworks, and deployment automation tools. + +Depending on the chosen architecture and requirements, platform engineers may utilize technologies like cloud computing platforms, containerization technologies like Docker and Kubernetes, programming languages such as Java, Python, or JavaScript, and frameworks like Spring Boot or Node.js. + +It is crucial for platform engineers to stay updated with the latest tools and technologies in the industry. This enables them to leverage the most efficient and effective solutions for platform development, ensuring optimal performance, scalability, and maintainability. + +By carefully considering platform requirements, architectural design, and utilizing appropriate tools and technologies, platform engineers can build a robust and scalable platform that meets the organization's needs. In the next section, we will explore the operational aspects of platform engineering. + +## Operating and Maintaining a Platform + +Operating and maintaining a platform is crucial for ensuring its continued functionality, scalability, and security. This section will explore the key aspects of managing a platform's infrastructure, monitoring its performance, and ensuring security and compliance in its operations. + +### Managing Platform Infrastructure + +Managing the infrastructure of a platform involves various tasks, such as provisioning and configuring servers, managing databases, and deploying software updates. It is essential to have a robust infrastructure management strategy to ensure the platform's stability and availability. + +One of the key considerations in managing platform infrastructure is scalability. As the platform grows and user demands increase, the infrastructure must be able to handle the load efficiently. This may involve scaling up the existing infrastructure or adopting cloud-based solutions to ensure flexibility and elasticity. + +Moreover, effective resource allocation is critical for optimizing platform performance and cost-efficiency. By monitoring resource utilization and performance metrics, platform engineers can identify bottlenecks and allocate resources accordingly, ensuring optimal use of available infrastructure. + +### Platform Monitoring and Performance Optimization + +Monitoring the platform's performance is essential for identifying and resolving issues proactively. Platform engineers employ various monitoring tools and techniques to track key performance indicators, such as response time, resource utilization, and availability. + +Real-time monitoring enables the early detection of performance degradation or system failures, allowing platform engineers to take immediate action to mitigate the impact on users. Moreover, historical performance data can provide valuable insights for capacity planning and future optimizations. + +Performance optimization involves fine-tuning the platform to enhance its efficiency and responsiveness. This may include optimizing database queries, improving caching mechanisms, or implementing load balancing techniques. Regular performance testing and profiling can uncover potential bottlenecks and guide optimization efforts. + +### Ensuring Security and Compliance in Platform Operations + +Security and compliance are paramount in platform operations, especially when dealing with sensitive data or regulated industries. Platform engineers must implement robust security measures to protect the platform and its users from potential threats. + +This may involve implementing secure authentication and authorization mechanisms, encrypting data in transit and at rest, and regularly patching and updating software components to address security vulnerabilities. Additionally, platform engineers should establish strict access control policies and regularly audit system logs for any suspicious activities. + +Compliance with industry regulations and standards is also essential for platform operations. Platform engineers must stay updated with the latest compliance requirements and ensure that the platform meets the necessary standards. This may involve conducting regular audits, documenting compliance processes, and implementing necessary controls. + +## Conclusion + +Operating and maintaining a platform requires diligent attention to infrastructure management, performance monitoring, and security and compliance practices. By focusing on these key aspects, platform engineers can ensure the platform's stability, scalability, and data integrity, ultimately providing a reliable and secure experience for users. + +In conclusion, platform engineering plays a crucial role in the development and success of any digital product or service. By providing a robust and scalable foundation, platform engineering enables organizations to accelerate their innovation, streamline operations, and enhance customer experiences. + +Throughout this article, we have explored the fundamentals of platform engineering, including its definition, importance, and key concepts. We have also discussed the benefits and challenges associated with platform engineering, recognizing that while it offers numerous advantages, it requires careful planning, design, and maintenance. + +Designing and building a platform necessitates a thorough understanding of the requirements and architectural considerations. By leveraging the right tools and technologies, organizations can create a platform that aligns with their goals and objectives, while also ensuring flexibility and scalability to accommodate future growth. + +Operating and maintaining a platform demands ongoing management of the infrastructure, including continuous monitoring and performance optimization. Organizations must also prioritize security and compliance to safeguard sensitive data and ensure regulatory adherence. + +Platform engineering is a dynamic and ever-evolving field, driven by the rapid advancements in technology and the changing needs of businesses and consumers. As organizations embrace digital transformation and seek to stay competitive in the digital age, platform engineering will continue to play a pivotal role in delivering innovative solutions and driving business success. + +In summary, platform engineering is the backbone of modern-day digital products and services. It empowers organizations to build, operate, and maintain robust platforms that can support their business objectives, enhance customer experiences, and drive growth. By understanding the fundamentals, embracing best practices, and staying abreast of emerging trends, organizations can leverage platform engineering to unlock their full potential in an increasingly digital world. + +
\ No newline at end of file diff --git a/src/collections/blog/2024/02-13-what-is-platform-engineering/platform-engineering-hero.png b/src/collections/blog/2024/02-13-what-is-platform-engineering/platform-engineering-hero.png new file mode 100644 index 000000000000..65d89b8eeddd Binary files /dev/null and b/src/collections/blog/2024/02-13-what-is-platform-engineering/platform-engineering-hero.png differ diff --git a/src/collections/blog/2024/02-24-open-container-image-meshery/index.mdx b/src/collections/blog/2024/02-24-open-container-image-meshery/index.mdx new file mode 100644 index 000000000000..f1ebe479f5ed --- /dev/null +++ b/src/collections/blog/2024/02-24-open-container-image-meshery/index.mdx @@ -0,0 +1,92 @@ +--- +title: Making Container Registries a home for Meshery Designs +subtitle: The ubiquity of the OCI format +date: 2024-02-24 08:00:00 -0530 +author: Lee Calcote +thumbnail: ./oci-images-meshery.png +darkthumbnail: ./oci-images-meshery.png +description: "The adoption of OCI format by container registries and its integration within Meshery's design pattern management brings numerous benefits to the world of collaborative application infrastructure management." +type: Blog +category: Meshery +tags: + - Docker + - Kubernetes +featured: true +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; +import { Link } from "gatsby"; +import Button from "../../../../reusecore/Button"; +import CTA_FullWidth from "../../../../components/Call-To-Actions/CTA_FullWidth"; +import CTAImg from "../../../../assets/images/meshery/icon-only/meshery-logo-shadow.webp" + + +

Containers provide a lightweight and portable solution to package applications, making them easy to deploy across different environments. With Docker as the most popular container engine and image format, but not the only runtime or format, the need for a standardized format to store and distribute container images became apparent and is why the Open Container Initiative (OCI) image format comes into play.

+ +The OCI was established as a community-driven initiative to create open standards for container formats and runtimes. Its goal is to promote interoperability and ensure that containers can be used across different platforms and runtime environments. One of the key components of the OCI initiative is the OCI image format, which has been widely adopted by container registries. + +

+Why have container registries have embraced the OCI format? How does Meshery, a popular internal developer platform, leverage this format for pushing and pulling design patterns? By understanding the benefits of OCI format for container registries and Meshery's support for it, we can gain valuable insights into the advantages of using this standardized format. +

+ +## Why Container Registries Use OCI Format + +Container registries play a crucial role in the container ecosystem, serving as repositories for storing and distributing container images. These images are the building blocks of containerized applications, containing everything needed to run an application, from the code to the dependencies and configurations. In recent years, container registries have widely adopted the Open Container Initiative (OCI) format as the standard for packaging and distributing container images. + +### Benefits of OCI Format + +The adoption of OCI format by container registries offers several compelling benefits. Firstly, the OCI format provides a standardized and vendor-neutral way to package and distribute container images. This standardization ensures that images created using one container runtime can be run using a different runtime without any compatibility issues. This portability not only enhances interoperability but also encourages collaboration and innovation within the container ecosystem. + +Secondly, the OCI format promotes transparency and openness. It allows developers and users to inspect and understand the contents of a container image easily. By providing a clear structure for storing metadata and file system layers, the OCI format enables greater visibility into the image's composition, making it easier to identify potential security vulnerabilities or licensing issues. + +### Interoperability with Different Container Runtimes + +Another key reason why container registries prefer the OCI format is its compatibility with various container runtimes. Since container runtimes are responsible for executing the container images, it is crucial to have a format that can work seamlessly across different runtime environments. The OCI format achieves this by defining a set of specifications that are implemented by various container runtimes like Docker, containerd, and CRI-O. This compatibility ensures that container images stored in OCI format can be executed on different runtimes, giving developers the flexibility to choose the runtime that best suits their needs. + +### Security and Trustworthiness + +Security is a top concern for container registries, and the OCI format offers robust security features. By adhering to the OCI format, container registries can leverage the security mechanisms provided by OCI specifications. These mechanisms include content-addressable storage, which ensures that the integrity of the image is maintained throughout its lifecycle, and digital signatures, which enable image verification and establish trust between the registry and the consumers. The use of the OCI format adds an additional layer of trustworthiness to container images, assuring users that the images have not been tampered with and come from a trusted source. + +## How Meshery Design Patterns Utilize OCI Format + +### Introduction to Meshery + +Meshery, an open-source service mesh management plane, has rapidly gained popularity among developers and operators for its ability to simplify and streamline the deployment, management, and observability of service meshes. One of the key features that sets Meshery apart is its utilization of the Open Container Initiative (OCI) format for pushing and pulling design patterns. + +### Advantages of Pushing and Pulling Design Patterns in OCI Format + +Using the OCI format for design patterns offers several advantages for Meshery users. Firstly, it ensures that design patterns can be easily shared and reused across different container runtimes, regardless of the specific implementation details. This interoperability simplifies the process of deploying applications on various platforms, eliminating the need for time-consuming modifications and customizations. + +Secondly, the OCI format enhances security and trustworthiness by providing a standardized and verifiable way to package and distribute design patterns. By utilizing cryptographic signing, developers can ensure the integrity and authenticity of the design patterns they push and pull from container registries. This prevents tampering and reduces the risk of running malicious or compromised design patterns, enhancing the overall security posture of applications deployed using Meshery. + +Another advantage of the OCI format is its ability to encapsulate not only the application code but also the underlying dependencies and runtime environment. This self-contained nature simplifies the process of distributing and maintaining design patterns, as all the necessary components are bundled together. It also allows for more consistent and reproducible deployments, ensuring that the design pattern behaves consistently regardless of the environment in which it is deployed. +<> + + +## Meshery's Support for OCI Format + +Meshery fully embraces the use of OCI format for pushing and pulling design patterns. It provides a seamless integration with container registries that support OCI, enabling users to easily discover, share, and deploy design patterns. Meshery's user-friendly interface allows developers and operators to browse the available design patterns, inspect their metadata, and quickly deploy them to their service mesh environments. + +Furthermore, Meshery's support for OCI format extends beyond just deploying design patterns. It also provides tools and capabilities to manage the lifecycle of these patterns, including versioning, updating, and deprecating. This ensures that users can easily keep track of the design patterns they utilize and stay up to date with the latest releases and improvements. + +## Conclusion + +In conclusion, the adoption of OCI format by container registries and its integration within Meshery's design pattern management brings numerous benefits to the world of collaborative application infrastructure management. The use of OCI format ensures compatibility across different container runtimes, enhances security and trustworthiness, and simplifies the distribution and management of design patterns. With Meshery's support for OCI format, developers and operators can leverage these advantages to streamline and optimize their service mesh environments, ultimately improving the efficiency and reliability of their applications. + + + +ahead of the curve and leverage the latest advancements. Learn about Meshery's extensibility. + + + + +
\ No newline at end of file diff --git a/src/collections/blog/2024/02-24-open-container-image-meshery/oci-images-meshery.png b/src/collections/blog/2024/02-24-open-container-image-meshery/oci-images-meshery.png new file mode 100644 index 000000000000..0ab25d957d58 Binary files /dev/null and b/src/collections/blog/2024/02-24-open-container-image-meshery/oci-images-meshery.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/booth.png b/src/collections/blog/2024/03-20-kubeconeu2024/booth.png new file mode 100644 index 000000000000..02d0451e30a1 Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/booth.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/catalog.png b/src/collections/blog/2024/03-20-kubeconeu2024/catalog.png new file mode 100644 index 000000000000..a532d04e98d6 Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/catalog.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/index.mdx b/src/collections/blog/2024/03-20-kubeconeu2024/index.mdx new file mode 100644 index 000000000000..00cfacce86c4 --- /dev/null +++ b/src/collections/blog/2024/03-20-kubeconeu2024/index.mdx @@ -0,0 +1,128 @@ +--- +title: Layer5 at KubeCon EU 2024 +subtitle: Deep Dive into Cloud Native Networking with CNCF TAG Network & Service Mesh WG +date: 2024-03-20 +author: Ritik Saxena + +thumbnail: ./kubeconeu2024.png +darkthumbnail: ./kubeconeu2024.png +description: "Layer5 projects on stage at KubeCon + CloudNativeCon EU 2024" +type: Blog +category: Meshery +tags: + - KubeCon + - Meshery + - Service Mesh Performance + - Nighthawk +featured: true +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; +import { Link } from "gatsby"; +import Button from "../../../../reusecore/Button"; +import MeshMarkFormula from "./meshmark-formula.png"; +import MeshMark from "./meshmark.png"; +import Catalog from "./catalog.png"; +import NighthawkSlide from "./nighthawk-slide.png"; +import SMPSpec from "./smp-spec.png"; +import Booth from "./booth.png"; + + +Happy KubeCon week! We hope you are as excited as we are about all the fantastic things we will learn. + +Zack and Nic are here in Paris representing TAG Network; today at 2:30. They have a lightning talk, and every afternoon, the TAG Network booth will be open for business! + + +We're excited to connect with you in person at KubeCon EU! You can find us at kiosk **PP19-A**, located in the **Solutions Showcase | Level 7.2 | Hall 7.2 | Project Pavilion**. + +At the booth, we'll be showcasing demos of our two newest projects: + +* **Applying for Sandbox Status:** Learn how to easily apply for Sandbox status for your innovative cloud-native networking project. +* **ConnectRPC:** Discover a revolutionary new approach to service mesh interoperability with ConnectRPC. +* **KubeSlice:** Dive into the world of network slicing with KubeSlice, designed for optimal network resource utilization. + +
+

Don't forget to catch our lightning talk today at 2:30!

+ +
+ +

+ +Whether you're interested in these projects, have questions about the TAG Network, or simply want to chat about cloud-native networking, we'd love to see you! Drop by our booth for a coffee and a conversation – we look forward to meeting you! + + +## Building a Strong Foundation: The TAG Network Mission + +The TAG Network, led by Lee Calcote (Layer5), Nic Jackson (HashiCorp), Zack Butcher (Tetrate), and technical lead Zhonghu Xu (Huawei), is dedicated to empowering the cloud native community. Their mission is fourfold: + +* **Clarity and Education:** Providing developers and operators with the knowledge and guidance they need to navigate cloud native networking. +* **Collaboration and Integration:** Fostering collaboration between network projects and other CNCF initiatives for a unified ecosystem. +* **Project Growth and Adoption:** Supporting the development and widespread adoption of promising network projects within the CNCF landscape. +* **Neutral Stewardship:** Ensuring a fair and open environment for innovation in cloud native networking. + +## A Look Back: Tracking Progress Through KubeCon Events + +The TAG Network and Service Mesh WG have a strong presence at KubeCon events, showcasing the evolution of cloud native networking: + +* **KubeCon NA 2019:** This marked the introduction of foundational projects like CNI (Container Network Interface), CoreDNS, Envoy, and Linkerd, laying the groundwork for future advancements. +* **KubeCon Throughout 2020 & 2021:** The focus shifted towards service mesh adoption, with projects like BFE, Istio, SMI (Service Mesh Interface), and Meshery taking center stage, empowering developers to manage complex microservices architectures. +* **Recent KubeCon Events:** The latest gatherings highlighted cutting-edge projects like GetNighthawk (performance analysis), KubeSlice (network slicing), and Connect (service mesh interoperability), demonstrating the continuous push for innovation. + +## Unveiling Service Mesh Patterns: Reusability Meets Best Practices + +The Service Mesh WG champions the concept of service mesh patterns, a collection of reusable architectural building blocks designed for: + +* **End-User Focus:** Explained in clear language, these patterns are independent of specific service meshes, making them easy to understand and implement. +* **Flexibility:** While core functionality remains consistent, users can leverage features specific to their chosen service mesh for even greater control. +* **Reusability:** Patterns are designed to be easily copied, modified, and combined to create complex solutions tailored to your specific needs. +* **Best Practices Integration:** Each pattern incorporates recommended practices for optimal network design, ensuring a solid foundation for your cloud native applications. + +Explore the extensive service mesh pattern library at [https://meshery.io/catalog](https://meshery.io/catalog) to discover a treasure trove of reusable solutions for your cloud native network. + + +

+ +## Nighthawk Takes Flight: Distributed Performance Analysis + +The Service Mesh Performance initiative tackles the challenge of accurately measuring service mesh performance under load. Enter Nighthawk, a distributed performance analysis tool that empowers you to: + +* Generate realistic load scenarios that mimic real-world traffic patterns for a more accurate picture of your network's behavior. +* Gain valuable insights into system behavior under pressure, allowing you to make informed decisions about configuration and optimization. +* Compare performance across different service mesh deployments and configurations to identify the best fit for your specific needs. + + +

+ +## Standardization Efforts: MeshMark and the SMP Spec + +The CNCF TAG Network actively promotes standardization within the cloud native networking space. Two key initiatives are: + + #### **MeshMark:** +

MeshMark serves as a performance index gauging the significance and overhead within your cloud native ecosystem. By transforming performance metrics into actionable insights regarding the significance of individual networking functions within cloud native applications, MeshMark consolidates diverse overhead signals and crucial performance metrics into a straightforward index.

+ + + + + +

+ + #### **SMP Spec (Service Mesh Performance Specification):** +

This initiative establishes a vendor-neutral standard for measuring and reporting service mesh performance. This standardization paves the way for consistent performance comparisons and facilitates informed service mesh selection.

+ + +

+ + +## Join the Movement: Get Involved! + +The CNCF TAG Network and Service Mesh WG are open communities that thrive on collaboration. Here's how you can contribute: + +* Attend their bi-weekly meetings on the 1st and 3rd Thursdays of each month at 11 AM Pacific Time. +* Stay informed by reading meeting minutes on the CNCF website. +* Connect with the community on the #tag-network Slack channel and share your experiences and ideas. +* Subscribe to the cncf-sig-network-servicemesh-wg mailing list for updates and announcements. + +By actively participating in these initiatives, you can play a vital role in shaping the future of resilient and intelligent cloud native networks + + diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/kubeconeu2024.png b/src/collections/blog/2024/03-20-kubeconeu2024/kubeconeu2024.png new file mode 100644 index 000000000000..1f3e51110b5c Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/kubeconeu2024.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/meshmark-formula.png b/src/collections/blog/2024/03-20-kubeconeu2024/meshmark-formula.png new file mode 100644 index 000000000000..a0748d96d1fd Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/meshmark-formula.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/meshmark.png b/src/collections/blog/2024/03-20-kubeconeu2024/meshmark.png new file mode 100644 index 000000000000..649f71d17533 Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/meshmark.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/nighthawk-slide.png b/src/collections/blog/2024/03-20-kubeconeu2024/nighthawk-slide.png new file mode 100644 index 000000000000..da9be9b0a2e2 Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/nighthawk-slide.png differ diff --git a/src/collections/blog/2024/03-20-kubeconeu2024/smp-spec.png b/src/collections/blog/2024/03-20-kubeconeu2024/smp-spec.png new file mode 100644 index 000000000000..53f78d9355f6 Binary files /dev/null and b/src/collections/blog/2024/03-20-kubeconeu2024/smp-spec.png differ diff --git a/src/collections/blog/2024/03-27-models-designs-legos/five-instructions.png b/src/collections/blog/2024/03-27-models-designs-legos/five-instructions.png new file mode 100644 index 000000000000..b61b1238564f Binary files /dev/null and b/src/collections/blog/2024/03-27-models-designs-legos/five-instructions.png differ diff --git a/src/collections/blog/2024/03-27-models-designs-legos/five-legos.png b/src/collections/blog/2024/03-27-models-designs-legos/five-legos.png new file mode 100644 index 000000000000..9f7e85b6400c Binary files /dev/null and b/src/collections/blog/2024/03-27-models-designs-legos/five-legos.png differ diff --git a/src/collections/blog/2024/03-27-models-designs-legos/index.mdx b/src/collections/blog/2024/03-27-models-designs-legos/index.mdx new file mode 100644 index 000000000000..8e64ca00333b --- /dev/null +++ b/src/collections/blog/2024/03-27-models-designs-legos/index.mdx @@ -0,0 +1,68 @@ +--- +title: Lego Bricks and Lego Instructions +subtitle: Comparing Meshery Models and Meshery Designs +date: 2024-03-27 +author: Lee Calcote +thumbnail: ./five-legos.png +darkthumbnail: ./five-legos.png +description: "Understanding the difference between Meshery Models and Meshery Designs" +type: Blog +category: Meshery +tags: + - Meshery +featured: true +published: true +--- + +import { BlogWrapper } from "../../Blog.style.js"; +import { Link } from "gatsby"; +import Button from "../../../../reusecore/Button"; +import FiveInstructions from "./five-instructions.png"; +import FiveLegos from "./five-legos.png"; + + + +

+In Meshery, two key concepts play a pivotal role in managing infrastructure and deployments: Meshery Models and Meshery Designs. Understanding their difference and their similarities will greatly increase your benefit from these two powerful, systems management paradigms. +

+ +### Meshery Models + +Meshery Models represent the fundamental building blocks of your infrastructure. Think of them as blueprints or templates that define the structure, components, and configurations of your deployments. These models encapsulate everything from network configurations to service definitions, making them essential for consistent and scalable deployments across environments. + +### Meshery Designs + +On the other hand, Meshery Designs are the practical implementations based on Meshery Models. They represent declarations of your infrastructure deployments, customized according to specific use cases, environments, and requirements. Meshery Designs allow you to create, manage, and deploy complex architectures seamlessly, leveraging the power and flexibility of Meshery Models as their foundation. + + +

Meshery Models (similar to Lego bricks)

+ +

Meshery Models are packages that contain infrastructure components with specific properties and functionalities. (e.g., standard bricks, window pieces, wheels). Models and their Components cannot be directly used to build something complete on their own, but are standardized and reused across different Lego sets (instructions).

+ + +{/* */} +

Meshery Models are like the individual Lego bricks - they define the building blocks for infrastructure with specific characteristics.

+ +

Meshery Designs (similar to Lego instructions)

+ +

Meshery Designs provide a collaborative blueprint for building a specific model using Lego bricks (Meshery Models). Designs define the structure and placement of the bricks to achieve the desired outcome. Desan be shared, versioned, and used as reference for building the same model.

+In essence: + +{/* */} +

Meshery Designs are like the Lego instructions - they use Models (like bricks) to lay out the specific infrastructure deployment plan.

+ +

Analogy: Think of Models as Lego bricks (defining types of pieces) and Designs as Lego instructions (defining how to build something specific).

In summary, Meshery Models serve as the theoretical frameworks, while Meshery Designs translate these frameworks into tangible deployments, enabling you to design, deploy, and manage your infrastructure efficiently within the cloud and cloud native ecosystem. + +
diff --git a/src/collections/blog/blog-template/index.mdx b/src/collections/blog/blog-template/index.mdx index 6b24ccb39268..08b93523f229 100644 --- a/src/collections/blog/blog-template/index.mdx +++ b/src/collections/blog/blog-template/index.mdx @@ -2,42 +2,46 @@ title: "Lorem Ipsum" subtitle: "Lorem Ipsum" date: 2020-06-23 10:30:05 -0530 -author: John Doe -thumbnail: ./gsoc-wide.webp -darkthumbnail: ./gsoc-wide.webp +author: Layer5 Team +thumbnail: ../../../assets/images/layer5/layer5-only/svg/layer5-black.svg +darkthumbnail: ../../../assets/images/layer5/layer5-only/svg/layer5-light-bg.svg category: "Lorem Ipsum" description: "This is a short summary of my blog post. This text will show in the blog's list view and in community newsletters." tags: - Community - Meshery type: Blog -resource: false +resource: true published: false --- import { BlogWrapper } from "../Blog.style.js"; import Blockquote from "../../../reusecore/Blockquote"; - -import gsoc from "./gsoc.webp"; +import image from "../../../assets/images/layer5/layer5-only/svg/layer5-light-no-trim.svg"; -### Lorem Ipsum +## Lorem Ipsum Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vehicula consequat ipsum, at egestas leo. Donec molestie ipsum ut neque lobortis convallis.
- +

This is text for the image

+Curabitur iaculis ante sit amet condimentum interdum. Cras tellus nunc, gravida sit amet pellentesque eu, placerat ac diam. Mauris fermentum condimentum odio, ac fringilla ante condimentum vel. Vivamus volutpat sit amet libero eleifend ultricies. Praesent tempor libero tincidunt aliquam convallis. Aliquam in magna ante. Morbi egestas efficitur massa sed pretium. + +### Lorem Ipsum Curabitur iaculis ante sit amet condimentum interdum. Cras tellus nunc, gravida sit amet pellentesque eu, placerat ac diam. Mauris fermentum condimentum odio, ac fringilla ante condimentum vel. Vivamus volutpat sit amet libero eleifend ultricies. Praesent tempor libero tincidunt aliquam convallis. Aliquam in magna ante. Morbi egestas efficitur massa sed pretium. -gsoc-image +image + +Curabitur iaculis ante sit amet condimentum interdum. Cras tellus nunc, gravida sit amet pellentesque eu, placerat ac diam. Mauris fermentum condimentum odio, ac fringilla ante condimentum vel. Vivamus volutpat sit amet libero eleifend ultricies. Praesent tempor libero tincidunt aliquam convallis. Aliquam in magna ante. Morbi egestas efficitur massa sed pretium. \-- John Jane Doe diff --git a/src/collections/events/kubecon-EU-2024/index.mdx b/src/collections/events/kubecon-EU-2024/index.mdx new file mode 100644 index 000000000000..ecf35f9685c9 --- /dev/null +++ b/src/collections/events/kubecon-EU-2024/index.mdx @@ -0,0 +1,24 @@ +--- +title: "KubeCon + CloudNativeCon EU Paris, France 2024" +description: "CNCF Tag Network and Service mesh Working Group Deep Dive" +date: 2024-03-19 +thumbnail: ./kubeconEU2024.png +darkthumbnail: ./kubeconEU2024.png +eurl: https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/ +type: Event +published: true +upcoming: true +feature: true +speakers: ["Lee Calcote", "Nic Jackson", "Zack Butcher", "Zhonghu Xu"] + +--- +import Button from "../../../reusecore/Button"; + +Join Layer5 at KubeCon + CloudNativeCon EU Paris, France 2024! + + +

+Join the Meshery project at KubeCon Europe 2024 from 19th March to 22nd March, 2024 and get introduced to the cloud native management plane and its open source maintainers. +

+ +