From e13facbcabe64f1e8fd239ac9dc9537e33ba27e5 Mon Sep 17 00:00:00 2001
From: Karlos K <168231563+kknoxrht@users.noreply.github.com>
Date: Mon, 26 Aug 2024 21:25:58 -0500
Subject: [PATCH] shifting paragraphs across pages

---
 minio_storage.yaml              | 161 ++++++++++++++++++++++++++++++++
 modules/LABENV/pages/index.adoc | 147 ++++++++++++++++++++++++++++-
 modules/ROOT/pages/index.adoc   |   2 +-
 3 files changed, 306 insertions(+), 4 deletions(-)
 create mode 100644 minio_storage.yaml

diff --git a/minio_storage.yaml b/minio_storage.yaml
new file mode 100644
index 0000000..5e6a6ed
--- /dev/null
+++ b/minio_storage.yaml
@@ -0,0 +1,161 @@
+---
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  name: minio-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 40Gi
+  volumeMode: Filesystem
+---
+kind: Secret
+apiVersion: v1
+metadata:
+  name: minio-secret
+stringData:
+  # change the username and password to your own values.
+  # ensure that the user is at least 3 characters long and the password at least 8
+  minio_root_user: minio
+  minio_root_password: minio321!
+---
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: minio
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: minio
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        app: minio
+    spec:
+      volumes:
+        - name: data
+          persistentVolumeClaim:
+            claimName: minio-pvc
+      containers:
+        - resources:
+            limits:
+              cpu: 250m
+              memory: 1Gi
+            requests:
+              cpu: 20m
+              memory: 100Mi
+          readinessProbe:
+            tcpSocket:
+              port: 9000
+            initialDelaySeconds: 5
+            timeoutSeconds: 1
+            periodSeconds: 5
+            successThreshold: 1
+            failureThreshold: 3
+          terminationMessagePath: /dev/termination-log
+          name: minio
+          livenessProbe:
+            tcpSocket:
+              port: 9000
+            initialDelaySeconds: 30
+            timeoutSeconds: 1
+            periodSeconds: 5
+            successThreshold: 1
+            failureThreshold: 3
+          env:
+            - name: MINIO_ROOT_USER
+              valueFrom:
+                secretKeyRef:
+                  name: minio-secret
+                  key: minio_root_user
+            - name: MINIO_ROOT_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: minio-secret
+                  key: minio_root_password
+          ports:
+            - containerPort: 9000
+              protocol: TCP
+            - containerPort: 9090
+              protocol: TCP
+          imagePullPolicy: IfNotPresent
+          volumeMounts:
+            - name: data
+              mountPath: /data
+              subPath: minio
+          terminationMessagePolicy: File
+          image: >-
+            quay.io/minio/minio:RELEASE.2023-06-19T19-52-50Z
+          args:
+            - server
+            - /data
+            - --console-address
+            - :9090
+      restartPolicy: Always
+      terminationGracePeriodSeconds: 30
+      dnsPolicy: ClusterFirst
+      securityContext: {}
+      schedulerName: default-scheduler
+  strategy:
+    type: Recreate
+  revisionHistoryLimit: 10
+  progressDeadlineSeconds: 600
+---
+kind: Service
+apiVersion: v1
+metadata:
+  name: minio-service
+spec:
+  ipFamilies:
+    - IPv4
+  ports:
+    - name: api
+      protocol: TCP
+      port: 9000
+      targetPort: 9000
+    - name: ui
+      protocol: TCP
+      port: 9090
+      targetPort: 9090
+  internalTrafficPolicy: Cluster
+  type: ClusterIP
+  ipFamilyPolicy: SingleStack
+  sessionAffinity: None
+  selector:
+    app: minio
+---
+kind: Route
+apiVersion: route.openshift.io/v1
+metadata:
+  name: minio-api
+spec:
+  to:
+    kind: Service
+    name: minio-service
+    weight: 100
+  port:
+    targetPort: api
+  wildcardPolicy: None
+  tls:
+    termination: edge
+    insecureEdgeTerminationPolicy: Redirect
+---
+kind: Route
+apiVersion: route.openshift.io/v1
+metadata:
+  name: minio-ui
+spec:
+  to:
+    kind: Service
+    name: minio-service
+    weight: 100
+  port:
+    targetPort: ui
+  wildcardPolicy: None
+  tls:
+    termination: edge
+    insecureEdgeTerminationPolicy: Redirect
\ No newline at end of file
diff --git a/modules/LABENV/pages/index.adoc b/modules/LABENV/pages/index.adoc
index 5915b7f..e65ecd6 100644
--- a/modules/LABENV/pages/index.adoc
+++ b/modules/LABENV/pages/index.adoc
@@ -21,7 +21,7 @@ When ordering this catalog item in RHDP:
 
   . Click order
 
