{"id":13543580,"url":"https://github.com/gravitational/workshop","last_synced_at":"2025-09-29T00:32:27.288Z","repository":{"id":46289759,"uuid":"74607632","full_name":"gravitational/workshop","owner":"gravitational","description":"Docker, Kubernetes and Gravity Trainings by Gravitational","archived":true,"fork":false,"pushed_at":"2023-06-28T21:45:52.000Z","size":7873,"stargazers_count":2022,"open_issues_count":0,"forks_count":233,"subscribers_count":95,"default_branch":"master","last_synced_at":"2025-04-12T05:06:13.991Z","etag":null,"topics":["docker","gravity","kubernetes","training","workshop"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gravitational.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-11-23T19:29:23.000Z","updated_at":"2025-03-17T15:02:20.000Z","dependencies_parsed_at":"2022-09-02T22:23:20.696Z","dependency_job_id":"66650f65-d341-4991-9c61-3c5a1059223d","html_url":"https://github.com/gravitational/workshop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gravitational/workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitational%2Fworkshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitational%2Fworkshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitational%2Fworkshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitational%2Fworkshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gravitational","download_url":"https://codeload.github.com/gravitational/workshop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravitational%2Fworkshop/sbom","scorecard":{"id":444082,"data":{"date":"2025-08-11","repo":{"name":"github.com/gravitational/workshop","commit":"a7206d37d3a6e47bbb242d069cafdf6c1daa56d8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":2,"reason":"Found 5/18 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: prod/build-fix/hello:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/gravitational/.github/SECURITY.md:1","Info: Found linked content: github.com/gravitational/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/gravitational/.github/SECURITY.md:1","Info: Found text in security policy: github.com/gravitational/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: crd/controller/Dockerfile:1","Warn: containerImage not pinned by hash: docker/busybox-arg/Dockerfile:1: pin your Docker image by updating busybox to busybox@sha256:de02f124ed06177f8dfc9389aae2d7eaa69c687a68ea5d5398430c7583865691","Warn: containerImage not pinned by hash: docker/busybox-entrypoint/Dockerfile:1: pin your Docker image by updating busybox to busybox@sha256:de02f124ed06177f8dfc9389aae2d7eaa69c687a68ea5d5398430c7583865691","Warn: containerImage not pinned by hash: docker/busybox-env/Dockerfile:1: pin your Docker image by updating busybox to busybox@sha256:de02f124ed06177f8dfc9389aae2d7eaa69c687a68ea5d5398430c7583865691","Warn: containerImage not pinned by hash: docker/busybox-v2/Dockerfile:1: pin your Docker image by updating busybox to busybox@sha256:de02f124ed06177f8dfc9389aae2d7eaa69c687a68ea5d5398430c7583865691","Warn: containerImage not pinned by hash: docker/busybox/Dockerfile:1: pin your Docker image by updating busybox to busybox@sha256:de02f124ed06177f8dfc9389aae2d7eaa69c687a68ea5d5398430c7583865691","Warn: containerImage not pinned by hash: docker/cache/Dockerfile:1: pin your Docker image by updating busybox to busybox@sha256:de02f124ed06177f8dfc9389aae2d7eaa69c687a68ea5d5398430c7583865691","Warn: containerImage not pinned by hash: docker/ubuntu/Dockerfile:1: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: mattermost/worker/Dockerfile:3: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: prod/background/Dockerfile:1: pin your Docker image by updating library/python:3.3 to library/python:3.3@sha256:f62f74c5a17a617892c732f52d7000e4cdbef8212455b603dd5da4ab3394e08c","Warn: containerImage not pinned by hash: prod/build-fix/Dockerfile:1: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: prod/build-fix/build.dockerfile:1: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: prod/build-fix/multi.dockerfile:4: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: prod/build-fix/multi.dockerfile:14","Warn: containerImage not pinned by hash: prod/build-fix/run.dockerfile:1","Warn: containerImage not pinned by hash: prod/build/Dockerfile:1: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: prod/cbreaker/Dockerfile:1: pin your Docker image by updating library/python:2.7 to library/python:2.7@sha256:cfa62318c459b1fde9e0841c619906d15ada5910d625176e24bf692cf8a2601d","Warn: containerImage not pinned by hash: prod/cbreaker/cbreaker.dockerfile:1: pin your Docker image by updating library/python:2.7 to library/python:2.7@sha256:cfa62318c459b1fde9e0841c619906d15ada5910d625176e24bf692cf8a2601d","Warn: containerImage not pinned by hash: prod/cbreaker/weather-crash-slow.dockerfile:1: pin your Docker image by updating library/python:2.7 to library/python:2.7@sha256:cfa62318c459b1fde9e0841c619906d15ada5910d625176e24bf692cf8a2601d","Warn: containerImage not pinned by hash: prod/cbreaker/weather-crash.dockerfile:1: pin your Docker image by updating library/python:2.7 to library/python:2.7@sha256:cfa62318c459b1fde9e0841c619906d15ada5910d625176e24bf692cf8a2601d","Warn: containerImage not pinned by hash: prod/config/config-fix.dockerfile:1: pin your Docker image by updating golang:1.12-stretch to golang:1.12-stretch@sha256:8b0f4fee390ca1308ef5c522accad9f7d98a4134fcde1b2cff33df1cbb1b3b97","Warn: containerImage not pinned by hash: prod/config/config-fix.dockerfile:5","Warn: containerImage not pinned by hash: prod/config/config.dockerfile:1: pin your Docker image by updating golang:1.12-stretch to golang:1.12-stretch@sha256:8b0f4fee390ca1308ef5c522accad9f7d98a4134fcde1b2cff33df1cbb1b3b97","Warn: containerImage not pinned by hash: prod/config/config.dockerfile:5","Warn: containerImage not pinned by hash: prod/delay/Dockerfile:1: pin your Docker image by updating library/python:3.3 to library/python:3.3@sha256:f62f74c5a17a617892c732f52d7000e4cdbef8212455b603dd5da4ab3394e08c","Warn: containerImage not pinned by hash: prod/quotas/Dockerfile:1: pin your Docker image by updating golang:1.12-stretch to golang:1.12-stretch@sha256:8b0f4fee390ca1308ef5c522accad9f7d98a4134fcde1b2cff33df1cbb1b3b97","Warn: containerImage not pinned by hash: prod/quotas/Dockerfile:5","Warn: containerImage not pinned by hash: prod/sidecar/service.dockerfile:1: pin your Docker image by updating library/python:2.7 to library/python:2.7@sha256:cfa62318c459b1fde9e0841c619906d15ada5910d625176e24bf692cf8a2601d","Warn: containerImage not pinned by hash: prod/sidecar/sidecar.dockerfile:1: pin your Docker image by updating nginx:1.17.5 to nginx:1.17.5@sha256:922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4","Warn: pipCommand not pinned by hash: prod/cbreaker/Dockerfile:3","Warn: pipCommand not pinned by hash: prod/cbreaker/cbreaker.dockerfile:3","Warn: pipCommand not pinned by hash: prod/cbreaker/weather-crash-slow.dockerfile:3","Warn: pipCommand not pinned by hash: prod/cbreaker/weather-crash.dockerfile:3","Warn: pipCommand not pinned by hash: prod/sidecar/service.dockerfile:3","Warn: goCommand not pinned by hash: crd/controller/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh:1","Warn: goCommand not pinned by hash: crd/controller/vendor/github.com/json-iterator/go/build.sh:10","Info:   0 out of  29 containerImage dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned","Info:   0 out of   2 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-19T06:15:44.730Z","repository_id":46289759,"created_at":"2025-08-19T06:15:44.730Z","updated_at":"2025-08-19T06:15:44.730Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277450938,"owners_count":25819971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","gravity","kubernetes","training","workshop"],"created_at":"2024-08-01T11:00:33.356Z","updated_at":"2025-09-29T00:32:25.556Z","avatar_url":"https://github.com/gravitational.png","language":"Go","readme":"# Gravitational Workshops\n\n\u003e **Warning**\n\u003e\n\u003e The Gravitational Workshops were archived 2023-07-01, as Gravitational no longer\n\u003e offers Kubernetes or Gravity training.\n\u003e\n\u003e Please see our [Gravitational is Teleport](https://goteleport.com/blog/gravitational-is-teleport/)\n\u003e blog post for more information.\n\nOpen source series of workshops delivered by the Gravitational team.\n\n* [Docker 101 workshop](docker.md)\n* [Kubernetes 101 workshop using Minikube and Mattermost](k8s101.md)\n* [Kubernetes production patterns](k8sprod.md)\n* [Kubernetes security patterns](k8ssecurity.md)\n* [Kubernetes custom resources](crd/crd.md)\n* [Gravity 101](gravity101.md)\n* [Gravity fire drill exercises](firedrills.md)\n* [Gravity logging (Gravity 5.5 and earlier)](logging-5.x.md)\n* [Gravity logging (Gravity 6.0 and later)](logging-6.x.md)\n* [Gravity monitoring \u0026 alerts (Gravity 5.5 and earlier)](monitoring-5.x.md)\n* [Gravity monitoring \u0026 alerts (Gravity 6.0 and later)](monitoring-6.x.md)\n* [Gravity networking and network troubleshooting](gravity_networking.md)\n* [Gravity upgrade (5.5)](upgrade-5.x.md)\n* [Gravity upgrade (7.0)](gravity_upgrade.md)\n\n## Installation\n\n### Requirements\n\nYou will need a Linux or macOS box with at least `7GB` of RAM and `20GB` of free disk space available.\n\n### Docker\n\nFor Linux: follow instructions provided [here](https://docs.docker.com/engine/installation/linux/).\n\nIf you have macOS (Yosemite or newer), please download Docker for Mac [here](https://download.docker.com/mac/stable/Docker.dmg).\n\n*Older docker package for OSes older than Yosemite -- Docker Toolbox located [here](https://www.docker.com/products/docker-toolbox).*\n\n### Hypervisor\n\n#### HyperKit [macOS only]\n\nHyperKit is a lightweight macOS hypervisor which minikube supports out of the box and which should be\nalready installed on your machine if you have Docker for Desktop installed.\n\nMore information: https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/.\n\nAlternatively, install VirtualBox like described below.\n\n#### KVM2 [Linux only]\n\nFollow the instructions here: https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/.\n\nAlternatively, install VirtualBox like described below.\n\n#### VirtualBox [both macOS and Linux]\n\nLet’s install VirtualBox.\n\nGet latest stable version from https://www.virtualbox.org/wiki/Downloads.\n\n**Note:** When using Ubuntu you may need to disable Secure Boot. For an alternative approach to installing with Secure Boot enabled,\nfollow the guide [here](https://torstenwalter.de/virtualbox/ubuntu/2019/06/13/install-virtualbox-ubuntu-secure-boot.html).\n\n### Kubectl\n\nFor macOS:\n\n    curl -O https://storage.googleapis.com/kubernetes-release/release/v1.16.2/bin/darwin/amd64/kubectl \\\n        \u0026\u0026 chmod +x kubectl \u0026\u0026 sudo mv kubectl /usr/local/bin/\n\nFor Linux:\n\n    curl -O https://storage.googleapis.com/kubernetes-release/release/v1.16.2/bin/linux/amd64/kubectl \\\n        \u0026\u0026 chmod +x kubectl \u0026\u0026 sudo mv kubectl /usr/local/bin/\n\n### Minikube\n\nFor macOS:\n\n    curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.5.1/minikube-darwin-amd64 \\\n        \u0026\u0026 chmod +x minikube \u0026\u0026 sudo mv minikube /usr/local/bin/\n\nFor Linux:\n\n    curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.5.1/minikube-linux-amd64 \\\n        \u0026\u0026 chmod +x minikube \u0026\u0026 sudo mv minikube /usr/local/bin/\n\nAlso, you can install drivers for various VM providers to optimize your minikube VM performance.\nInstructions can be found here: https://github.com/kubernetes/minikube/blob/master/docs/drivers.md.\n\n### Xcode and local tools\n\nXcode will install essential console utilities for us. You can install it from the App Store.\n\n## Set up cluster using minikube\n\nTo run cluster:\n\n**macOS**\n\n```bash\n# starts minikube\n$ minikube start --kubernetes-version=v1.16.2\n# this command should work\n$ kubectl get nodes\n# use docker from minikube\n$ eval $(minikube docker-env)\n# this command to check connectivity\n$ docker ps\n```\n\n**Linux**\n\n```bash\n# starts minikube\n$ minikube start --kubernetes-version=v1.16.2 --vm-driver=kvm2\n# this command should work\n$ kubectl get nodes\n# use docker from minikube\n$ eval $(minikube docker-env)\n# this command to check connectivity\n$ docker ps\n```\n\n## Clone the Workshop repository\n```bash\n$ git clone https://github.com/gravitational/workshop.git\n$ cd workshop\n```\n\n## Configure registry\n\n```\n$ kubectl create -f registry.yaml\n```\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravitational%2Fworkshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgravitational%2Fworkshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravitational%2Fworkshop/lists"}