remove the cloudrun example
Signed-off-by: Tihomir Jovicic <tihomir.jovicic.develop@gmail.com>
This commit is contained in:
parent
dd73df5ef9
commit
ebc05170ea
@ -1,340 +0,0 @@
|
|||||||
# 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 static page to S3
|
|
||||||
|
|
||||||
This example shows how to generate a simple HTML page and serve it from an S3 bucket.
|
|
||||||
|
|
||||||
Components:
|
|
||||||
|
|
||||||
- [Amazon S3](https://aws.amazon.com/s3/) for hosting
|
|
||||||
|
|
||||||
1. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./simple-s3
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new simple-s3
|
|
||||||
cp *.cue ./.dagger/env/simple-s3/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Configure your AWS credentials
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input secret awsConfig.accessKey MY_AWS_ACCESS_KEY
|
|
||||||
dagger input secret awsConfig.secretKey MY_AWS_SECRET_KEY
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Specify the source code location
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input dir source website
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Deploy!
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger up
|
|
||||||
```
|
|
||||||
|
|
||||||
6. Check the URL
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl -i $(dagger query url -f text)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./react
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new react
|
|
||||||
cp *.cue ./.dagger/env/react/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
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 secret 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
|
|
||||||
```
|
|
||||||
|
|
||||||
## Deploy a complete JAMstack app
|
|
||||||
|
|
||||||
This example shows how to deploy a complete app with a backend, a database and a frontend.
|
|
||||||
|
|
||||||
This app assumes the following infrastructure is available:
|
|
||||||
|
|
||||||
- AWS ECS Cluster
|
|
||||||
- AWS ALB with a TLS certificate
|
|
||||||
- AWS RDS Instance (MySQL or PostgreSQL)
|
|
||||||
- AWS ECR repository
|
|
||||||
|
|
||||||
1. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./jamstack
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new jamstack
|
|
||||||
cp *.cue ./.dagger/env/jamstack/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Edit the inputs
|
|
||||||
|
|
||||||
Edit the file `inputs.yaml` and review all values to match to your infrastructure.
|
|
||||||
|
|
||||||
Add the inputs to the deployment:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input yaml "" -f ./inputs.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Deploy!
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger up
|
|
||||||
```
|
|
||||||
|
|
||||||
The example `inputs.yaml` from the `./examples/jamstack` directory takes the source code from a remote git repository, but you can remove this from the file and instead points to a local source code:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input dir backend.source ./my/local/backend/code
|
|
||||||
```
|
|
||||||
|
|
||||||
And the same mechanism applies for every single key in this file.
|
|
||||||
|
|
||||||
5. Get the App URL
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger query url
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./kubernetes-aws
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new kubernetes-aws
|
|
||||||
cp *.cue ./.dagger/env/kubernetes-aws/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Configure the deployment with your AWS credentials
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input secret awsConfig.accessKey MY_AWS_ACCESS_KEY
|
|
||||||
dagger input secret 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. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./monitoring
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new monitoring
|
|
||||||
cp *.cue ./.dagger/env/monitoring/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Configure the deployment with your AWS credentials
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input text awsConfig.accessKey MY_AWS_ACCESS_KEY
|
|
||||||
dagger input text awsConfig.secretKey MY_AWS_SECRET_KEY
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Configure the monitoring parameters
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input text website https://MYWEBSITE.TLD
|
|
||||||
```
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input text email my_email@my_domain.tld
|
|
||||||
```
|
|
||||||
|
|
||||||
4. 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. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./kubernetes-app
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new kubernetes-app
|
|
||||||
cp *.cue ./.dagger/env/kubernetes-app/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Configure the deployment with your AWS credentials
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input secret awsConfig.accessKey MY_AWS_ACCESS_KEY
|
|
||||||
dagger input secret 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 ./testdata/mychart
|
|
||||||
```
|
|
||||||
|
|
||||||
6. Deploy!
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger up
|
|
||||||
```
|
|
||||||
|
|
||||||
## Deploy an application to GCP Cloud Run
|
|
||||||
|
|
||||||
This example shows how to deploy an application to GCP Cloud Run. Read the deployment [plan](https://github.com/dagger/dagger/tree/main/examples/cloudrun-app)
|
|
||||||
|
|
||||||
NOTE: this example requires the right GCP IAM permissions: `https://cloud.google.com/run/docs/reference/iam/roles#additional-configuration`
|
|
||||||
|
|
||||||
Components:
|
|
||||||
|
|
||||||
- [Cloud Run](https://cloud.google.com/run)
|
|
||||||
|
|
||||||
How to run:
|
|
||||||
|
|
||||||
1. Initialize a new workspace
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ./cloudrun-app
|
|
||||||
dagger init
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a new environment
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger new cloudrun-app
|
|
||||||
cp main.cue ./.dagger/env/cloudrun-app/plan/
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Configure the Cloud Run service
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger input text serviceName MY_APP_NAME
|
|
||||||
dagger input text image MY_GCR_IMAGE_NAME
|
|
||||||
|
|
||||||
dagger input text gcpConfig.project MY_GCP_PROJECT
|
|
||||||
dagger input text gcpConfig.region MY_GCP_REGION
|
|
||||||
dagger input secret gcpConfig.serviceKey -f MY_GCP_SERVICE_KEY_FILE
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Deploy!
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dagger up
|
|
||||||
```
|
|
@ -1,13 +0,0 @@
|
|||||||
# The .dockerignore file excludes files from the container build process.
|
|
||||||
#
|
|
||||||
# https://docs.docker.com/engine/reference/builder/#dockerignore-file
|
|
||||||
|
|
||||||
# Exclude locally vendored dependencies.
|
|
||||||
vendor/
|
|
||||||
|
|
||||||
# Exclude "build-time" ignore files.
|
|
||||||
.dockerignore
|
|
||||||
.gcloudignore
|
|
||||||
|
|
||||||
# Exclude git history and configuration.
|
|
||||||
.gitignore
|
|
@ -1,33 +0,0 @@
|
|||||||
# Use the offical golang image to create a binary.
|
|
||||||
# This is based on Debian and sets the GOPATH to /go.
|
|
||||||
# https://hub.docker.com/_/golang
|
|
||||||
FROM golang:1.16-buster as builder
|
|
||||||
|
|
||||||
# Create and change to the app directory.
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Retrieve application dependencies.
|
|
||||||
# This allows the container build to reuse cached dependencies.
|
|
||||||
# Expecting to copy go.mod and if present go.sum.
|
|
||||||
COPY go.* ./
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
# Copy local code to the container image.
|
|
||||||
COPY . ./
|
|
||||||
|
|
||||||
# Build the binary.
|
|
||||||
RUN go build -v -o server
|
|
||||||
|
|
||||||
# Use the official Debian slim image for a lean production container.
|
|
||||||
# https://hub.docker.com/_/debian
|
|
||||||
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
|
|
||||||
FROM debian:buster-slim
|
|
||||||
RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
|
||||||
ca-certificates && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Copy the binary to the production image from the builder stage.
|
|
||||||
COPY --from=builder /app/server /app/server
|
|
||||||
|
|
||||||
# Run the web service on container startup.
|
|
||||||
CMD ["/app/server"]
|
|
@ -1,3 +0,0 @@
|
|||||||
module github.com/dagger-cloud-run-example
|
|
||||||
|
|
||||||
go 1.16
|
|
@ -1,35 +0,0 @@
|
|||||||
// Sample run-helloworld is a minimal Cloud Run service.
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
log.Print("starting server...")
|
|
||||||
http.HandleFunc("/", handler)
|
|
||||||
|
|
||||||
// Determine port for HTTP service.
|
|
||||||
port := os.Getenv("PORT")
|
|
||||||
if port == "" {
|
|
||||||
port = "8080"
|
|
||||||
log.Printf("defaulting to port %s", port)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start HTTP server.
|
|
||||||
log.Printf("listening on port %s", port)
|
|
||||||
if err := http.ListenAndServe(":"+port, nil); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handler(w http.ResponseWriter, r *http.Request) {
|
|
||||||
name := os.Getenv("NAME")
|
|
||||||
if name == "" {
|
|
||||||
name = "World"
|
|
||||||
}
|
|
||||||
fmt.Fprintf(w, "Hello %s!\n", name)
|
|
||||||
}
|
|
Reference in New Issue
Block a user