-
Notifications
You must be signed in to change notification settings - Fork 273
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(container): allow configuring # of replicas for container services
Also added `project-variables` project to showcase the usage.
- Loading branch information
Showing
25 changed files
with
313 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# Demo project | ||
|
||
A very basic demo project for Garden. Used in the [Quick Start guide](https://docs.garden.io/basics/quick-start). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Project variables | ||
|
||
This variant of the basic [demo project](../demo-project/README.md) demonstrate the use of project variables. | ||
|
||
In this example, we set a project variable in the [project config](./garden.yml) called `service-replicas` and | ||
reference that variable in the module configs, in this case to set the number of replicas per service. | ||
|
||
We also show how you can alternate these variables by the environment you're running, by overriding the default value | ||
in the `local` environment. In this case, we only want _one_ replica of each service while developing locally, but | ||
default to three when deploying remotely. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
node_modules | ||
Dockerfile | ||
garden.yml | ||
app.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# Compiled Object files, Static and Dynamic libs (Shared Objects) | ||
*.o | ||
*.a | ||
*.so | ||
|
||
# Folders | ||
_obj | ||
_test | ||
|
||
# Architecture specific extensions/prefixes | ||
*.[568vq] | ||
[568vq].out | ||
|
||
*.cgo1.go | ||
*.cgo2.c | ||
_cgo_defun.c | ||
_cgo_gotypes.go | ||
_cgo_export.* | ||
|
||
_testmain.go | ||
|
||
*.exe | ||
*.test | ||
*.prof | ||
|
||
.vscode/settings.json | ||
webserver/*server* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
FROM golang:1.8.3-alpine | ||
MAINTAINER Aurelien PERRIER <[email protected]> | ||
|
||
ENV webserver_path /go/src/github.com/perriea/webserver/ | ||
ENV PATH $PATH:$webserver_path | ||
|
||
WORKDIR $webserver_path | ||
COPY webserver/ . | ||
|
||
RUN go build . | ||
|
||
ENTRYPOINT ./webserver | ||
|
||
EXPOSE 8080 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
kind: Module | ||
name: backend | ||
description: Backend service container | ||
type: container | ||
services: | ||
- name: backend | ||
replicas: ${var.service-replicas} # <- Refers to the variable set in the project config | ||
ports: | ||
- name: http | ||
containerPort: 8080 | ||
servicePort: 80 | ||
ingresses: | ||
- path: /hello-backend | ||
port: http |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
"net/http" | ||
) | ||
|
||
func handler(w http.ResponseWriter, r *http.Request) { | ||
fmt.Fprint(w, "Hello from Go!") | ||
} | ||
|
||
func main() { | ||
http.HandleFunc("/hello-backend", handler) | ||
fmt.Println("Server running...") | ||
|
||
http.ListenAndServe(":8080", nil) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
node_modules | ||
Dockerfile | ||
garden.yml | ||
app.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
FROM node:9-alpine | ||
|
||
ENV PORT=8080 | ||
EXPOSE ${PORT} | ||
WORKDIR /app | ||
|
||
ADD package.json /app | ||
RUN npm install | ||
|
||
ADD . /app | ||
|
||
CMD ["npm", "start"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
const express = require('express'); | ||
const request = require('request-promise') | ||
const app = express(); | ||
|
||
const backendServiceEndpoint = `http://backend/hello-backend` | ||
// const backendServiceEndpoint = `http://demo-project.local.app.garden/hello-backend` | ||
|
||
app.get('/hello-frontend', (req, res) => res.send('Hello from the frontend!')); | ||
|
||
app.get('/call-backend', (req, res) => { | ||
// Query the backend and return the response | ||
request.get(backendServiceEndpoint) | ||
.then(message => { | ||
message = `Backend says: '${message}'` | ||
res.json({ | ||
message, | ||
}) | ||
}) | ||
.catch(err => { | ||
res.statusCode = 500 | ||
res.json({ | ||
error: err, | ||
message: "Unable to reach service at " + backendServiceEndpoint, | ||
}) | ||
}); | ||
}); | ||
|
||
module.exports = { app } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
kind: Module | ||
name: frontend | ||
description: Frontend service container | ||
type: container | ||
services: | ||
- name: frontend | ||
replicas: ${var.service-replicas} # <- Refers to the variable set in the project config | ||
ports: | ||
- name: http | ||
containerPort: 8080 | ||
healthCheck: | ||
httpGet: | ||
path: /hello-frontend | ||
port: http | ||
ingresses: | ||
- path: /hello-frontend | ||
port: http | ||
- path: /call-backend | ||
port: http | ||
dependencies: | ||
- backend | ||
tests: | ||
- name: unit | ||
args: [npm, test] | ||
- name: integ | ||
args: [npm, run, integ] | ||
dependencies: | ||
- backend |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
const { app } = require('./app'); | ||
|
||
app.listen(process.env.PORT, '0.0.0.0', () => console.log('Frontend service started')); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{ | ||
"name": "frontend", | ||
"version": "1.0.0", | ||
"description": "Simple Node.js docker service", | ||
"main": "main.js", | ||
"scripts": { | ||
"start": "node main.js", | ||
"test": "echo OK", | ||
"integ": "node_modules/mocha/bin/mocha test/integ.js" | ||
}, | ||
"author": "garden.io <[email protected]>", | ||
"license": "ISC", | ||
"dependencies": { | ||
"express": "^4.16.2", | ||
"request": "^2.83.0", | ||
"request-promise": "^4.2.2" | ||
}, | ||
"devDependencies": { | ||
"mocha": "^5.1.1", | ||
"supertest": "^3.0.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
const supertest = require("supertest") | ||
const { app } = require("../app") | ||
|
||
describe('GET /call-backend', () => { | ||
const agent = supertest.agent(app) | ||
|
||
it('should respond with a message from the backend service', (done) => { | ||
agent | ||
.get("/call-backend") | ||
.expect(200, { message: "Backend says: 'Hello from Go!'" }) | ||
.end((err) => { | ||
if (err) return done(err) | ||
done() | ||
}) | ||
}) | ||
}) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
kind: Project | ||
name: project-variables | ||
variables: | ||
# This variable is referenced in the module configs, and overridden in the local project below | ||
service-replicas: 3 | ||
environments: | ||
- name: local | ||
providers: | ||
- name: local-kubernetes | ||
variables: | ||
# We only want one replica of each service when developing locally | ||
service-replicas: 1 | ||
- name: testing | ||
providers: | ||
- name: kubernetes | ||
context: gke_garden-dev-200012_europe-west1-b_garden-dev-1 | ||
namespace: ${project.name}-testing-${local.env.CIRCLE_BUILD_NUM || "default"} | ||
defaultHostname: ${project.name}-testing.dev-1.sys.garden | ||
buildMode: cluster-docker |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.