-
-
-
-
-
-Nice 🚀! If you've completed all the exercises so far, you have a good foundation for how App Connect addresses common L7 MCN scenarios.
-In subsequent labs, we'll explore security and observabilty concepts that build on MCN functionality.
-Head over to the Network Connect exercise.
-
-
\ No newline at end of file
diff --git a/labapp/app/markdown/lb.md b/labapp/app/markdown/lb.md
index 01f9d3f..ddacf7b 100644
--- a/labapp/app/markdown/lb.md
+++ b/labapp/app/markdown/lb.md
@@ -20,19 +20,19 @@ Build an origin pool and load balancer based on the exercise requirements.
-
+
The cloud app is only reachable from the student-azurenet site.
-
+
The cloud app is TLS only.
@@ -146,5 +146,5 @@ document.getElementById('requestBtn2').addEventListener('click', () => {
-Once you've completed both exercises, move on to the http routing exercise.
+After completing both exercises, move on to the routing exercise.
diff --git a/labapp/app/markdown/manipulation.md b/labapp/app/markdown/manipulation.md
new file mode 100644
index 0000000..a5b9698
--- /dev/null
+++ b/labapp/app/markdown/manipulation.md
@@ -0,0 +1,112 @@
+
+
+
+
+# **Manipulation**
+
+
+
+Since web traffic has been traversing proxies, engineers have needed to alter HTTP content for increased observability ([XFF](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)), performance ([cache-control](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control)), or other reasons ([JWT](https://en.wikipedia.org/wiki/JSON_Web_Token)).
+"Proxy Pass" functionality has been part of web servers since the early Apache days.
+Adding, removing, and altering Headers are tablestakes for ADCs, CDNs, and software-based load balancers.
+F5 XC App Connect enables this functionality granularly on routes or broadly on the load balancer.
+
+
+
+
+### **Exercise 1: Path Rewrite**
+
+Configure a path prefix rewrite to remove part of the request path when routing to an origin.
+
+
+
+
+ Keep your configuration from the previous exercise in place.
+
+
+
+ Requests to "https://eph-ns.mcn-lab.f5demos.com/aws/raw" need to arrive at the origin with a path of "/raw"
+
+
+
+
+
+
+Nice 🚀! If you've completed all the exercises so far, you have a good foundation for how App Connect addresses common L7 MCN scenarios.
+In subsequent labs, we'll explore security and observabilty concepts that build on MCN functionality.
+Head over to the Network Connect exercise.
+
diff --git a/labapp/app/markdown/overview.md b/labapp/app/markdown/overview.md
index c518123..6f6e43f 100644
--- a/labapp/app/markdown/overview.md
+++ b/labapp/app/markdown/overview.md
@@ -1,52 +1,141 @@
-
-
+
-This lab is a "practical" training activity.
-Each exercise will ask you to **configure** F5 Distributed Cloud ("XC") objects to reinforce core XC Multi-Cloud Networking ("MCN") concepts.
-Once configured, you'll be asked to **test** your configuration using this web application.
+# **Overview**
-
-
-# **Getting Started**
-When your UDF deployment launched, two automated processes started - Customer Edge ("CE") registration and account provisioning in the [lab tenant](https://f5-xc-lab-mcn.console.ves.volterra.io/).
+The lab environment, the application endpoints, and how you interact with the load balancer have been simplified in an effort to focus on concepts.
+Understanding the environment, it's topology, and the rudimentary functionality of the cloud app will help in completing the exercises.
-## **Customer Edge**
+## **Architecture**
-The CE in your UDF deployment is being registered with the [lab tenant](https://f5-xc-lab-mcn.console.ves.volterra.io/).
-CEs on first launch update software and, often, thier OS. This can be very time consuming.
-This process will take 15-20 min from when the CE is booted.
-You can still get started on some preliminary tasks while waiting.
+The lab environment contains three distributed sites meshed using the F5 Distributed Cloud Global Network.
-
+
-**Note on status in nav and status page.**
+
+
+
+ student-awsnet in Amazon Web Services
+
+
+
+ student-azurenet in Microsoft Azure
+
+
+
+ Lab CE in UDF
+
+
-## **Account Provisioning**
+
+
+## **Cloud App**
-Check the email used to launch your UDF deployment for a "welcome" or password reset email to the [lab tenant](https://f5-xc-lab-mcn.console.ves.volterra.io/).
-Update your password and log into the tenant.
+An instance of the cloud app is hosted in each remote cloud environment.
+The cloud app is a simple application that echoes back an HTTP request.
+While working through the lab, unless otherwise noted, the test results are displaying the headers and info **from the request received by the app**.
+
+For testing, you can access an endpoint of each cloud app from your browser.
+
+
+
+
+
+
+
+
+## **Lab Exercises**
+
+Lab exercises will ask you to create configuration in the lab tenant.
+To complete a lab exercise, you will run a test against the load balancer advertised from the Customer Edge in your UDF site.
+Tests are integrated in this lab app.
+
+
+
+#### **Test Criteria**
+
+Exercises will specify thier success criteria along with the test.
+
+Here are some examples to try.
+
+```http
+GET https://foo.f5demos.com/ HTTP/1.1
+
+{
+ "info": "bar"
+}
+```
-
-After you've logged in to the tenant you must visit the setup page before starting the exercises.
+
+
+
+
+
+The test made a request to https://foo.f5demos.com.
+The test succeeded because the response contained the ``JSON`` string ``{ "info": "bar" }``.
+
+
+
+```http
+GET https://bar.f5demos.com/ HTTP/1.1
+
+{
+ "info": "foo"
+}
+```
+
+
+
+
+
+
+
+The test made a request to https://bar.f5demos.com.
+The test failed because the response did not contain the ``JSON`` string ``{ "info": "bar" }``.
+
+#### **Other Tools**
+
+``curl`` and ``jq`` are provided on the UDF "Runner" instance.
+
+```shell
+ubuntu@ubuntu:~$ curl -s https://foo.mcn-lab.f5demos.com/ | jq
+{
+ "info": "bar"
+}
+```
+
+
+Note that responses displayed in exercise tests are truncated for readibility.
+
+
+
+Next, visit the setup page before starting the exercises.
+
+
diff --git a/labapp/app/markdown/portability.md b/labapp/app/markdown/portability.md
new file mode 100644
index 0000000..2ffdd1d
--- /dev/null
+++ b/labapp/app/markdown/portability.md
@@ -0,0 +1,82 @@
+
+
+
+
+# **Portability**
+
+
+
+
+So far we've built an object handling load balancing, routing, and content manipulation across multiple sites.
+XC refers to these as "load balancers" but it's really the holistic representation of a service whose components live across a distributed network.
+Our object is a simplified representation that does not include WAAP, API Protection, or service policies.
+XC is incredibly flexible in defining where that object is advertised.
+
+
+
+### **Exercise 1: Advertise Policy**
+
+-- advertise from the Virtual Site
+
+
+
+#### **Test Criteria**
+
+```http
+GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1
+Host: eph-ns.mcn-lab.f5demos.com
+
+{
+ "env": "azure",
+ ...
+}
+```
+
+
+
+
+
+
+
+
+
+### **Exercise 2: Find a Friend (Optional)**
+
+Test a friend's site. Look at the headers from the previous exercises.
+
+We need an input button for the friend's LB. I can keep my funny name LB around for this as well.
+
+
+
+#### **Test Criteria**
+
+```http
+GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1
+Host: eph-ns.mcn-lab.f5demos.com
+
+{
+ "env": "azure",
+ ...
+}
+```
+
+
+
+
+
+
+
+
+
+Nice 🚀! If you've completed all the exercises so far, you have a good foundation for how App Connect addresses common L7 MCN scenarios.
+In subsequent labs, we'll explore security and observabilty concepts that build on MCN functionality.
+Head over to the Network Connect exercise.
+
diff --git a/labapp/app/markdown/reference.md b/labapp/app/markdown/reference.md
new file mode 100644
index 0000000..e69de29
diff --git a/labapp/app/markdown/route.md b/labapp/app/markdown/route.md
index 763d354..a9feade 100644
--- a/labapp/app/markdown/route.md
+++ b/labapp/app/markdown/route.md
@@ -14,20 +14,20 @@ F5 XC App Connect is a distributed L7 proxy that provide intelligent routing, vi
### **Exercise 1: Path Routing**
-Build routing rules and configure your load balancer to route traffic between the two cloud apps based on HTTP the request url.
+Build routing rules and configure your load balancer to route traffic between the two cloud apps based on the request url.
-
+
Reuse the origin pools from the previous exercise
-
- Route requests to https://ephemeral-ns.mcn-lab.f5demos.com/aws to the AWS cloud app.
+
+ Route requests to "https://eph-ns.mcn-lab.f5demos.com/aws" to the AWS cloud app.
-
- Route requests to https://ephemeral-ns.mcn-lab.f5demos.com/azure to the Azure cloud app.
+
+ Route requests to "https://eph-ns.mcn-lab.f5demos.com/azure" to the Azure cloud app.
@@ -76,11 +76,11 @@ Build rules to route traffic between the two cloud apps based on an arbitrary HT
-
+
Route requests with an "X-MCN-Lab: aws" header to the AWS cloud app.
-
+
Route requests with an "X-MCN-Lab: azure" header to the Azure cloud app.
@@ -123,4 +123,4 @@ document.getElementById('requestBtn2').addEventListener('click', () => {
-Once you've completed the exercises, move on to the header manipulation exercise.
\ No newline at end of file
+Once you've completed the exercises, move on to the manipulation exercise.
\ No newline at end of file
diff --git a/labapp/app/markdown/score.md b/labapp/app/markdown/score.md
new file mode 100644
index 0000000..e69de29
diff --git a/labapp/app/markdown/setup.md b/labapp/app/markdown/setup.md
index c6e7f66..c2ea7e2 100644
--- a/labapp/app/markdown/setup.md
+++ b/labapp/app/markdown/setup.md
@@ -6,11 +6,12 @@
-Log in to the [lab tenant](https://f5-xc-lab-mcn.console.ves.volterra.io/) and open any namespaced tile (Multi-Cloud App Connect, Distributed Apps, etc.). Your ephemeral NS name is a randomly generated concatenation of _adjective_-_animal_ in the navigation bar towards the top.
+Log in to the lab tenant and open any namespaced tile (Multi-Cloud App Connect, Distributed Apps, etc.). The ephemeral namespace is a randomly generated concatenation of adjective-animal in the navigation bar towards the top.
-
+
-The ephemeral NS name will be used to derive a unique URL for the load balancer used in these exercises.
+
+The ephemeral namespace will be used to derive a unique URL for the load balancer used in the lab exercises.