coder-template/README.md

66 lines
2.5 KiB
Markdown

# coder-template
## Terminology
- **[code-server](https://github.com/coder/code-server)** : Open Source Visual Studio Code + web browser remote access
- **[coder](https://github.com/coder/coder)** : Development Environments (i.e. code-server, JupyterLab, JetBrains, and etc) management software
- **API-server** : LMS can call the endpoints of this API-server to manage **coder**.
## What is this?
You can use this template when you create a new lab and deploy it to **coder**. Lab users will get clients that include web IDE and software/tools (e.g. **[akamai CLI](https://github.com/akamai/cli)**).
- **build** : sample **API-server**
- **docker-compose.yaml** : installs **coder** and **API-server**
## Sample Workflow
- [ ] **Alice** : Content Creator
- [ ] **Bob** : Lab Administrator
**1. Servers vs Clients**
```
Alice ->> Bob: I'd like to create a new lab for DevOps.
Bob ->> Alice: Do you want servers or clients?
Alice ->> Bob: I'm not sure. Learners will run python, terraform, and httpie.
Bob ->> Alice: I suggest clients. Each learner can run codes or tools in his/her own isolated environment.
```
> Bob can create diverse types of servers (**Linux only!**) such as, web servers, application servers, and database servers.
Sample server: https://origin-akashop.akamai-lab.com/
>
> Bob can create one type of clients based on **Visual Studio Code**. Clients can be assigned to learners one to one or one to many.
Sample client: https://training.akamai.com/ewp
**2. Software**
```
Bob ->> Alice: Do you need any software or tools other than python, terraform, and httpie?
```
> Bob can install other softwares or tools such as **akamai cli**, based on the lab scenario.
**3. Infrastructure**
> Bob runs *docker-compose.yaml* file to create a default **coder** and **API-server**.
```
git clone https://gitea-ptl.akamai-lab.com/akamai/coder-template.git
cd coder-template
docker compose up -d
```
**4. code-server Template**
> Bob builds a code-server template by customizing **main.tf**.
>
> **/samples/main.tf** file can be a good starting point if you don't want to use persistant volume.
**5. Staging**
> Bob deploys a code-server to kubernetes staging environment and Alice validates it iteratively until they finalize code-server template.
>
> Bob should customize API-server codes, if Alice wants to integrate **coder** with **LMS** (for example, click a button on LMS to create a new code-server and get its URL).
**6. Production**
> Bob deploys a code-server to kubernetes production environment.
>
> Alice validates the client by end-to-end test.