-For Red Hat partners who do not have access to RHDP, you need to provision an OpenShift AI cluster on-premises, or in the supported cloud environments by following the product documentation. at https://docs.redhat.com/en/documentation/red_hat_openshift_ai_self-managed/2.11/html/installing_and_uninstalling_openshift_ai_self-managed/index[Product Documentation for installing Red Hat OpenShift AI 2.11].
+For Red Hat partners who do not have access to RHDP, you need to provision an OpenShift AI cluster on-premises, or in the supported cloud environments by following the product documentation. at https://docs.redhat.com/en/documentation/red_hat_openshift_ai_self-managed/2.12/html/installing_and_uninstalling_openshift_ai_self-managed/index[Product Documentation for installing Red Hat OpenShift AI 2.12].
 
 The OCP environment will provide the foundation infrastructure for RHOAI. Once logged into the OCP dashboard, we need to install the Operators to enable RHOAI components in the OCP platform.
 
@@ -159,7 +159,7 @@ The following section discusses installing the *Red{nbsp}Hat - Authorino* operat
 
 //image::openshiftai_operator.png[width=640]
 
-. Click on the `Red{nbsp}Hat OpenShift AI` operator. In the pop up window that opens, ensure you select the latest version in the *fast* channel. Any version equal to or greater than 2.11 and click on **Install** to open the operator's installation view.
+. Click on the `Red{nbsp}Hat OpenShift AI` operator. In the pop up window that opens, ensure you select the latest version in the *fast* channel. Any version equal to or greater than 2.12 and click on **Install** to open the operator's installation view.  
 +
 
 . In the `Install Operator` page, leave all of the options as default and click on the *Install* button to start the installation.
@@ -167,4 +167,145 @@ The following section discusses installing the *Red{nbsp}Hat - Authorino* operat
 . The operator Installation progress window will pop up. The installation may take a couple of minutes.
 
 
