This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/examples/README.md
Solomon Hykes ca4da5e472 Docs: update and polish kubernetes-app and monitoring examples
Signed-off-by: Solomon Hykes <sh.github.6811@hykes.org>
2021-04-01 20:34:31 -07:00

202 lines
4.7 KiB
Markdown

# Dagger Examples
All example commands should be executed in the `examples/` directory
in an up-to-date checkout of the [dagger repository](https://github.com/dagger/dagger).
## Deploy a simple React application
This example shows how to deploy an example React Application. [Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/react)
Audience: Javascript developers looking to deploy their application.
Components:
- [Netlify](https://netlify.com) for application hosting
- [Yarn](https://yarnpkg.com) for building
- [Github](https://github.com) for source code hosting
- [React-Todo-App](https://github.com/kabirbaidhya/react-todo-app) by Kabir Baidhya as a sample application.
1. Change the current directory to the example deployment plan
```sh
cd ./react
```
2. Create a new deployment from the plan
```sh
dagger new
```
3. Configure the deployment with your Netlify access token.
You can create new tokens from the [Netlify dashboard](https://app.netlify.com/user/applications/personal).
```sh
dagger input text www.account.token MY_TOKEN
```
*NOTE: there is a dedicated command for encrypted secret inputs, but it is
not yet implemented. Coming soon!*
4. Deploy!
```sh
dagger up
```
## Provision a Kubernetes cluster on AWS
This example shows how to provision a new Kubernetes cluster on AWS, and configure your `kubectl` client to use it. [Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/kubernetes-aws)
Audience: infrastructure teams looking to provisioning kubernetes clusters as part of automated CICD pipelines.
Components:
- [Amazon EKS](https://aws.amazon.com/eks) for Kubernetes hosting
- [Amazon CloudFormation](https://aws.amazon.com/cloudformation) for infrastructure provisioning
- [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) as kubernetes client
1. Change the current directory to the example deployment plan
```sh
cd ./kubernetes-aws
```
2. Create a new deployment from the plan
```sh
dagger new
```
3. Configure the deployment with your AWS credentials
```sh
dagger input text awsConfig.accessKey MY_AWS_ACCESS_KEY
```
```sh
dagger input text awsConfig.secretKey MY_AWS_SECRET_KEY
```
4. Deploy!
```sh
dagger up
```
5. Export the generated kubectl config
```sh
dagger query kubeconfig.kubeconfig | jq . > kubeconfig
```
## Add HTTP monitoring to your application
This example shows how to implement a robust HTTP(s) monitoring service on top of AWS. [Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/monitoring).
Audience: application team looking to improve the reliability of their application.
Components:
- [Amazon Cloudwatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) for hosting the monitoring scripts
- [Amazon CloudFormation](https://aws.amazon.com/cloudformation) for infrastructure provisioning
1. Change the current directory to the example deployment plan
```sh
cd ./monitoring
```
2. Create a new deployment from the plan
```sh
dagger new
```
3. Configure the deployment with your AWS credentials
```sh
dagger input text awsConfig.accessKey MY_AWS_ACCESS_KEY
```
```sh
dagger input text awsConfig.secretKey MY_AWS_SECRET_KEY
```
4. Configure the monitoring parameters
```sh
dagger input text website https://MYWEBSITE.TLD
```
```sh
dagger input text email my_email@my_domain.tld
```
5. Deploy!
```sh
dagger up
```
## Deploy an application to your Kubernetes cluster
This example shows two different ways to deploy an application to an existing Kubernetes cluster: with and without a Helm chart. Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/kubernetes-app)
NOTE: this example requires an EKS cluster to allow authentication with your AWS credentials; but can easily be adapter to deploy to any Kubernetes cluster.
Components:
- [Amazon EKS](https://aws.amazon.com/eks) for Kubernetes hosting
- [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) as kubernetes client
- [Helm](https://helm.sh) to manage kubernetes configuration (optional)
How to run:
1. Change the current directory to the example deployment plan
```sh
cd ./kubernetes-app
```
2. Create a new deployment from the plan
```sh
dagger new
```
3. Configure the deployment with your AWS credentials
```sh
dagger input text awsConfig.accessKey MY_AWS_ACCESS_KEY
```
```sh
dagger input text awsConfig.secretKey MY_AWS_SECRET_KEY
```
4. Configure the EKS cluster to deploy to
Note: if you have run the `kubernetes-aws` example, you may skip this step.
```sh
dagger input text cluster.clusterName MY_CLUSTER_NAME
```
5. Load the Helm chart
```sh
dagger input dir helmChart.chart=./kubernetes-app/testdata/mychart
```
6. Deploy!
```sh
dagger up
```