Red Hat permet l’accès à un bac à sable dans OpenShift Dedicated aux développeurs enregistrés sur sa plateforme :
Developer Sandbox for Red Hat OpenShift | Red Hat Developer
Le bac à sable est parfait pour accéder immédiatement à OpenShift et comprend notamment :
- CockroachDB, une base de données SQL distribuée.
- gitops-primer pour exporter vos fichiers YAML pour GitOps
- Red Hat OpenShift Serverless pour créer des fonctions en tant que service (FaaS)
- Red Hat Data OpenShift Science pour l’apprentissage machine (AI/ML)
Accès donc à mon bac à sable avec le dashboard d’OpenShift :
avec un terminal web comprenant les clients OpenShift et Kubectl :
Utilisation du client Odo comme dans un précédent article :
- odo - Developer CLI for OpenShift and Kubernetes | Red Hat Developer
- Améliorer l’expérience des développeurs avec OpenShift via OpenShift Do (Odo)
bash-4.4 ~ $ odo odo is a CLI tool for running OpenShift applications in a fast and automated manner. Reducing the complexity of deployment, odo adds iterative development without the worry of deploying your source code. Find more information at https://github.com/redhat-developer/odo Get started by creating a new application: git clone https://github.com/openshift/nodejs-ex && cd nodejs-ex odo create nodejs odo push Your nodejs application has now been deployed. odo has pushed the source code, built the application and deployed it on OpenShift. You can now edit your code in real time and watch as odo automatically deploys your application. odo watch To access your application, create a URL: odo url create myurl odo push More information such as logs or what components you've deployed can be accessed with these commands: odo describe odo list odo log To see a full list of commands, run 'odo --help' pour notre sempiternelle application en Node.js :
bash-4.4 ~ $ git clone https://github.com/deep75/fcdemo3 Cloning into 'fcdemo3'... bash-4.4 ~ $ cd fcdemo3/ bash-4.4 ~/fcdemo3 $ odo catalog list components Odo Devfile Components: NAME DESCRIPTION REGISTRY dotnet50 Stack with .NET 5.0 DefaultDevfileRegistry dotnet60 Stack with .NET 6.0 DefaultDevfileRegistry dotnetcore31 Stack with .NET Core 3.1 DefaultDevfileRegistry go Go is an open source programming language that makes it easy... DefaultDevfileRegistry java-maven Upstream Maven and OpenJDK 11 DefaultDevfileRegistry java-openliberty Java application Maven-built stack using the Open Liberty ru... DefaultDevfileRegistry java-openliberty-gradle Java application Gradle-built stack using the Open Liberty r... DefaultDevfileRegistry java-quarkus Quarkus with Java DefaultDevfileRegistry java-springboot Spring Boot using Java DefaultDevfileRegistry java-vertx Upstream Vert.x using Java DefaultDevfileRegistry java-websphereliberty Java application Maven-built stack using the WebSphere Liber... DefaultDevfileRegistry java-websphereliberty-gradle Java application Gradle-built stack using the WebSphere Libe... DefaultDevfileRegistry java-wildfly Upstream WildFly DefaultDevfileRegistry java-wildfly-bootable-jar Java stack with WildFly in bootable Jar mode, OpenJDK 11 and... DefaultDevfileRegistry nodejs Stack with Node.js 16 DefaultDevfileRegistry nodejs-angular Angular is a development platform, built on TypeScript. As a... DefaultDevfileRegistry nodejs-nextjs Next.js gives you the best developer experience with all the... DefaultDevfileRegistry nodejs-nuxtjs Nuxt is the backbone of your Vue.js project, giving structur... DefaultDevfileRegistry nodejs-react React is a free and open-source front-end JavaScript library... DefaultDevfileRegistry nodejs-svelte Svelte is a radical new approach to building user interfaces... DefaultDevfileRegistry nodejs-vue Vue is a JavaScript framework for building user interfaces. ... DefaultDevfileRegistry php-laravel Laravel is an open-source PHP framework, which is robust and... DefaultDevfileRegistry python Python is an interpreted, object-oriented, high-level progra... DefaultDevfileRegistry python-django Django is a high-level Python web framework that enables rap... DefaultDevfileRegistry bash-4.4 ~/fcdemo3 $ odo create nodejs Devfile Object Creation ✓ Checking if the devfile for "nodejs" exists on available registries [52847ns] ✓ Creating a devfile component from registry "DefaultDevfileRegistry" [13s] Validation ✓ Validating if devfile name is correct [57138ns] ✓ Validating the devfile for odo [26ms] ✓ Updating the devfile with component name "nodejs-fcdemo3-ofgj" [109ms] Please use `odo push` command to create the component with source deployed bash-4.4 ~/fcdemo3 $ odo push Validation ✓ Validating the devfile [70599ns] Creating Services for component nodejs-fcdemo3-ofgj W1225 20:57:56.803635 567 warnings.go:70] org.eclipse.che/v1 CheCluster is deprecated and will be removed in future releases W1225 20:57:57.407057 567 warnings.go:70] workspace.devfile.io/v1alpha1 DevWorkspace is deprecated; use workspace.devfile.io/v1alpha2 DevWorkspace W1225 20:57:57.803839 567 warnings.go:70] workspace.devfile.io/v1alpha1 DevWorkspaceTemplate is deprecated; use workspace.devfile.io/v1alpha2 DevWorkspaceTemplate W1225 20:58:06.003677 567 warnings.go:70] servicebinding.io/v1alpha3 ServiceBinding is deprecated; use servicebinding.io/v1beta1 ServiceBinding ✓ Services are in sync with the cluster, no changes are required Creating Kubernetes resources for component nodejs-fcdemo3-ofgj ✓ Waiting for component to start [35s] W1225 20:58:45.780113 567 warnings.go:70] org.eclipse.che/v1 CheCluster is deprecated and will be removed in future releases W1225 20:58:46.381810 567 warnings.go:70] workspace.devfile.io/v1alpha1 DevWorkspace is deprecated; use workspace.devfile.io/v1alpha2 DevWorkspace W1225 20:58:46.780100 567 warnings.go:70] workspace.devfile.io/v1alpha1 DevWorkspaceTemplate is deprecated; use workspace.devfile.io/v1alpha2 DevWorkspaceTemplate W1225 20:58:54.980261 567 warnings.go:70] servicebinding.io/v1alpha3 ServiceBinding is deprecated; use servicebinding.io/v1beta1 ServiceBinding ✓ Links are in sync with the cluster, no changes are required ✓ Waiting for component to start [3ms] Applying URL changes ✓ URL http-node: http://http-node-c40b0bf9-karim-dev.apps.sandbox.x8i5.p1.openshiftapps.com/ created Syncing to component nodejs-fcdemo3-ofgj ✓ Checking files for pushing [2s] ✓ Syncing files to the component [20s] Executing devfile commands for component nodejs-fcdemo3-ofgj ✓ Executing install command "npm install" [11s] ✓ Executing run command "npm start" [1s] Pushing devfile component "nodejs-fcdemo3-ofgj" ✓ Changes successfully pushed to component Le Pod est créé avec sa route dans OpenShift :
bash-4.4 ~/fcdemo3 $ kubectl get po -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nodejs-fcdemo3-ofgj-app-759fb5f8d5-zqlbw 1/1 Running 0 4m7s 10.129.3.139 ip-10-0-202-251.ec2.internal <none> <none> workspace68a36b9a46ba459a-6d89bbb69f-s7jw7 2/2 Running 0 41m 10.129.3.30 ip-10-0-202-251.ec2.internal <none> <none> bash-4.4 ~/fcdemo3 $ kubectl logs po/nodejs-fcdemo3-ofgj-app-759fb5f8d5-zqlbw Defaulted container "runtime" out of: runtime, copy-supervisord (init) time="2022-12-25T20:58:40Z" level=info msg="create process:devrun" time="2022-12-25T20:58:40Z" level=info msg="create process:debugrun" time="2022-12-25T20:58:40Z" level=info msg="try to start program" program=devrun time="2022-12-25T20:58:40Z" level=info msg="success to start program" program=devrun time="2022-12-25T20:58:41Z" level=debug msg="wait program exit" program=devrun time="2022-12-25T20:58:41Z" level=info msg="program stopped with status:exit status 0" program=devrun time="2022-12-25T20:58:41Z" level=info msg="Don't start the stopped program because its autorestart flag is false" program=devrun time="2022-12-25T20:59:17Z" level=debug msg="no auth required" time="2022-12-25T20:59:28Z" level=debug msg="no auth required" time="2022-12-25T20:59:28Z" level=debug msg="succeed to find process:devrun" time="2022-12-25T20:59:28Z" level=info msg="try to start program" program=devrun time="2022-12-25T20:59:28Z" level=info msg="success to start program" program=devrun ODO_COMMAND_RUN is npm start Changing directory to ${PROJECT_SOURCE} Executing command cd ${PROJECT_SOURCE} && npm start > service-provider-mock@0.0.0 start > node ./bin/www time="2022-12-25T20:59:29Z" level=debug msg="wait program exit" program=devrun Server listening on http://0.0.0.0:3000 time="2022-12-25T20:59:30Z" level=debug msg="no auth required" J’entre dans le shell du Pod :
bash-4.4 ~/fcdemo3 $ kubectl exec -it po/nodejs-fcdemo3-ofgj-app-759fb5f8d5-zqlbw -- /bin/bash Defaulted container "runtime" out of: runtime, copy-supervisord (init) bash-4.4$ cat /etc/os-release NAME="Red Hat Enterprise Linux" VERSION="8.7 (Ootpa)" ID="rhel" ID_LIKE="fedora" VERSION_ID="8.7" PLATFORM_ID="platform:el8" PRETTY_NAME="Red Hat Enterprise Linux 8.7 (Ootpa)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos" HOME_URL="https://www.redhat.com/" DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8" REDHAT_BUGZILLA_PRODUCT_VERSION=8.7 REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux" REDHAT_SUPPORT_PRODUCT_VERSION="8.7" bash-4.4$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1005220+ 1 0.0 0.0 710904 8500 ? Ssl 20:58 0:00 /opt/odo/bin/supervisord -c /opt/odo/conf/devfile-supervisor.conf 1005220+ 65 0.0 0.0 11928 2744 ? S 20:59 0:00 /bin/sh /opt/odo/bin/devfile-command devrun 1005220+ 67 0.1 0.1 727496 62480 ? Sl 20:59 0:00 npm start 1005220+ 78 0.0 0.0 11928 2792 ? S 20:59 0:00 sh /tmp/start-e7474728.sh 1005220+ 79 0.2 0.2 637608 77668 ? Sl 20:59 0:01 node ./bin/www 1005220+ 158 0.3 0.0 12060 3248 pts/0 Ss 21:07 0:00 /bin/bash 1005220+ 164 0.0 0.0 44700 3472 pts/0 R+ 21:07 0:00 ps aux Création pendant ce temps d’une instance Ubuntu 22.04 LTS dans Linode :
et récupération de Warpgate, un bastion intelligent SSH, HTTPS et MySQL pour Linux. Installez-le dans votre DMZ, ajoutez des comptes d’utilisateurs et attribuez-les facilement à des hôtes et URL spécifiques au sein du réseau.
- Warpgate enregistre chaque session pour que vous puissiez la visualiser (en direct) et la rejouer ultérieurement via une interface web d’administration intégrée.
- Warpgate transmet vos connexions directement à la cible.
- Support natif de 2FA et SSO (TOTP et OpenID Connect).
- Un seul binaire sans dépendances.
- Écrit 100% en Rust …
GitHub - warp-tech/warpgate: Smart SSH, HTTPS and MySQL bastion that needs no client-side software
root@localhost:~# chmod +x warpgate-v0.7.0-x86_64-linux && mv warpgate-v0.7.0-x86_64-linux /usr/local/bin/warpgate root@localhost:~# warpgate warpgate 0.7.0 USAGE: warpgate [OPTIONS] <SUBCOMMAND> OPTIONS: -c, --config <CONFIG> [default: /etc/warpgate.yaml] -d, --debug -h, --help Print help information -V, --version Print version information SUBCOMMANDS: check Create a password hash for use in the config file client-keys Show Warpgate's SSH client keys help Print this message or the help of the given subcommand(s) recover-access Reset password and auth policy for a user run Run Warpgate setup Run first-time setup and generate a config file test-target Test the connection to a target host unattended-setup Run first-time setup non-interactively Configuration et lancement de Warpgate :
root@localhost:~# warpgate setup 21:24:12 INFO Welcome to Warpgate 0.7.0 21:24:12 INFO Let's do some basic setup first. 21:24:12 INFO The new config will be written in /etc/warpgate.yaml. 21:24:12 INFO * Paths can be either absolute or relative to /etc. ✔ Directory to store app data (up to a few MB) in · /var/lib/warpgate ✔ Endpoint to listen for HTTP connections on · 0.0.0.0:8888 21:24:19 INFO You will now choose specific protocol listeners to be enabled. 21:24:19 INFO 21:24:19 INFO NB: Nothing will be exposed by default - 21:24:19 INFO you'll set target hosts in the config file later. ✔ Accept SSH connections? · yes ✔ Endpoint to listen for SSH connections on · 0.0.0.0:2222 ✔ Accept MySQL connections? · yes ✔ Endpoint to listen for MySQL connections on · 0.0.0.0:33306 ✔ Do you want to record user sessions? · yes ✔ Set a password for the Warpgate admin user · ******** 21:24:39 INFO Generated configuration: --- sso_providers: [] recordings: enable: true path: /var/lib/warpgate/recordings external_host: ~ database_url: "sqlite:/var/lib/warpgate/db" ssh: enable: true listen: "0.0.0.0:2222" keys: /var/lib/warpgate/ssh-keys host_key_verification: prompt http: enable: true listen: "0.0.0.0:8888" certificate: /var/lib/warpgate/tls.certificate.pem key: /var/lib/warpgate/tls.key.pem mysql: enable: true listen: "0.0.0.0:33306" certificate: /var/lib/warpgate/tls.certificate.pem key: /var/lib/warpgate/tls.key.pem log: retention: 7days send_to: ~ config_provider: database 21:24:39 INFO Saved into /etc/warpgate.yaml 21:24:39 INFO Using config: "/etc/warpgate.yaml" 21:24:40 INFO Migrating config file into the database 21:24:40 INFO Generating Ed25519 host key 21:24:40 INFO Generating RSA host key 21:24:40 INFO Generating Ed25519 client key 21:24:40 INFO Generating RSA client key 21:24:42 INFO Generating a TLS certificate 21:24:42 INFO 21:24:42 INFO Admin user credentials: 21:24:42 INFO * Username: admin 21:24:42 INFO * Password: <your password> 21:24:42 INFO 21:24:42 INFO You can now start Warpgate with: 21:24:42 INFO warpgate --config /etc/warpgate.yaml run root@localhost:~# warpgate run 21:25:26 INFO Warpgate version=0.7.0 21:25:26 INFO Using config: "/etc/warpgate.yaml" 21:25:26 INFO -------------------------------------------- 21:25:26 INFO Warpgate is now running. 21:25:26 INFO Accepting SSH connections on 0.0.0.0:2222 21:25:26 INFO Accepting HTTP connections on https://0.0.0.0:8888 21:25:26 INFO Accepting MySQL connections on 0.0.0.0:33306 21:25:26 INFO -------------------------------------------- 21:25:26 INFO Listening address=0.0.0.0:2222 21:25:26 INFO Listening address=0.0.0.0:8888 21:25:26 INFO Listening address=0.0.0.0:33306 et connexion à l’interface graphique de Warpgate :
Installation de miniserve, un petit outil CLI écrit en Rust, autonome et multiplateforme et qui vous permet de un ou plusieurs fichiers via HTTP.
root@localhost:~# chmod +x miniserve-0.22.0-x86_64-unknown-linux-gnu && mv miniserve-0.22.0-x86_64-unknown-linux-gnu /usr/local/bin/miniserve root@localhost:~# miniserve --help miniserve 0.22.0 Sven-Hendrik Haase <svenstaro@gmail.com>, Boastful Squirrel <boastful.squirrel@gmail.com> For when you really just want to serve some files over HTTP right now! USAGE: miniserve [OPTIONS] [--] [PATH] ARGS: <PATH> Which path to serve OPTIONS: -a, --auth <AUTH> Set authentication. Currently supported formats: username:password, username:sha256:hash, username:sha512:hash (e.g. joe:123, joe:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3) -c, --color-scheme <COLOR_SCHEME> Default color scheme [default: squirrel] [possible values: squirrel, archlinux, zenburn, monokai] -d, --color-scheme-dark <COLOR_SCHEME_DARK> Default color scheme [default: archlinux] [possible values: squirrel, archlinux, zenburn, monokai] -D, --dirs-first List directories first -F, --hide-version-footer Hide version footer -g, --enable-tar-gz Enable gz-compressed tar archive generation -h, --help Print help information -H, --hidden Show hidden files --header <HEADER> Set custom header for responses --hide-theme-selector Hide theme selector -i, --interfaces <INTERFACES> Interface to listen on --index <index_file> The name of a directory index file to serve, like "index.html" Normally, when miniserve serves a directory, it creates a listing for that directory. However, if a directory contains this file, miniserve will serve that file instead. -l, --show-symlink-info Visualize symlinks in directory listing -m, --media-type <MEDIA_TYPE> Specify uploadable media types [possible values: image, audio, video] -M, --raw-media-type <MEDIA_TYPE_RAW> Directly specify the uploadable media type expression -o, --overwrite-files Enable overriding existing files during file upload -p, --port <PORT> Port to use [default: 8080] -P, --no-symlinks Hide symlinks in listing and prevent them from being followed --print-completions <shell> Generate completion file for a shell [possible values: bash, elvish, fish, powershell, zsh] --print-manpage Generate man page -q, --qrcode Enable QR code display -r, --enable-tar Enable uncompressed tar archive generation --random-route Generate a random 6-hexdigit route --readme Enable README.md rendering in directories --route-prefix <ROUTE_PREFIX> Use a specific route prefix --spa Activate SPA (Single Page Application) mode This will cause the file given by --index to be served for all non-existing file paths. In effect, this will serve the index file whenever a 404 would otherwise occur in order to allow the SPA router to handle the request instead. -t, --title <TITLE> Shown instead of host in page title and heading --tls-cert <TLS_CERT> TLS certificate to use --tls-key <TLS_KEY> TLS private key to use -u, --upload-files [<ALLOWED_UPLOAD_DIR>...] Enable file uploading (and optionally specify for which directory) -U, --mkdir Enable creating directories -v, --verbose Be verbose, includes emitting access logs -V, --version Print version information -W, --show-wget-footer If enabled, display a wget command to recursively download the current directory -z, --enable-zip Enable zip archive generation WARNING: Zipping large directories can result in out-of-memory exception because zip generation is done in memory and cannot be sent on the fly et exposition d’un dossier avec miniserve :
root@localhost:~# miniserve rathole/ miniserve v0.22.0 Bound to [::]:8080, 0.0.0.0:8080 Serving path /root/rathole Available at (non-exhaustive list): http://127.0.0.1:8080 http://139.144.180.183:8080 http://[::1]:8080 http://[2a01:7e01::f03c:93ff:fe0b:e749]:8080 Quit by pressing CTRL-C Obtention de l’archive de Rathole sur Github, un programme écrit en Rust, qui agit comme frp et ngrok et peut aider à exposer son service derrière un NAT vers Internet via un serveur avec une IP publique :
root@localhost:~# cd rathole && wget -c https://github.com/rapiz1/rathole/releases/download/v0.4.7/rathole-x86_64-unknown-linux-gnu.zip root@localhost:~/rathole# unzip rathole-x86_64-unknown-linux-gnu.zip Archive: rathole-x86_64-unknown-linux-gnu.zip inflating: rathole root@localhost:~/rathole# chmod +x rathole root@localhost:~/rathole# ./rathole error: The following required arguments were not provided: <CONFIG|--genkey [<CURVE>]> USAGE: rathole [OPTIONS] <CONFIG|--genkey [<CURVE>]> For more information try --help Je peux écrire deux fichier de configuration en TOML pour rathole :
=> partie serveur
[server] bind_addr = "0.0.0.0:2333" # `2333` specifies the port that rathole listens for clients [server.services.nodejs] token = "SI1r1vB25wmX2EBu" # Token that is used to authenticate the client for the service. Change to a arbitrary value. bind_addr = "0.0.0.0:5202" # `5202` specifies the port that exposes `nodejs` to the Internet => partie cliente
# client.toml [client] remote_addr = "139.144.180.183:2333" # The address of the server. The port must be the same with the port in `server.bind_addr` [client.services.nodejs] token = "SI1r1vB25wmX2EBu" # Must be the same with the server to pass the validation local_addr = "127.0.0.1:3000" # The address of the service that needs to be forwarded Je vois tous mes fichiers dans miniserve :
Lancement de la partie serveur :
root@localhost:~/rathole# ./rathole server.toml Dec 25 21:50:17.511 INFO config_watcher{path="server.toml"}: rathole::config_watcher: Start watching the config Dec 25 21:50:17.511 INFO rathole::server: Listening at 0.0.0.0:2333 et du côté du Pod dans OpenShift, récupération de rathole et du fichier client via miniserve :
bash-4.4 ~ $ kubectl exec -it po/nodejs-fcdemo3-ofgj-app-759fb5f8d5-zqlbw -- /bin/bash Defaulted container "runtime" out of: runtime, copy-supervisord (init) bash-4.4$ curl -LO http://139.144.180.183:8080/rathole % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1947k 100 1947k 0 0 2375k 0 --:--:-- --:--:-- --:--:-- 2372k bash-4.4$ curl -LO http://139.144.180.183:8080/client.toml % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 348 100 348 0 0 1901 0 --:--:-- --:--:-- --:--:-- 1912 bash-4.4$ chmod +x rathole bash-4.4$ ./rathole client.toml Dec 25 21:53:04.070 INFO config_watcher{path="client.toml"}: rathole::config_watcher: Start watching the config Dec 25 21:53:04.070 INFO handle{service=nodejs}: rathole::client: Starting 81df1af4ed72b1b82fed99c73be4831908af977f3bd52c7cb7dfc738e38571dd Dec 25 21:53:04.344 INFO handle{service=nodejs}:run: rathole::client: Control channel established De l’autre côté, la connexion vers le démonstrateur FC est effective via rathole :
root@localhost:~# curl http://localhost:5202 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" integrity="sha256-zIG416V1ynj3Wgju/scU80KAEWOsO5rRLfVyRDuOv7Q=" crossorigin="anonymous" /> <title>Démonstrateur Fournisseur de Service</title> </head> <body> <nav class="navbar" role="navigation" aria-label="main navigation"> <div class="navbar-start"> <div class="navbar-brand"> <a class="navbar-item" href="/"> <img src="/img/fc_logo_v2.png" alt="Démonstrateur Fournisseur de Service" height="28"> </a> </div> <a href="/" class="navbar-item"> Home </a> </div> <div class="navbar-end"> <div class="navbar-item"> <div class="buttons"> <a class="button is-light" href="/login">Se connecter</a> </div> </div> </div> </nav> <section class="hero is-info is-medium"> <div class="hero-body"> <div class="container"> <h1 class="title"> Bienvenue sur le démonstrateur de fournisseur de service </h1> <h2 class="subtitle"> Cliquez sur "se connecter" pour vous connecter via <strong>FranceConnect</strong> </h2> </div> </div> </section> <section class="section is-small"> <div class="container"> J’initie une session HTTP dans le bastion Warpgate :
Je récupère donc en backend la connexion du proxy rathole vers le démonstrateur FC en exécution dans le Pod OpenShift sans passer par la couche services ou les routes …
et la session est visible depuis les logs de Warpgate :
Sur le même principe, Chisel, un tunnel TCP/UDP rapide, transporté par HTTP, sécurisé par SSH sous la forme d’un seul exécutable comprenant à la fois le client et le serveur et écrit cette fois çi en Go.
Chisel est principalement utile pour passer à travers les pare-feu, bien qu’il puisse également être utilisé pour fournir un point d’accès sécurisé à votre réseau …
GitHub - jpillora/chisel: A fast TCP/UDP tunnel over HTTP
À suivre !
























Top comments (0)