-WARNING: Do not proceed with the installation past this point.  In order to access the LLM remotely; you will need to make some modifications to the Data Science Cluster YAML file prior to completing the installation of Red Hat OpenShift AI.   
\ No newline at end of file
+//video::llm_dsc_v3.mp4[width=640]
+
+== Create OpenShift AI Data Science Cluster
+
+With our secrets in place, the next step is to create an OpenShift AI *Data Science Cluster*.
+
+_A DataScienceCluster is the plan in the form of an YAML outline for Data Science Cluster API deployment._
+
+Return to the OpenShift Navigation Menu, Select Installed Operators, and Click on the OpenShift AI Operator name to open the operator.
+
+ . *Select the Option to create a Data Science Cluster.*
+
+ . *Click Create* to Deploy the Data Science Cluster.  
+
+//image::dsc_deploy_complete.png[width=640]
+
+== OpenShift AI install summary
+
+Congratulations, you have successfully completed the installation of OpenShift AI on an OpenShift Container Cluster. OpenShift AI is now running on a new Dashboard!
+
+
+  * We installed the required OpenShift AI Operators
+  ** Red Hat OpenShift Serverless 
+  ** Red Hat OpenShift ServiceMesh
+  ** Red Hat Authorino (technical preview)
+  ** OpenShift AI Operator
+
+
+
+== Create a Data Science Project 
+
+Navigate to & select the Data Science Projects section.
+
+ . Select the create data science project button.
+
+ . Enter a name for your project, such as *ollama-model*.
+
+ . The resource name should be populated automatically.
+
+ . Optionally add a description to the data science project.
+
+ . Select Create.
+
+//image::dsp_create.png[width=640]
+
+ 
+The next step is to create a *Data Connection* in our Data Science Project.  Before we can create our Data Connection, we will setup MinIO as our S3 compatible storage for this Lab. 
+
+Continue to the next section to deploy and configure Minio. 
+
+== Create Data Connection 
+
+Navigate to the Data Science Project section of the OpenShift AI Console /Dashboard. Select the Ollama-model project. 
+
+. Select the Data Connection menu, followed by create data connection
+. Provide the following values:
+..  Name:  *models*
+..  Access Key: use the minio_root-user from YAML file
+..  Secret Key: use the minio_root_password from the YAML File
+..  Endpoint: use the Minio API URL from the Routes page in Openshift Dashboard
+..  Region: This is required for AWS storage & cannot be blank (no-region-minio)
+.. Bucket: use the Minio Storage bucket name: *models* 
+
+//image::dataconnection_models.png[width=800]
+
+Repeat the same process for the Storage bucket, using *storage* for the name & bucket.
+
+== Creating a WorkBench 
+
+//video::openshiftai_setup_part3.mp4[width=640]
+
+Navigate to the Data Science Project section of the OpenShift AI Console /Dashboard. Select the Ollama-model project.  
+
+//image::create_workbench.png[width=640]
+
+ . Select the WorkBench button, then click create workbench
+
+ .. Name:  `tbd`
+
+ .. Notebook Image:  `Minimal Python`
+
+ .. Leave the remaining options default.
+
+ .. Optionally, scroll to the bottom, check the `Use data connection box`.
+ 
+ .. Select *storage* from the dropdown to attach the storage bucket to the workbench.  
+
+ . Select the Create Workbench option.
+
+[NOTE]
+Depending on the notebook image selected, it can take between 2-20 minutes for the container image to be fully deployed. The Open Link will be available when our container is fully deployed.  
+
+
+
+== Jupyter Notebooks
+
+// video::llm_jupyter_v3.mp4[width=640]
+
+== Open JupyterLab 
+
+JupyterLab enables you to work with documents and activities such as Jupyter notebooks, text editors, terminals, and custom components in a flexible, integrated, and extensible manner. For a demonstration of JupyterLab and its features, https://jupyterlab.readthedocs.io/en/stable/getting_started/overview.html#what-will-happen-to-the-classic-notebook[you can view this video.]
+
+
+Return to the ollama-model workbench dashboard in the OpenShift AI console.
+
+ . Select the *Open* link to the right of the status section.
++
+image::oai_open_jupyter.png[width=640]
+
+ . When the new window opens, use the OpenShift admin user & password to login to JupyterLab. 
+
+ . Click the *Allow selected permissions* button to complete login to the notebook.
+
+
+[NOTE]
+If the *OPEN* link for the notebook is grayed out, the notebook container is still starting. This process can take a few minutes & up to 20+ minutes depending on the notebook image we opted to choose.
+
+
+== Inside JupyterLab
+
+This takes us to the JupyterLab screen where we can select multiple options / tools / to work to begin our data science experimentation.
+
+Our first action is to clone a git repository that contains a collection of LLM projects including  the notebook we are going to use to interact with the LLM. 
+
+Clone the github repository to interact with the Ollama Framework from this location:
+https://github.com/rh-aiservices-bu/llm-on-openshift.git
+
+ . Copy the URL link above
+
+ . Click on the Clone a Repo Icon above explorer section window.
++
+image::clone_a_repo.png[width=640]
+
+ . Paste the link into the *clone a repo* pop up,   make sure the *included submodules are checked*, then click the clone.
+ 
+ . Navigate to the llm-on-openshift/examples/notebooks/langchain folder:
+
+ . Then open the file: _Langchain-Ollama-Prompt-memory.ipynb_
++
+image::navigate_ollama_notebook.png[width=640]
+
+ . Explore the notebook, and then continue.
diff --git a/modules/ROOT/pages/index.adoc b/modules/ROOT/pages/index.adoc
index cc823c4..573edde 100644
--- a/modules/ROOT/pages/index.adoc
+++ b/modules/ROOT/pages/index.adoc
@@ -2,4 +2,4 @@
 :navtitle: Home
 
 
-This is an example quick course demonstrating the usage of Antora for authoring and publishing quick courses.
\ No newline at end of file
+This course is in the process of being developed, please visit again in a couple of weeks for the final draft version.
\ No newline at end of file