diff --git a/public/assets/workshops/lab-conda-environment.yaml b/public/assets/workshops/lab-conda-environment.yaml new file mode 100644 index 0000000..d0f6eda --- /dev/null +++ b/public/assets/workshops/lab-conda-environment.yaml @@ -0,0 +1,42 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-conda-environment +spec: + description: Overview of working on Python applications. + duration: 30m + session: + applications: + editor: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + dashboards: + - name: JupyterLab + url: $(ingress_protocol)://$(session_namespace)-jupyterlab.$(ingress_domain)/ + env: + - name: ENABLE_JUPYTERLAB + value: "true" + ingresses: + - name: jupyterlab + port: 8888 + namespaces: + security: + token: + enabled: false + resources: + memory: 1Gi + storage: 5Gi + title: Conda Environment + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-conda-environment-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** + image: conda-environment:* diff --git a/public/assets/workshops/lab-cookie-consent.yaml b/public/assets/workshops/lab-cookie-consent.yaml new file mode 100644 index 0000000..cebacc1 --- /dev/null +++ b/public/assets/workshops/lab-cookie-consent.yaml @@ -0,0 +1,159 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-cookie-consent +spec: + description: Overview of embedding cookie consent. + environment: + images: + registries: + - content: + - destination: educates + prefix: /educates/educates-extension-packages/educates + stripPrefix: true + onDemand: true + urls: + - https://ghcr.io + objects: + - apiVersion: v1 + kind: ServiceAccount + metadata: + name: kapp-installer + - apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: kapp-installer-$(workshop_namespace) + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin + subjects: + - kind: ServiceAccount + name: kapp-installer + namespace: $(workshop_namespace) + session: + applications: + editor: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + dashboards: + - name: Docs + url: https://docs.educates.dev/ + namespaces: + budget: x-large + security: + policy: baseline + token: + enabled: false + objects: + - apiVersion: v1 + kind: Secret + metadata: + name: $(session_name)-admin-vcluster-values + namespace: $(workshop_namespace) + stringData: + values.yaml: | + vcluster: + image: rancher/k3s:v1.29.0-k3s1 + syncer: + extraArgs: + - --tls-san=admin-vcluster.$(session_namespace).svc.$(cluster_domain) + - --out-kube-config-server=https://admin-vcluster.$(session_namespace).svc.$(cluster_domain) + - --kube-config-context-name=admin + mapServices: + fromHost: + - from: $(workshop_namespace)/registry-$(session_name) + to: default/registry + - from: $(workshop_namespace)/localhost-$(session_name) + to: default/loopback + sync: + ingresses: + enabled: true + exportKubeConfig: + context: "admin" + - apiVersion: kappctrl.k14s.io/v1alpha1 + kind: App + metadata: + name: $(session_name)-admin-vcluster-package + namespace: $(workshop_namespace) + spec: + deploy: + - kapp: + rawOptions: + - --app-changes-max-to-keep=5 + fetch: + - helmChart: + name: vcluster + repository: + url: https://charts.loft.sh + version: 0.19.9 + noopDelete: true + serviceAccountName: kapp-installer + syncPeriod: 720h + template: + - helmTemplate: + name: admin-vcluster + namespace: $(session_namespace) + valuesFrom: + - secretRef: + name: $(session_name)-admin-vcluster-values + - ytt: + inline: + paths: + overlays.yaml: | + #@ load("@ytt:data", "data") + #@ load("@ytt:overlay", "overlay") + #@overlay/match by=overlay.all, expects="1+" + --- + metadata: + #@overlay/match missing_ok=True + ownerReferences: + - apiVersion: training.educates.dev/v1beta1 + kind: WorkshopSession + blockOwnerDeletion: true + controller: true + name: $(session_name) + uid: $(workshop_session_uid) + - apiVersion: secrets.educates.dev/v1beta1 + kind: SecretCopier + metadata: + name: $(session_name)-kubeconfig + spec: + rules: + - sourceSecret: + name: vc-admin-vcluster + namespace: $(session_namespace) + targetNamespaces: + nameSelector: + matchNames: + - $(workshop_namespace) + targetSecret: + name: $(session_name)-kubeconfig + volumeMounts: + - mountPath: /opt/kubeconfig + name: admin-vcluster-kubeconfig + volumes: + - name: admin-vcluster-kubeconfig + secret: + secretName: $(session_name)-kubeconfig + title: Cookie Consent + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-cookie-consent-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** + - /exercises/** + - /README.md + packages: + - files: + - image: + url: $(oci_image_cache)/educates:v3.3.2 + path: . + name: educates diff --git a/public/assets/workshops/lab-docker-runtime.yaml b/public/assets/workshops/lab-docker-runtime.yaml new file mode 100644 index 0000000..b4b4632 --- /dev/null +++ b/public/assets/workshops/lab-docker-runtime.yaml @@ -0,0 +1,31 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-docker-runtime +spec: + description: Overview of running Docker in Educates + duration: 30m + session: + applications: + console: + enabled: true + docker: + enabled: true + files: + enabled: true + registry: + enabled: true + terminal: + enabled: true + layout: split + namespaces: + budget: medium + title: Docker Runtime + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-docker-runtime-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-examiner-scripts.yaml b/public/assets/workshops/lab-examiner-scripts.yaml new file mode 100644 index 0000000..5087989 --- /dev/null +++ b/public/assets/workshops/lab-examiner-scripts.yaml @@ -0,0 +1,29 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-examiner-scripts +spec: + description: Overview of using self check examinations. + duration: 30m + session: + applications: + examiner: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + namespaces: + budget: medium + security: + policy: baseline + title: Examiner Scripts + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-examiner-scripts-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-extension-packages.yaml b/public/assets/workshops/lab-extension-packages.yaml new file mode 100644 index 0000000..ff8ecf3 --- /dev/null +++ b/public/assets/workshops/lab-extension-packages.yaml @@ -0,0 +1,38 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-extension-packages +spec: + description: Overview of adding additional extension packages. + duration: 30m + session: + applications: + editor: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + namespaces: + budget: medium + title: Extension Packages + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-extension-packages-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** + packages: + - files: + - image: + url: ghcr.io/educates/educates-extension-packages/educates:v3.3.2 + path: . + name: educates + - files: + - image: + url: ghcr.io/educates/educates-extension-packages/vscode-java-tools-oci-overlay:v0.29.2 + path: . + name: spring-academy-vscode-tools-via-overlay diff --git a/public/assets/workshops/lab-git-repositories.yaml b/public/assets/workshops/lab-git-repositories.yaml new file mode 100644 index 0000000..0815249 --- /dev/null +++ b/public/assets/workshops/lab-git-repositories.yaml @@ -0,0 +1,27 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-git-repositories +spec: + description: Overview of using local hosted Git repositories. + duration: 30m + session: + applications: + files: + enabled: true + git: + enabled: true + terminal: + enabled: true + layout: split + namespaces: + budget: medium + title: Git Repositories + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-git-repositories-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-ingress-proxy.yaml b/public/assets/workshops/lab-ingress-proxy.yaml new file mode 100644 index 0000000..d67fd58 --- /dev/null +++ b/public/assets/workshops/lab-ingress-proxy.yaml @@ -0,0 +1,32 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-ingress-proxy +spec: + description: Overview of adding ingresses for local processes. + duration: 30m + session: + applications: + files: + enabled: true + terminal: + enabled: true + layout: split + dashboards: + - name: application + url: $(ingress_protocol)://application-$(session_namespace).$(ingress_domain)/ + ingresses: + - name: application + port: 8001 + namespaces: + budget: medium + title: Ingress Proxy + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-ingress-proxy-files:1.0.0 + includePaths: + - /exercises/** + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-integrated-editor.yaml b/public/assets/workshops/lab-integrated-editor.yaml new file mode 100644 index 0000000..5b1ed4a --- /dev/null +++ b/public/assets/workshops/lab-integrated-editor.yaml @@ -0,0 +1,27 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-integrated-editor +spec: + description: Overview of integrated VS Code editor. + duration: 30m + session: + applications: + editor: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + namespaces: + budget: medium + title: Integrated Editor + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-integrated-editor-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-java-environment.yaml b/public/assets/workshops/lab-java-environment.yaml new file mode 100644 index 0000000..a350c22 --- /dev/null +++ b/public/assets/workshops/lab-java-environment.yaml @@ -0,0 +1,83 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-java-environment +spec: + description: Overview of working on Java applications. + duration: 30m + environment: + objects: + - apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app: initializr + name: initializr + spec: + replicas: 1 + selector: + matchLabels: + app: initializr + template: + metadata: + labels: + app: initializr + spec: + containers: + - image: ghcr.io/educates/educates-spring-initializr:2.2.0 + imagePullPolicy: Always + name: dashboard + ports: + - containerPort: 8080 + name: 8080-tcp + protocol: TCP + - apiVersion: v1 + kind: Service + metadata: + labels: + app: initializr + name: initializr + spec: + ports: + - name: 8080-tcp + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + app: initializr + type: ClusterIP + session: + applications: + editor: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + dashboards: + - name: Initializr + url: $(ingress_protocol)://initializr-$(session_namespace).$(ingress_domain) + ingresses: + - host: initializr.$(workshop_namespace).svc.cluster.local + name: initializr + port: 8080 + protocol: http + namespaces: + budget: large + resources: + memory: 2Gi + title: Java Environment + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-java-environment-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** + - /exercises/** + - image: + url: ghcr.io/educates/labs-spring-workshops-maven:latest + path: .m2 + image: jdk17-environment:* diff --git a/public/assets/workshops/lab-session-namespace.yaml b/public/assets/workshops/lab-session-namespace.yaml new file mode 100644 index 0000000..8ba410f --- /dev/null +++ b/public/assets/workshops/lab-session-namespace.yaml @@ -0,0 +1,31 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-session-namespace +spec: + description: Overview of Kubernetes application deployment. + duration: 30m + session: + applications: + console: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + namespaces: + budget: medium + role: admin + security: + policy: restricted + title: Session Namespace + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-session-namespace-files:1.0.0 + includePaths: + - /exercises/** + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-slide-presentations.yaml b/public/assets/workshops/lab-slide-presentations.yaml new file mode 100644 index 0000000..0d990f6 --- /dev/null +++ b/public/assets/workshops/lab-slide-presentations.yaml @@ -0,0 +1,29 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-slide-presentations +spec: + description: Overview of integrating slide presentations. + duration: 30m + session: + applications: + files: + enabled: true + slides: + enabled: true + reveal.js: + version: 3.X + terminal: + enabled: true + layout: split + namespaces: + budget: medium + title: Slide Presentations + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-slide-presentations-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-virtual-cluster.yaml b/public/assets/workshops/lab-virtual-cluster.yaml new file mode 100644 index 0000000..3c12074 --- /dev/null +++ b/public/assets/workshops/lab-virtual-cluster.yaml @@ -0,0 +1,59 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-virtual-cluster +spec: + description: Overview of optional virtual Kubernetes cluster. + duration: 30m + session: + applications: + console: + enabled: true + files: + enabled: true + terminal: + enabled: true + layout: split + vcluster: + enabled: true + objects: + - apiVersion: v1 + kind: Secret + metadata: + name: ssh-keys + namespace: default + stringData: + id_rsa.pub: $(ssh_public_key) + namespaces: + budget: large + objects: + - apiVersion: kappctrl.k14s.io/v1alpha1 + kind: App + metadata: + name: kapp-controller + namespace: $(session_namespace)-vc + spec: + cluster: + kubeconfigSecretRef: + key: config + name: $(vcluster_secret) + namespace: default + deploy: + - kapp: {} + fetch: + - http: + url: https://github.com/carvel-dev/kapp-controller/releases/download/v0.58.0/release.yml + noopDelete: true + syncPeriod: 24h + template: + - ytt: {} + title: Virtual Cluster + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-virtual-cluster-files:1.0.0 + includePaths: + - /exercises/** + - /resources/** + - /workshop/** diff --git a/public/assets/workshops/lab-workshop-session.yaml b/public/assets/workshops/lab-workshop-session.yaml new file mode 100644 index 0000000..8018914 --- /dev/null +++ b/public/assets/workshops/lab-workshop-session.yaml @@ -0,0 +1,30 @@ +apiVersion: training.educates.dev/v1beta1 +kind: Workshop +metadata: + name: lab-workshop-session +spec: + description: Overview of the containerized workshop environment. + duration: 30m + session: + applications: + files: + enabled: true + terminal: + enabled: true + layout: split + dashboards: + - name: Docs + url: https://kubernetes.io/docs/home/ + namespaces: + security: + token: + enabled: false + title: Workshop Session + version: 1.0.0 + workshop: + files: + - image: + url: ghcr.io/educates/labs-educates-showcase/lab-workshop-session-files:1.0.0 + includePaths: + - /resources/** + - /workshop/** diff --git a/public/images/educates-docker.png b/public/images/educates-docker.png new file mode 100644 index 0000000..8f848ef Binary files /dev/null and b/public/images/educates-docker.png differ diff --git a/public/images/educates-java.png b/public/images/educates-java.png new file mode 100644 index 0000000..a941b74 Binary files /dev/null and b/public/images/educates-java.png differ diff --git a/public/images/educates-kubernetes.png b/public/images/educates-kubernetes.png new file mode 100644 index 0000000..7f0e019 Binary files /dev/null and b/public/images/educates-kubernetes.png differ diff --git a/public/images/educates-python.png b/public/images/educates-python.png new file mode 100644 index 0000000..d1819a5 Binary files /dev/null and b/public/images/educates-python.png differ diff --git a/public/images/educates-vcluster.png b/public/images/educates-vcluster.png new file mode 100644 index 0000000..46a30db Binary files /dev/null and b/public/images/educates-vcluster.png differ diff --git a/public/images/educates-vscode.png b/public/images/educates-vscode.png new file mode 100644 index 0000000..ac48577 Binary files /dev/null and b/public/images/educates-vscode.png differ diff --git a/public/images/educates.png b/public/images/educates.png new file mode 100644 index 0000000..af47fdd Binary files /dev/null and b/public/images/educates.png differ diff --git a/public/images/kubernetes.png b/public/images/kubernetes.png new file mode 100644 index 0000000..f2712c7 Binary files /dev/null and b/public/images/kubernetes.png differ diff --git a/public/images/python.png b/public/images/python.png new file mode 100644 index 0000000..20f36f4 Binary files /dev/null and b/public/images/python.png differ diff --git a/public/images/vcluster.png b/public/images/vcluster.png new file mode 100644 index 0000000..c1038f6 Binary files /dev/null and b/public/images/vcluster.png differ diff --git a/public/images/vscode-educates.png b/public/images/vscode-educates.png new file mode 100644 index 0000000..4d012e8 Binary files /dev/null and b/public/images/vscode-educates.png differ diff --git a/public/images/vscode-java.png b/public/images/vscode-java.png new file mode 100644 index 0000000..ad55e58 Binary files /dev/null and b/public/images/vscode-java.png differ diff --git a/public/images/vscode-kubernetes.png b/public/images/vscode-kubernetes.png new file mode 100644 index 0000000..6d8310f Binary files /dev/null and b/public/images/vscode-kubernetes.png differ diff --git a/public/images/vscode-python.png b/public/images/vscode-python.png new file mode 100644 index 0000000..97be540 Binary files /dev/null and b/public/images/vscode-python.png differ diff --git a/src/components/CopyableCodeBlock.jsx b/src/components/CopyableCodeBlock.jsx new file mode 100644 index 0000000..4306c90 --- /dev/null +++ b/src/components/CopyableCodeBlock.jsx @@ -0,0 +1,38 @@ +import { useRef, useState } from 'react'; + +export default function CopyableCodeBlock({ title, command }) { + const [copyStatus, setCopyStatus] = useState('Copy'); + const cmdRef = useRef(null); + + const handleCopy = () => { + if (cmdRef.current) { + const text = cmdRef.current.innerText; + navigator.clipboard.writeText(text).then(() => { + setCopyStatus('Copied!'); + setTimeout(() => setCopyStatus('Copy'), 1500); + }); + } + }; + + return ( + <> +
+ {title} + +
+
+        {command}
+      
+ + ); +} \ No newline at end of file diff --git a/src/components/ExtensionPackageDetail.jsx b/src/components/ExtensionPackageDetail.jsx index 5dfbb60..5110b25 100644 --- a/src/components/ExtensionPackageDetail.jsx +++ b/src/components/ExtensionPackageDetail.jsx @@ -15,8 +15,7 @@ export default function ExtensionPackageDetail({ extensionPackage }) { files: - path: . image: - url: ${extensionPackage.oci_image} - ...` + url: ${extensionPackage.oci_image}` const sampleSource = ` apiVersion: training.educates.dev/v1beta1 @@ -30,7 +29,8 @@ export default function ExtensionPackageDetail({ extensionPackage }) { - image: url: $(image_repository)/your-workshop-files:$(workshop_version) path: . - ${sampleSourceCopyContent}` + ${sampleSourceCopyContent} + ...` const sampleSourceWithCacheCopyContent = diff --git a/src/components/InstallModal.jsx b/src/components/InstallModal.jsx index 7af675e..4c96d7a 100644 --- a/src/components/InstallModal.jsx +++ b/src/components/InstallModal.jsx @@ -1,8 +1,7 @@ import { useRef, useState, useEffect } from 'react'; +import CopyableCodeBlock from './CopyableCodeBlock'; export default function InstallModal({ show, onClose, downloadUrl }) { - const [copyStatus, setCopyStatus] = useState('Copy'); - const installCmdRef = useRef(null); const modalRef = useRef(null); useEffect(() => { @@ -21,16 +20,6 @@ export default function InstallModal({ show, onClose, downloadUrl }) { } }, [show]); - const handleCopy = () => { - if (installCmdRef.current) { - const text = installCmdRef.current.innerText; - navigator.clipboard.writeText(text).then(() => { - setCopyStatus('Copied!'); - setTimeout(() => setCopyStatus('Copy'), 1500); - }); - } - }; - return (
-
+
@@ -54,23 +43,34 @@ export default function InstallModal({ show, onClose, downloadUrl }) {
- Install Command - + If you want to install this workshop onto your own cluster, you can use the following command:
-
-{`educates deploy-workshop -f ${downloadUrl}`}
-            
+ {/*
Replace my-{workshopSlug} with your desired release name.
*/} + +
+ NOTE: this command will deploy the workshop onto your cluster, but you will need to add it + to a TrainingPortal to make it available to your users. +
+
+
+ Test on a local cluster +
If you want to test the workshop on a local cluster:
+
1. Create a local cluster.
+ +
2. Next, install the workshop with the previous command. In this case, a TrainingPortal will be created automatically.
+
3. Access the workshop.
+ +
diff --git a/src/content/extension-packages/spring-academy-vscode-tools-via-overlay.yaml b/src/content/extension-packages/spring-academy-vscode-tools-via-overlay.yaml index 424067c..d54d3cb 100644 --- a/src/content/extension-packages/spring-academy-vscode-tools-via-overlay.yaml +++ b/src/content/extension-packages/spring-academy-vscode-tools-via-overlay.yaml @@ -6,7 +6,7 @@ description: |- - Ability to build, test Java apps using Maven or Gradle build tools. This extension uses files overlays so that startup time is faster. -image: vscode +image: vscode_java author: Spring Academy Team date_created: 2025-06-19 labels: diff --git a/src/content/extension-packages/spring-academy-vscode-tools.yaml b/src/content/extension-packages/spring-academy-vscode-tools.yaml index d934e20..0e69842 100644 --- a/src/content/extension-packages/spring-academy-vscode-tools.yaml +++ b/src/content/extension-packages/spring-academy-vscode-tools.yaml @@ -6,7 +6,7 @@ description: |- - Ability to build, test Java apps using Maven or Gradle build tools. This extension does installation at startup, so that startup time is longer, but every feature is available immediately. -image: vscode +image: vscode_java author: Spring Academy Team date_created: 2025-06-19 labels: diff --git a/src/content/workshops/WIP/examples.yaml__ b/src/content/workshops/WIP/examples.yaml__ deleted file mode 100644 index 33bfabb..0000000 --- a/src/content/workshops/WIP/examples.yaml__ +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Grafana Visualization -description: Visualize metrics and logs with Grafana dashboards. -image: grafana -author: Sofia Garcia -date_created: 2024-06-22 -labels: - - monitoring -install_url: https://github.com/educates/workshops/grafana-visualization -repo_url: https://github.com/educates/workshops/grafana-visualization -workshop_definition_url: https://github.com/educates/workshops/grafana-visualization/releases/download/main/workshop.yaml -version: 1.0.1 -release_notes: Added new dashboard templates. ---- -title: Helm Basics -description: Introduction to Helm for Kubernetes package management. -image: helm -author: Emily Zhang -date_created: 2024-06-15 -labels: - - kubernetes - - beginner -install_url: https://github.com/educates/workshops/helm-basics -repo_url: https://github.com/educates/workshops/helm-basics -workshop_definition_url: https://github.com/educates/workshops/helm-basics/releases/download/main/workshop.yaml -version: 1.0.0 -release_notes: First release. ---- -title: Istio Service Mesh -description: Explore service mesh concepts and Istio features in Kubernetes. -image: istio -author: Priya Patel -date_created: 2024-06-18 -labels: - - service-mesh - - kubernetes -install_url: https://github.com/educates/workshops/istio-service-mesh -repo_url: https://github.com/educates/workshops/istio-service-mesh -workshop_definition_url: https://github.com/educates/workshops/istio-service-mesh/releases/download/main/workshop.yaml -version: 1.2.0 -release_notes: Added traffic management labs. ---- -title: Kubernetes 101 -description: Introductory workshop for Kubernetes basics. -image: kubernetes -author: Jane Doe -date_created: 2024-06-01 -labels: - - kubernetes - - beginner -install_url: https://github.com/educates/workshops/k8s101 -repo_url: https://github.com/educates/workshops/k8s101 -workshop_definition_url: https://github.com/educates/workshops/k8s101/releases/download/main/workshop.yaml -version: 1.0.0 -release_notes: Initial release. ---- -title: NGINX Ingress Controller -description: Configure and use NGINX as an ingress controller in Kubernetes. -image: nginx -author: Olga Ivanova -date_created: 2024-06-28 -labels: - - ingress - - kubernetes -install_url: https://github.com/educates/workshops/nginx-ingress -repo_url: https://github.com/educates/workshops/nginx-ingress -workshop_definition_url: https://github.com/educates/workshops/nginx-ingress/releases/download/main/workshop.yaml -version: 1.0.0 -release_notes: Initial NGINX Ingress Controller workshop. ---- -title: PostgreSQL on Kubernetes -description: Deploy and manage PostgreSQL databases in Kubernetes. -image: postgresql -author: Miguel Torres -date_created: 2024-06-25 -labels: - - database - - kubernetes -install_url: https://github.com/educates/workshops/postgresql-k8s -repo_url: https://github.com/educates/workshops/postgresql-k8s -workshop_definition_url: https://github.com/educates/workshops/postgresql-k8s/releases/download/main/workshop.yaml -version: 1.0.0 -release_notes: Initial PostgreSQL on Kubernetes workshop. ---- -title: Prometheus Monitoring -description: Learn how to monitor Kubernetes clusters with Prometheus. -image: prometheus -author: Alice Brown -date_created: 2024-06-10 -labels: - - monitoring - - kubernetes -install_url: https://github.com/educates/workshops/prometheus-monitoring -repo_url: https://github.com/educates/workshops/prometheus-monitoring -workshop_definition_url: https://github.com/educates/workshops/prometheus-monitoring/releases/download/main/workshop.yaml -version: 1.1.0 -release_notes: Updated for Prometheus Operator. ---- -title: Tekton CI/CD -description: Build CI/CD pipelines for Kubernetes using Tekton. -image: tekton -author: Liam Nguyen -date_created: 2024-06-20 -labels: - - ci/cd - - kubernetes -install_url: https://github.com/educates/workshops/tekton-ci -repo_url: https://github.com/educates/workshops/tekton-ci -workshop_definition_url: https://github.com/educates/workshops/tekton-ci/releases/download/main/workshop.yaml -version: 1.0.0 -release_notes: Initial Tekton CI/CD workshop. diff --git a/src/content/workshops/WIP/labs-authoring-guides.yaml b/src/content/workshops/WIP/labs-authoring-guides.yaml deleted file mode 100644 index bbde2b2..0000000 --- a/src/content/workshops/WIP/labs-authoring-guides.yaml +++ /dev/null @@ -1,13 +0,0 @@ -title: Workshop Authoring -slug: workshop-authoring -description: Getting started with workshop authoring -author: Educates Team -image: educates -labels: - - educates-showcase -repository: - org: educates - name: labs-authoring-guides - ref: "main" - path: workshops.yaml -install_url: https://github.com/educates/labs-authoring-guides/releases/download/main/workshops.yaml diff --git a/src/content/workshops/WIP/labs-educates-showcase.yaml__ b/src/content/workshops/WIP/labs-educates-showcase.yaml__ deleted file mode 100644 index 937b96b..0000000 --- a/src/content/workshops/WIP/labs-educates-showcase.yaml__ +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: Workshop Session -slug: workshop-session -description: Overview of the containerized workshop environment. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Session Namespace -slug: session-namespace -description: Overview of Kubernetes application deployment. -author: Educates Team -image: kubernetes -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Virtual Cluster -slug: virtual-cluster -description: Overview of optional virtual Kubernetes cluster. -author: Educates Team -image: kubernetes -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase - - vcluster ---- -title: Multiple Clusters -slug: multiple-clusters -description: Overview of working with multiple clusters. -author: Educates Team -image: kubernetes -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Virtual Machines -slug: virtual-machines -description: Overview of provisioning virtual machines. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase - - virtual-machine ---- -title: Integrated Editor -slug: integrated-editor -description: Overview of integrated VS Code editor. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Slide Presentations -slug: slide-presentations -description: Overview of integrating slide presentations. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Docker Runtime -slug: docker-runtime -description: Overview of deploying applications using docker. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase - - docker ---- -title: Examiner Scripts -slug: examiner-scripts -description: Overview of using self check examinations. -author: Educates Team -image: educates -labels: - - educates-showcase ---- -title: Java Environment -slug: java-environment -description: Overview of working on Java applications. -author: Educates Team -image: educates -labels: - - educates-showcase - - java ---- -title: Conda Environment -slug: conda-environment -description: Overview of working on Python applications. -author: Educates Team -image: educates -labels: - - educates-showcase - - python ---- -title: Shared Resources -slug: shared-resources -description: Overview of pre-creating shared resources. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Session Resources -slug: session-resources -description: Overview of creating per session resources. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Extension Packages -slug: extension-packages -description: Overview of adding additional extension packages. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Managed Services -slug: managed-services -description: Overview of running additional managed processes. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Ingress Proxy -slug: ingress-proxy -description: Overview of adding ingresses for local processes. -author: Educates Team -image: nginx -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Git Repositories -slug: git-repositories -description: Overview of using local hosted Git repositories. -author: Educates Team -image: educates -labels: - - educates-showcase ---- -title: Installing Educates -slug: installing-educates -description: Overview of installing Educates using the CLI. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase ---- -title: Workshop Authoring -slug: workshop-authoring -description: Overview of authoring workshops for Educates. -author: Educates Team -image: educates -install_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -repo_url: https://github.com/educates/labs-educates-showcase -workshop_definition_url: https://github.com/educates/labs-educates-showcase/releases/download/main/workshops.yaml -labels: - - educates-showcase diff --git a/src/content/workshops/lab-showcase-conda-environment.yaml b/src/content/workshops/lab-showcase-conda-environment.yaml new file mode 100644 index 0000000..1a756ac --- /dev/null +++ b/src/content/workshops/lab-showcase-conda-environment.yaml @@ -0,0 +1,15 @@ +title: Using Conda Environment in Educates +slug: lab-conda-environment +description: How to use Conda Environment in Educates. +author: Educates Team +image: educates_python +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-conda-environment/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-conda-environment.yaml +labels: + - educates-showcase + - educates-language-environment + - conda diff --git a/src/content/workshops/lab-showcase-cookie-consent.yaml b/src/content/workshops/lab-showcase-cookie-consent.yaml new file mode 100644 index 0000000..c8cd60d --- /dev/null +++ b/src/content/workshops/lab-showcase-cookie-consent.yaml @@ -0,0 +1,14 @@ +title: Using Cookie Consent in Educates +slug: lab-cookie-consent +description: How to add Cookie Consent to Educates. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-cookie-consent/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-cookie-consent.yaml +labels: + - educates-showcase + - cookie-consent diff --git a/src/content/workshops/lab-showcase-docker-runtime.yaml b/src/content/workshops/lab-showcase-docker-runtime.yaml new file mode 100644 index 0000000..cac8ff6 --- /dev/null +++ b/src/content/workshops/lab-showcase-docker-runtime.yaml @@ -0,0 +1,14 @@ +title: Using Docker Runtime in Educates +slug: lab-docker-runtime +description: How to use Docker Runtime in Educates. +author: Educates Team +image: educates_docker +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-docker-runtime/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-docker-runtime.yaml +labels: + - educates-showcase + - docker diff --git a/src/content/workshops/lab-showcase-examiner-scripts.yaml b/src/content/workshops/lab-showcase-examiner-scripts.yaml new file mode 100644 index 0000000..3a0122e --- /dev/null +++ b/src/content/workshops/lab-showcase-examiner-scripts.yaml @@ -0,0 +1,14 @@ +title: Using Examiner Scripts in Educates +slug: lab-examiner-scripts +description: How to use Examiner Scripts in Educates to validate user progress and answers. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-examiner-scripts/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-examiner-scripts.yaml +labels: + - educates-showcase + - examiner diff --git a/src/content/workshops/lab-showcase-extension-packages.yaml b/src/content/workshops/lab-showcase-extension-packages.yaml new file mode 100644 index 0000000..6000d0b --- /dev/null +++ b/src/content/workshops/lab-showcase-extension-packages.yaml @@ -0,0 +1,14 @@ +title: Using Extension Packages in Educates +slug: lab-extension-packages +description: How to use Extension Packages in Educates to add features to your Educates sessions like additional binaries and VS Code extensions. +author: Educates Team +image: educates_vscode +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-extension-packages/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-extension-packages.yaml +labels: + - educates-showcase + - extension-packages diff --git a/src/content/workshops/lab-showcase-git-repositories.yaml b/src/content/workshops/lab-showcase-git-repositories.yaml new file mode 100644 index 0000000..ef3b301 --- /dev/null +++ b/src/content/workshops/lab-showcase-git-repositories.yaml @@ -0,0 +1,14 @@ +title: Using Git Repositories in Educates +slug: lab-git-repositories +description: How to use internal per session Git Repositories in Educates. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-git-repositories/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-git-repositories.yaml +labels: + - educates-showcase + - git diff --git a/src/content/workshops/lab-showcase-ingress-proxy.yaml b/src/content/workshops/lab-showcase-ingress-proxy.yaml new file mode 100644 index 0000000..be55513 --- /dev/null +++ b/src/content/workshops/lab-showcase-ingress-proxy.yaml @@ -0,0 +1,14 @@ +title: Using Ingress Proxy in Educates +slug: lab-ingress-proxy +description: How to expose additional services in your Educates session to the outside world. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-ingress-proxy/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-ingress-proxy.yaml +labels: + - educates-showcase + - ingress-proxy diff --git a/src/content/workshops/lab-showcase-integrated-editor.yaml b/src/content/workshops/lab-showcase-integrated-editor.yaml new file mode 100644 index 0000000..e9964ac --- /dev/null +++ b/src/content/workshops/lab-showcase-integrated-editor.yaml @@ -0,0 +1,15 @@ +title: Using Integrated Editor in Educates +slug: lab-integrated-editor +description: How to interact with the Integrated Editor from the instructions in Educates. +author: Educates Team +image: educates_vscode +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-integrated-editor/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-integrated-editor.yaml +labels: + - educates-showcase + - IDE + - vscode diff --git a/src/content/workshops/lab-showcase-java-environment.yaml b/src/content/workshops/lab-showcase-java-environment.yaml new file mode 100644 index 0000000..3a0e607 --- /dev/null +++ b/src/content/workshops/lab-showcase-java-environment.yaml @@ -0,0 +1,15 @@ +title: Using Java Environment in Educates +slug: lab-java-environment +description: How to use Java Environment in Educates. +author: Educates Team +image: educates_java +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-java-environment/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-java-environment.yaml +labels: + - educates-showcase + - java + - educates-language-environment diff --git a/src/content/workshops/lab-showcase-session-namespace.yaml b/src/content/workshops/lab-showcase-session-namespace.yaml new file mode 100644 index 0000000..2cbe480 --- /dev/null +++ b/src/content/workshops/lab-showcase-session-namespace.yaml @@ -0,0 +1,14 @@ +title: Using Session Namespace in Educates +slug: lab-session-namespace +description: How to use Session Namespace in Educates. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-session-namespace/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-session-namespace.yaml +labels: + - educates-showcase + - session-namespace diff --git a/src/content/workshops/lab-showcase-slide-presentations.yaml b/src/content/workshops/lab-showcase-slide-presentations.yaml new file mode 100644 index 0000000..ff614bc --- /dev/null +++ b/src/content/workshops/lab-showcase-slide-presentations.yaml @@ -0,0 +1,14 @@ +title: Using Slide Presentations in Educates +slug: lab-slide-presentations +description: How to use Slide Presentations in Educates to create interactive presentations. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-slide-presentations/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-slide-presentations.yaml +labels: + - educates-showcase + - slide-presentations diff --git a/src/content/workshops/lab-showcase-virtual-cluster.yaml b/src/content/workshops/lab-showcase-virtual-cluster.yaml new file mode 100644 index 0000000..9b0ef81 --- /dev/null +++ b/src/content/workshops/lab-showcase-virtual-cluster.yaml @@ -0,0 +1,14 @@ +title: Using Virtual Cluster in Educates +slug: lab-virtual-cluster +description: How to use Virtual Cluster in Educates to create a dedicated cluster for your session. +author: Educates Team +image: educates_vcluster +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-virtual-cluster/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-virtual-cluster.yaml +labels: + - educates-showcase + - vcluster diff --git a/src/content/workshops/lab-showcase-workshop-session.yaml b/src/content/workshops/lab-showcase-workshop-session.yaml new file mode 100644 index 0000000..bb1a249 --- /dev/null +++ b/src/content/workshops/lab-showcase-workshop-session.yaml @@ -0,0 +1,15 @@ +title: Educates Workshop Session Walkthrough +slug: lab-workshop-session +description: Walkthrough of a workshop session in Educates. +author: Educates Team +image: educates +repository: + org: educates + name: labs-educates-showcase + ref: "1.0.0" + path: workshops/lab-workshop-session/resources/workshop.yaml +install_url: https://github.com/educates/labs-educates-showcase/releases/download/1.0.0/lab-workshop-session.yaml +labels: + - educates-showcase + - workshop + - walkthrough diff --git a/src/layouts/Footer.astro b/src/layouts/Footer.astro index 7b03c14..56f4ed1 100644 --- a/src/layouts/Footer.astro +++ b/src/layouts/Footer.astro @@ -25,11 +25,11 @@ rel="noopener noreferrer">educates.dev About Educates GitHub Repository +
  • + Educates Hub GitHub Repository +
  • Contributing

    - Want to add your own workshop? Contribute on GitHub or reach out to the community! diff --git a/src/utils/imageMap.ts b/src/utils/imageMap.ts index 11b90f5..9399319 100644 --- a/src/utils/imageMap.ts +++ b/src/utils/imageMap.ts @@ -1,5 +1,5 @@ export const imageMap: Record = { - kubernetes: "/images/kubernetes.svg", + kubernetes: "/images/kubernetes.png", prometheus: "/images/prometheus.png", grafana: "/images/grafana.svg", argo: "/images/argo-cd.png", @@ -8,11 +8,23 @@ export const imageMap: Record = { tekton: "/images/tekton.png", postgresql: "/images/postgresql.png", nginx: "/images/nginx.png", - educates: "/images/educates.svg", + educates: "/images/educates.png", spring: "/images/spring.png", java: "/images/java.png", + python: "/images/python.png", docker: "/images/docker.png", vscode: "/images/vscode.png", + vcluster: "/images/vcluster.png", + vscode_kubernetes: "/images/vscode-kubernetes.png", + vscode_java: "/images/vscode-java.png", + vscode_python: "/images/vscode-python.png", + vscode_educates: "/images/vscode-educates.png", + educates_docker: "/images/educates-docker.png", + educates_kubernetes: "/images/educates-kubernetes.png", + educates_java: "/images/educates-java.png", + educates_python: "/images/educates-python.png", + educates_vscode: "/images/educates-vscode.png", + educates_vcluster: "/images/educates-vcluster.png", // Add more mappings as needed };