Welcome to the OpenShift Labs on Instruqt repositories. This repo contains the source code of our self-paced labs you can access at https://developers.redhat.com/learn
To learn more about Instruqt for OpenShift Labs, check out our internal presentation here.
This repository contains images and tracks for the Instruqt platform. Red Hat is using Instruqt for in-browser demonstrations of OpenShift labs, as well as the Ansible Automation Platform and RHEL. Please refer to the Instruqt Documentation to understand how it works.
The first thing to do is to download the Instruqt CLI, which allows you to create new tracks, push tracks, and more. This how-to guide on building tracks provides a great reference in pair with our internal presentation for OpenShift-specific labs.
If don't have an account on Instruqt, create a new account: https://play.instruqt.com/login
Login with the CLI:
instruqt auth login
This will open a browser where you can login, then your CLI session is authenticated.
The OpenShift Instruqt organization page is hosted at https://play.instruqt.com/openshift
You can download an existing track by referencing it's slug:
instruqt track pull openshift/operatorframework-k8s-api-fundamentals
From within a track folder, you can push the change to your track in this way:
instruqt track push
You can check the logs from your track in this way:
instruqt track logs
Here's how to get started on working on or maintaining an Instruqt OpenShift track:
cd <repository_dir>
git pull
git checkout -b my-new-branch
git push -u origin my-new-branch
gh workflow run "convert" -F "slug=<track-slug>" -r my-new-branch
git pull origin my-new-branch
cd instruqt-tracks/<track-slug>
# make your changes...
instruqt track validate
instruqt track push
instruqt track open
instruqt track test
git add .
git commit -m "Adding new content!"
git push origin my-new-branch
gh workflow run "promote" -F "slug=<track-slug>" -r my-new-branch
git checkout master && git pull origin master && instruqt track push --force
To create a new track, review our examples and select a starting point that matches your requirements:
Start from an OpenShift template track
cd instruqt-tracks
instruqt track create --from openshift/openshift-example-track --title "My First OpenShift Track"
This creates an example track using CRC 4.11 VM with root
user and authenticated by default with system:admin
as in this example:
Alternatively, start from an OpenShift template track with a Fedora sidecar
cd instruqt-tracks
instruqt track create --from openshift/openshift-example-track-with-fedora-sidecar --title "My First OpenShift Track with Fedora Sidecar"
This creates an example track using CRC 4.11 VM and a sidecar Fedora container using root
user where to install packages/dependencies.
The container can be connected to the CRC VM with the oc CLI as in this example:
TIP: The folder name and slug name (within your track.yml
file) must match
instruqt-tracks
folder.generate
action (by click on the "Run workflow" button) to enroll your track in CI.Add scripts to check challenge execution:
The scripts should be stored within the challenge folder, alongside the assignment.md
file. The name of the script should match the name of your container or VM, for example: check-crc
or check-container
(if using the sidecar)
If Web Console access is required, replace Katacoda dynamic URLs with this snippet that will let user access to OpenShift from the web console by printing the HTTPS URL. The hypertext is highlighted so it's easy to access then by just clicking on it:
Access the OpenShift Web Console to login from the Web UI:
oc get routes console -n openshift-console -o jsonpath='{"https://"}{.spec.host}{"\n"}'
```
Copy the URL from the output of the above command and open it in your browser.
We'll deploy our app as the `developer` user. Use the following credentials:
* Username:
```
developer
```
* Password:
```
developer
```
### Routes
Replace Katacoda's dynamic URLs for routes with this snippet:
Get the URL from command line, from *Terminal 1* run this command to get the app's Route:
```
oc get route <route-name> -n <namespace> -o jsonpath='{"http://"}{.spec.host}{"/taster"}{"\n"}'
```
Copy the URL and open it in your browser, or click it from here.
### Assets
There's no relative path concept from assets like in Katacoda's index.json, so you need to download them from internet from the `setup-crc` or `setup-container` script and store in the expected path.
As a convention, we store files into track's `script` dir and images into track's `assets` dir:
├── assets │ ├── images │ │ └── ansible-op-flow.png │ ├── podset_controller.go │ └── podset_types.go ├── config.yml ├── scripts │ ├── my_script.sh ├── step1 ├── step2 ├── step3 │ └── setup-container ├── step4 │ └── setup-container ├── step5 ├── step6 │ └── setup-container ├── step7 ├── track_scripts │ ├── setup-container │ └── setup-crc └── track.yml
E.g. from `setup-crc`:
curl -s https://raw.githubusercontent.com/openshift-instruqt/instruqt/master/scripts/operatorframework/go-operator-podset/podset_types.go -o /tmp/podset_types.go
### CRC Image
We are currently using native virtualization with a CRC 4.11 (`rhd-devx-instruqt/openshift-4-11-7-lgph7
`)
The setting to have this image is from the `config.yml` file:
version: "3" virtualmachines:
We can also have a sidecar container that can connect to the CRC VM with oc CLI in this way:
version: "3"
containers:
- name: container
image: fedora
shell: /bin/bash
virtualmachines:
- name: crc
image: rhd-devx-instruqt/openshift-4-11-7-lgph7
machine_type: n1-highmem-4
allow_external_ingress:
- http
- https
- high-ports
The connection is made inside the setup scripts like this one. Please refer to Instruqt's documentation to understand track lifecycle scripts.