Skip to content

Commit 2728ad7

Browse files
authored
Merge pull request #1 from vr-varad/update/challenges
Update Challenges
2 parents 0855ec0 + 618c3e1 commit 2728ad7

File tree

38 files changed

+302
-1196
lines changed

38 files changed

+302
-1196
lines changed

content/_index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Welcome to dev environment for your Academy
1212

1313
[LearningPaths](/academy/learning-paths/)
1414

15+
[Challenges](/academy/challenges/)
1516

1617

1718
{{% /blocks/lead %}}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: "CNCF Autoscaling Challenge"
3+
description: "Learn event-driven autoscaling in Kubernetes. Work with scaled objects in KEDA, monitoring with Prometheus, Open Telemetry & CloudEvents and advanced KEDA configurations."
4+
themeColor: "#3C494F"
5+
banner: "11111111-1111-1111-1111-111111111111/images/keda-icon.svg"
6+
courses: 1
7+
weight: 1
8+
type: learning-paths
9+
---
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
docType: "Course"
3+
title: 'Autoscaling with KEDA'
4+
description: "Design an event-driven autoscaling architecture using KEDA."
5+
courseTitle: "Autoscaling with KEDA"
6+
themeColor: "#00B39F"
7+
lectures: 3
8+
weight: 1
9+
---
10+
11+
## Objective
12+
A challenge to help you set up KEDA and start using it to build real-life applications with event-driven autoscaling in Kubernetes. Learn how to configure KEDA as an autoscaling solution, enabling your workloads to scale based on external metrics such as message queue length, database size, or custom application metrics.
13+
14+
## Prerequisites
15+
16+
**Access to Meshery**:
17+
You will need access to a Meshery server, either Self-Hosted or the [Meshery Playground](https://playground.meshery.io/).
18+
19+
**Learn KEDA Concepts**: Study [KEDA's key concepts](https://trainingportal.linuxfoundation.org/learn/course/scaling-cloud-native-applications-with-keda-lfel1014/course-introduction/course-information?page=1), including ScaledObjects, ScaledJobs, and various scalers. The Linux Foundation course provides a comprehensive introduction to these concepts, which are essential for completing the challenge successfully.
20+
**Learn to use Meshery**: Go through the Mastering Meshery Learning Path to gain proficiency in using Meshery for designing, deploying, and managing your KEDA-based architecture.
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
---
2+
docType: "Chapter"
3+
id: "What is this Challenge About"
4+
description: "This competition will challenge you to design an architecture diagram that demonstrates how KEDA can be used to automatically scale applications in a Kubernetes environment based on event-driven metrics. You'll learn how to configure KEDA scalers, how to integrate various event sources, and how to visualize the autoscaling process in a complex microservices architecture. This challenge will deepen your understanding of event-driven autoscaling in cloud-native environments and showcase how KEDA enhances Kubernetes' native scaling capabilities"
5+
chapterTitle: "What is this Challenge About"
6+
title: "What is this Challenge About"
7+
weight: 2
8+
---
9+
10+
### **Overview**
11+
12+
In this challenge, you will design and implement an event-driven autoscaling solution using [Kubernetes Event-Driven Autoscaling (KEDA)](https://keda.sh/). Your task is to create a deployable design that demonstrates KEDA's capabilities in a microservices architecture. This challenge will test your skills in creating a system that can efficiently respond to fluctuating workloads driven by real-world events.
13+
14+
### **Setting the Stage with KEDA**
15+
16+
KEDA (Kubernetes Event-Driven Autoscaling) is an open-source, lightweight component that extends Kubernetes' autoscaling capabilities. It provides fine-grained autoscaling for event-driven workloads, allowing applications to scale based on the number of events needing to be processed.
17+
18+
KEDA bridges the gap between event-driven architectures and Kubernetes' scaling capabilities. It allows for more efficient resource utilization, faster response times to workload changes, and can significantly reduce costs by scaling to zero when there's no work to be done.
19+
20+
In the modern cloud-native landscape, where applications often need to respond to unpredictable, event-driven workloads, KEDA provides a powerful tool for creating responsive, efficient, and cost-effective Kubernetes deployments.
21+
22+
### **Objective**
23+
24+
Design a KEDA-based autoscaling solution for a microservices application that responds efficiently to fluctuating workloads driven by events.
25+
26+
### **Challenge Steps**
27+
28+
These are necessary steps that must be followed to complete this challenge.
29+
30+
31+
#### 1. KEDA Architecture Design
32+
33+
1. First, import KEDA into Meshery and expand on the design, identifying the key components of the KEDA architecture including The **KEDA Operator** deployment, the **Metrics Server** etc. Consider how they interact within your Kubernetes cluster and how to properly represent this interaction in your design.
34+
35+
2. Pay attention to how the KEDA Operator and Metrics Adapter are defined. Consider:
36+
37+
* Their resource requests and limits.
38+
* Any environment variables or configuration options.
39+
* Service account and RBAC settings.
40+
41+
42+
3. Visualize in your design how these components will interact with your Kubernetes cluster's API server, the Horizontal Pod Autoscaler (HPA), and your application deployments.
43+
44+
#### 2. Application Deployment
45+
46+
1. Add a sample microservices application to your design. It should contain at least **two** services that could benefit from event-driven scaling. How might these services experience varying loads throughout the day?
47+
48+
#### 3. KEDA Custom Resource Definitions
49+
50+
KEDA uses Custom Resource Definitions (CRDs) to define how your services should scale.
51+
52+
1. Utilize at least two of the following KEDA CRDs in your design:
53+
54+
* scaledobjects.keda.sh (compulsory)
55+
* scaledjobs.keda.sh
56+
* triggerauthentications.keda.sh
57+
* clustertriggerauthentications.keda.sh
58+
59+
2. Create ScaledObject resources for your deployed services.
60+
61+
3. Demonstrate in your design, how an application service would be scaled based on a specific event.
62+
63+
#### 4. Scaler Implementation
64+
65+
Scalers are KEDA's sensors, detecting when it's time to scale your services. They're the pulse of your system, constantly monitoring for events that signal a need for more (or fewer) resources.
66+
67+
1. Implement at least **two** different scalers for your services.
68+
69+
2. You must include either an **HTTP Scaler** or a **Cron Scaler**.
70+
71+
3. Choose additional scalers that fit your application's needs.
72+
73+
**Your design should demonstrate how these scalers respond to various event sources to create a dynamic, event-driven scaling system.**
74+
75+
#### 5. Identify Event Sources in your Design
76+
77+
For this task you’ll identify and incorporate at least two different event sources in your design. KEDA supports a wide variety of event sources, including message queues, databases, and time-based triggers. These event sources will act as the signals for your scalers, dictating when and how your services should scale.
78+
79+
1. Identify at least two event sources in your design.
80+
81+
2. Clearly define the event source for each scaler, explaining how different types of events in your system can trigger scaling actions.
82+
83+
#### 6. The HPA Connection
84+
85+
While KEDA extends Kubernetes' scaling capabilities, it doesn't replace the Horizontal Pod Autoscaler (HPA). Instead, they work together in harmony.
86+
87+
Demonstrate in your design how KEDA integrates with the HPA. Show the flow of how KEDA detects an event, translates it into a metric, and how the HPA uses this to adjust the number of pods.
88+
89+
#### 7. Load Generation
90+
91+
1. Use Meshery's built-in load generator to simulate traffic to your application.
92+
93+
2. Design a testing scenario that demonstrates how your services scale in response to varying loads.
94+
95+
### **Evaluation Criteria**
96+
97+
1. **Functionality**: Your design must be deployable and demonstrate working KEDA autoscaling.
98+
99+
2. **Scalability**: Effective use of KEDA to handle varying workloads.
100+
101+
3. **Event Source Diversity**: Incorporation of multiple, relevant event sources.
102+
103+
4. **Integration**: Clear demonstration of KEDA's interaction with HPA and other Kubernetes components.
104+
105+
5. **Testing**: Thorough load testing with meaningful analysis of results.
106+
107+
### **Submission Guidelines**
108+
109+
1. Provide a detailed architecture diagram of your KEDA implementation.
110+
111+
2. Include explanations for your choice of event sources and scalers as labels in the design.
112+
113+
Remember, KEDA allows for scaling based on a wide range of events, from queue lengths to database metrics. Your design should showcase this versatility while addressing practical scaling scenarios for your chosen application.
114+
115+
Good luck with your KEDA design challenge!
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
docType: "Chapter"
3+
id: "FAQs"
4+
description: ""
5+
chapterTitle: "FAQs"
6+
title: "FAQs"
7+
weight: 3
8+
---
9+
10+
#### Can I participate in a sample challenge?
11+
12+
Yes, we recommend that you participate in our sample challenge.
13+
14+
This challenge enables you to understand how to participate in challenges on Meshery. It comprises detailed information about how questions should be attempted and details about the Meshery judge.
15+
16+
#### Do I need to register for the contest?
17+
18+
Yes, in order to participate in a contest you do need to register for the contest with a Meshery account.
19+
20+
#### How does the ranking work in a contest?
21+
22+
Each problem has an assigned score. Usually a more challenging problem has a higher score. Your objective is to obtain the highest score with the fastest finish time while making as few mistakes as possible.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
docType: "Chapter"
3+
id: "About KEDA Challenge"
4+
description: "This competition will challenge you to design and implement event-driven autoscaling for Kubernetes applications using KEDA (Kubernetes Event-driven Autoscaling). You'll learn how to set up KEDA, configure scalers, and optimize autoscaling for various event sources in a microservices architecture."
5+
chapterTitle: "About KEDA Challenge"
6+
title: "About KEDA Challenge"
7+
weight: 1
8+
---
9+
10+
### **Eligibility Criteria**
11+
12+
This challenge is open for all.
13+
14+
### **The Rules**
15+
16+
- This contest is for individuals; teams are not allowed.
17+
- Any competitor found cheating will be disqualified and banned from future contests.
18+
19+
### **Scoring**
20+
1. Participants are ranked by score. Your score is determined by the following criteria:
21+
* Correct implementation of KEDA scalers (40%)
22+
* Efficiency of autoscaling configuration (30%)
23+
* Integration with at least two different event sources (20%)
24+
* Documentation and explanation of your solution (10%)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: "CNCF Observability Challenge with Jaeger"
3+
description: "Join this CNCF Challenge and showcase your skills in designing a distributed tracing architecture using Jaeger."
4+
themeColor: "#3C494F"
5+
banner: "11111111-1111-1111-1111-111111111111/images/jaeger-icon-black.svg"
6+
courses: 1
7+
weight: 2
8+
type: learning-paths
9+
---
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
docType: "Course"
3+
title: 'Distributed Tracing with Jaeger'
4+
description: "Design an event-driven autoscaling architecture using KEDA."
5+
courseTitle: "Distributed Tracing with Jaeger"
6+
themeColor: "#00B39F"
7+
lectures: 3
8+
weight: 1
9+
---
10+
11+
12+
---
13+
14+
## Objective
15+
A course to help you setup a service-mesh and start using it to build real-life applications using Meshery
16+
as the cloud native management plane.
17+
18+
## Prerequisites
19+
20+
[**Install Jaeger**:](https://www.jaegertracing.io)
21+
Jaeger maps the flow of requests and data as they traverse a distributed system. These requests may make calls to multiple services, which may introduce their own delays or errors.
22+
23+
**Run Jaeger**:
24+
Your applications must be instrumented before they can send tracing data to Jaeger backend. Check the Client Libraries section for information about how to use the OpenTracing API and how to initialize and configure Jaeger tracers.
25+
26+
**Manage Jaeger**:
27+
Wrangle your cluster and design with Jaeger.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
docType: "Chapter"
3+
id: "About Challenge"
4+
description: "This competition will challenge you to design an architecture diagram that demonstrates how Jaeger can be used to trace requests across a complex microservices architecture. You'll learn how to instrument your code, how to collect and analyze trace data, and how to visualize and interpret the results."
5+
chapterTitle: "About Challenge"
6+
title: "About Challenge"
7+
weight: 2
8+
---
9+
10+
### **Take the Challenge**
11+
12+
Before you start, grab your timer. Start the clock and start cracking!
13+
[Register now](https://cloud.layer5.io/)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
docType: "Chapter"
3+
id: "FAQs"
4+
description: ""
5+
chapterTitle: "FAQs"
6+
title: "FAQs"
7+
weight: 3
8+
---
9+
10+
#### Can I participate in a sample challenge?
11+
12+
Yes, we recommend that you participate in our sample challenge.
13+
14+
This challenge enables you to understand how to participate in challenges on Meshery. It comprises detailed information about how questions should be attempted and details about the Meshery judge.
15+
16+
#### Do I need to register for the contest?
17+
18+
Yes, in order to participate in a contest you do need to register for the contest with a Meshery account.
19+
20+
#### How does the ranking work in a contest?
21+
22+
Each problem has an assigned score. Usually a more challenging problem has a higher score. Your objective is to obtain the highest score with the fastest finish time while making as few mistakes as possible.
23+
24+
#### Do I have to solve the contest problems in a particular order?
25+
26+
No, you can solve the problems in any order you like. Feel free to read all of the problems at the beginning of contest. Looking at a problem does not affect your ranking.

0 commit comments

Comments
 (0)