Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,3 @@ Here's a recap of the lessons learned in this course:
3. Configuring, deploying, and managing the Ambassador Edge Stack with Meshery is now well understood.

By following this tutorial, you have gained a comprehensive understanding of the Ambassador Edge Stack and its integration with Meshery. Congratulations on completing the course!


Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ weight: 3

The design below shows the traffic flow between some major components in the Ambassador Edge Stack (AES) system.

![es8]({{< usestatic "mastering-kubernetes-for-engineers/es8.png" >}})
![es8](es8.png)

The components include:

Expand All @@ -35,7 +35,7 @@ Let's take a look at the roles of each component and the ports used for communic

### **Service Account Roles**

![es9]({{< usestatic "mastering-kubernetes-for-engineers/es9.png" >}})
![es9](es9.png)

The diagram above shows one of the role assignments and service account relationships within
the Ambassador Edge Stack (AES) system. You can see that the Service Account (edge-stack) is
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,31 @@ The Edge Stack CRD YAML file typically contains the definitions for custom resou
- Choose **Url upload** for the upload method, and paste in the [Edge-Stack-crd](https://app.getambassador.io/yaml/edge-stack/3.11.0/aes-crds.yaml) YAML link.
- Then, click on **Import**.

![es1]({{< usestatic "mastering-kubernetes-for-engineers/es1.png" >}})
![es1](es1.png)

3. Click on the name of the design on the Designs tab to display the visual representations of the various Kubernetes resources and their relationships on the canvas.

4. Click **Actions** in the top right corner and click on Deploy (double tick).

5. To check the status of your deployment, click on the notification icon on the top right corner.

![es2]({{< usestatic "mastering-kubernetes-for-engineers/es2.png" >}})
![es2](es2.png)

6. Click on **Open In visualizer** to navigate to the Visualize section and see a pre-filtered view of the deployed resources in the cluster.

![es3]({{< usestatic "mastering-kubernetes-for-engineers/es3.png" >}})
![es3](es3.png)

### **Import the Edge Stack YAML**

Now that the CRDs have been deployed, go ahead to deploy the main Edge Stack Configuration.

1. Follow the previous Steps to Import the [Edge Stack YAML](https://app.getambassador.io/yaml/edge-stack/3.11.0/aes.yaml) into Kanvas with the name _Edge-Stack_.

![es4]({{< usestatic "mastering-kubernetes-for-engineers/es4.png" >}})
![es4](es4.png)

2. You can use the **Group Components** icon on the dock below to group resources based on shared labels or annotations.

![es5]({{< usestatic "mastering-kubernetes-for-engineers/es5.png" >}})
![es5](es5.png)

### **Configure Edge Stack License**

Expand All @@ -57,15 +57,15 @@ Ambassador Edge Stack requires a valid license to operate. Generate your [licens

2. Click on the Secret component on the design canvas and input the token.

![es6]({{< usestatic "mastering-kubernetes-for-engineers/es6.png" >}})
![es6](es6.png)

### **Deploy Edge Stack**

1. Click **Actions** in the top right corner and click on Deploy (double tick).

2. Click on **Open In visualizer** to navigate to the Visualize section and see a pre-filtered view of the deployed resources in the cluster.

![es10]({{< usestatic "mastering-kubernetes-for-engineers/es10.png" >}})
![es10](es10.png)

### **Listener Custom Resource**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Before you proceed, choose a password and convert it into base64 format. You can

1. Click on the Kubernetes icon on the dock, search for `secret`, and click on it or drag it to the canvas.

![wp8]({{< usestatic "mastering-kubernetes-for-engineers/wp8.png" >}})
![wp8](wp8.png)

_Figure: Create secret component_

Expand All @@ -34,7 +34,7 @@ _Figure: Create secret component_
- Set the _Type_ as `Opaque`
- Click **+** next to Data and add the secret as a key-value pair `password:cGFzc3dvcmQ=`

![wp9]({{< usestatic "mastering-kubernetes-for-engineers/wp9.png" >}})
![wp9](wp9.png)

_Figure: Configure secret_

Expand All @@ -50,7 +50,7 @@ Please note that using `hostPath` for Persistent Volumes is generally not recomm

1. Click on the Kubernetes icon on the dock, search for `Persistent Volume`, and select it. Create two PVs.

![wp10]({{< usestatic "mastering-kubernetes-for-engineers/wp10.png" >}})
![wp10](wp10.png)

_Figure: Create persistent volume_

Expand All @@ -60,19 +60,19 @@ _Figure: Create persistent volume_
- Set the "StorageClassName" as `manual`
- Click **+** next to "AccessMode" and enter `ReadWriteOnce`

![wp11]({{< usestatic "mastering-kubernetes-for-engineers/wp11.png" >}})
![wp11](wp11.png)

_Figure: Configure persistent volume_

- Scroll down to "Capacity" and enter the key pair `storage:20Gi`

![wp12]({{< usestatic "mastering-kubernetes-for-engineers/wp12.png" >}})
![wp12](wp12.png)

_Figure: Persistent volume capacity_

- Scroll down to "Hostpath" and input `mnt/data/wp-pv` for the _path_ and `DirectoryOrCreate` for the _type_.

![wp13]({{< usestatic "mastering-kubernetes-for-engineers/wp13.png" >}})
![wp13](wp13.png)

_Figure: Persistent volume hostpath_

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,33 @@ title: "Validate and Deploy Resources"

1. Click `Actions` in the top right corner and click on `Deploy`.

![wp15]({{< usestatic "mastering-kubernetes-for-engineers/wp15.png" >}})
![wp15](wp15.png)

_Figure: Actions dropdown menu_

2. The design will be validated to make sure there are no errors.

![wp16]({{< usestatic "mastering-kubernetes-for-engineers/wp16.png" >}})
![wp16](wp16.png)

_Figure: Validate design_

3. Choose the Kubernetes cluster you want to deploy to.

![wp17]({{< usestatic "mastering-kubernetes-for-engineers/wp17.png" >}})
![wp17](wp17.png)

_Figure: Choose deployment Environment_

**_Note_**: The Meshery Playground is connected to live Kubernetes cluster(s) and allows users full control over these clusters but you can also have the option to add your own Kubernetes cluster to the Playground.

4. Finally click `Deploy` to deploy the application to the cluster.

![wp18]({{< usestatic "mastering-kubernetes-for-engineers/wp18.png" >}})
![wp18](wp18.png)

_Figure: Deploy resources_

5. To check the status of your deployment, click on the notification icon on the top right corner. You can click on `Open In visualizer` to navigate to the Visualize section or follow the steps below.

![wp22]({{< usestatic "mastering-kubernetes-for-engineers/wp22.png" >}})
![wp22](wp22.png)

_Figure: Deploy resources_

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ You can also choose to use the existing label, `app:wordpress`, but a new one, `
3. Add the label `dev:tutorial`.
4. Do this for **all** the resources on the canvas.

![wp14]({{< usestatic "mastering-kubernetes-for-engineers/wp14.png" >}})
![wp14](wp14.png)

_Figure: Add label_

Expand All @@ -30,6 +30,6 @@ The _**Group Components**_ icon on the dock below allows you to group resources

This functionality aids in visualizing the relationships between various resources, making it easier to manage them, troubleshoot issues, and understand the overall cluster architecture.

![wp21]({{< usestatic "mastering-kubernetes-for-engineers/wp21.png" >}})
![wp21](wp21.png)

_Figure: Group Components_
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,28 @@ weight: 2
- Enter a name for your design in the "Design File Name" field (e.g. `mysql-deployment`).
- Select `Kubernetes Manifest` from the "Design Type" dropdown menu.

![wp1]({{< usestatic "mastering-kubernetes-for-engineers/wp1.png" >}})
![wp1](wp1.png)

_Figure: Import modal_

- Choose `File Upload` for the upload method, and select the file you just downloaded.
- Then, click on `Import`.

![wp2]({{< usestatic "mastering-kubernetes-for-engineers/wp2.png" >}})
![wp2](wp2.png)

_Figure: Import mysql-deployment_

3. Under the "Designs" tab, you will see the successfully imported `mysql-deployment` design.

Clicking on the names of the designs on the `Designs` tab displays the visual representations of the various Kubernetes resources and their relationships on the canvas.

![wp3]({{< usestatic "mastering-kubernetes-for-engineers/wp3.png" >}})
![wp3](wp3.png)

_Figure: Imported designs on canvas_

4. Now, follow the same steps to import the `wordpress-deployment` file.

![wp4]({{< usestatic "mastering-kubernetes-for-engineers/wp4.png" >}})
![wp4](wp4.png)

_Figure: wordpress-deployment_

Expand All @@ -45,18 +45,18 @@ To merge the MySQL deployment design with the WordPress deployment design:

1. Click and drag the `mysql-deployment` design from the left panel and drop it onto the design canvas of the `wordpress-deployment`.

![wp5]({{< usestatic "mastering-kubernetes-for-engineers/wp5.png" >}})
![wp5](wp5.png)

_Figure: drag and drop design_

2. This action will open a merge modal asking if you want to merge the design, Click on `Merge`.

![wp6]({{< usestatic "mastering-kubernetes-for-engineers/wp6.png" >}})
![wp6](wp6.png)

_Figure: merge modal_

3. Click on `Save As` and enter `wordpress-mysql-deployment` as the new file name.

![wp7]({{< usestatic "mastering-kubernetes-for-engineers/wp7.png" >}})
![wp7](wp7.png)

_Figure: save design_
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ To view the resources deployed, use the Visualize section of the _Kanvas_. In th

After selecting your filters, you should see a view displaying only your relevant resources, as shown in the image below.

![wp19]({{< usestatic "mastering-kubernetes-for-engineers/wp19.png" >}})
![wp19](wp19.png)

_Figure: Filter resources_

Expand All @@ -32,15 +32,15 @@ You can click on any resource to view more details about it in the "Details" sec

**Deployment**

![wp23]({{< usestatic "mastering-kubernetes-for-engineers/wp23.png" >}})
![wp23](wp23.png)

_Figure: Get more details about deployment_

**Service**

The Service details only display the cluster IP for now. So there is no way to access the application externally.

![wp20]({{< usestatic "mastering-kubernetes-for-engineers/wp20.png" >}})
![wp20](wp20.png)

_Figure: Get more details about service_

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ The [Dapr control plane](https://docs.dapr.io/concepts/dapr-services/) is a set
- Paste the copied link in the **URL** field.
- Then, click **Import**.

![dapr-helm]({{< usestatic "mastering-kubernetes-for-engineers/dapr-helm.png" >}})
![dapr-helm](dapr-helm.png)

3. On the Designs tab on the left, click on the **DAPR** design you just imported. This will display the various Kubernetes resource components required for deploying the Dapr control plane on the canvas.

Expand All @@ -47,7 +47,7 @@ The triangles represent services, the rectangles represent deployments, and the

To briefly take a look at one of these network relationships, click on the dapr-operator container in the deployment and its service to open their configuration tabs.

![relationship]({{< usestatic "mastering-kubernetes-for-engineers/relationship.png" >}})
![relationship](relationship.png)

From the diagram above, the container within the `dapr-operator` deployment is configured to expose Container port **6500**. The `dapr-api` service listens on port **443** and forwards incoming traffic to Target Port **6500**. This is why the arrow is labeled with **443/TCP**.

Expand All @@ -73,7 +73,7 @@ We can also explore relationships through grouped components.

**Grouped Components**

![grouped]({{< usestatic "mastering-kubernetes-for-engineers/grouped.png" >}})
![grouped](grouped.png)

Click on the **Group Components** icon on the dock at the bottom of the canvas to group resources based on shared labels or annotations.

Expand All @@ -96,6 +96,6 @@ The grouping of these components illustrates their interconnections, enhancing o
- For **View Selector** select **Single Node**.
- For **Kinds** select the resources you want to see including _Deployments, Pods, Services, Statefulset, Secret, Replicaset, Endpoints and Endpoint slices_.

![dapr-visualizer]({{< usestatic "mastering-kubernetes-for-engineers/dapr-visualizer.png" >}})
![dapr-visualizer](dapr-visualizer.png)

Using Meshery, we have visualized the components of the Dapr control plane, explored their relationships, and successfully deployed Dapr. Our next step is to integrate the Redis store into our architecture.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ This setup ensures that Dapr connects to the correct Redis instance, allowing it
2. Search for "dapr".
3. Click on the drop-down and drag and drop **component** to the design canvas. This is the Dapr component custom resource we discussed when learning about the Dapr control plane.

![drag-component]({{< usestatic "mastering-kubernetes-for-engineers/drag-component.png" >}})
![drag-component](drag-component.png)

#### **Configure State Store and Deploy**

Expand All @@ -31,7 +31,7 @@ Now you can start configuring the Dapr state-store.
4. Enter _state.redis_ in the **Type** field.
5. Enter _v1_ in the **version** field.

![state-store]({{< usestatic "mastering-kubernetes-for-engineers/state-store.png" >}})
![state-store](state-store.png)

{{< meshery-design-embed src="/images/learning-path/embed-test/embedded-design-statestore.js" id="embedded-design-f0b9088c-ab17-41ee-9400-fcfc5f4d59a8" >}}

Expand All @@ -40,7 +40,7 @@ Now you can start configuring the Dapr state-store.
- For **Value**, enter _redis-master.default.svc.cluster.local:6379_.
- Under **Secret Key Ref**, enter the pair _redis:redis-password_.

![metadata]({{< usestatic "mastering-kubernetes-for-engineers/metadata.png" >}})
![metadata](metadata.png)

7. Click the **Actions** button and deploy.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ Switch to visualizer and filter according to these specifications:

You should see the daprd sidecar containers in both the python and node pods.

![filter-node-python]({{< usestatic "mastering-kubernetes-for-engineers/filter-node-python.png" >}})
![filter-node-python](filter-node-python.png)
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ title: "Deploy Redis"

These filter settings will allow you to view both Dapr resources within the _dapr-system_ namespace and Redis resources within the default namespace.

![redis-dapr]({{< usestatic "mastering-kubernetes-for-engineers/redis-dapr.png" >}})
![redis-dapr](redis-dapr.png)

Next, let's deploy the Dapr state store component that will manage this Redis state store.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ This architecture ensures that your application remains loosely coupled and can

The diagram below illustrates this setup, providing a visual representation of how Dapr components interact within the architecture. We will explore more on these concepts in subsequent chapters.

![architecture]({{< usestatic "mastering-kubernetes-for-engineers/architecture.png" >}})
![architecture](architecture.png)

**Prerequisite**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ The Python app does not need to know the exact address or port of the Node.js se
2. On the right sidebar, click on **Action**.
3. Click on **Stream Container logs**.

![stream]({{< usestatic "mastering-kubernetes-for-engineers/stream.png" >}})
![stream](stream.png)

The logs show the daprd container logs with a POST request made to **/neworder** endpoint.

Expand Down
Diff not rendered.