Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96a019c088 | ||
|
|
b9eec94e60 | ||
|
|
852d97d96e | ||
|
|
49723157a6 |
No files matched your search
@@ -0,0 +1,4 @@
|
|||||||
|
/lib
|
||||||
|
/.ksonnet/registries
|
||||||
|
/app.override.yaml
|
||||||
|
/.ks_environment
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: 0.1.0
|
||||||
|
environments:
|
||||||
|
default:
|
||||||
|
destination:
|
||||||
|
namespace: default
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
k8sVersion: v1.10.0
|
||||||
|
path: default
|
||||||
|
kind: ksonnet.io/app
|
||||||
|
name: blue-green-deploy
|
||||||
|
version: 0.0.1
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
local env = std.extVar("__ksonnet/environments");
|
||||||
|
local params = std.extVar("__ksonnet/params").components["bg-guestbook"];
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "Service",
|
||||||
|
"metadata": {
|
||||||
|
"name": params.name,
|
||||||
|
"annotations": {
|
||||||
|
"argocd.argoproj.io/hook": "Skip",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"ports": [
|
||||||
|
{
|
||||||
|
"port": params.servicePort,
|
||||||
|
"targetPort": params.containerPort
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"selector": {
|
||||||
|
"app": params.name
|
||||||
|
},
|
||||||
|
"type": params.type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "apps/v1beta2",
|
||||||
|
"kind": "Deployment",
|
||||||
|
"metadata": {
|
||||||
|
"name": params.name,
|
||||||
|
"annotations": {
|
||||||
|
"argocd.argoproj.io/hook": "Skip",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"replicas": params.replicas,
|
||||||
|
"selector": {
|
||||||
|
"matchLabels": {
|
||||||
|
"app": params.name
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"template": {
|
||||||
|
"metadata": {
|
||||||
|
"labels": {
|
||||||
|
"app": params.name
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"containers": [
|
||||||
|
{
|
||||||
|
"image": params.image,
|
||||||
|
"name": params.name,
|
||||||
|
"ports": [
|
||||||
|
{
|
||||||
|
"containerPort": params.containerPort
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
local bgGuestbook = std.extVar("__ksonnet/components")["bg-guestbook"];
|
||||||
|
local bgGuestbookSvc = bgGuestbook[0];
|
||||||
|
local bgGuestbookDeploy = bgGuestbook[1];
|
||||||
|
local parseYaml = std.native("parseYaml");
|
||||||
|
local bgWorkflow = parseYaml(importstr 'wf/bluegreen.yaml')[0];
|
||||||
|
|
||||||
|
[
|
||||||
|
bgWorkflow + {
|
||||||
|
spec +: {
|
||||||
|
arguments +: {
|
||||||
|
parameters : [
|
||||||
|
{name: "deployment-name", value: bgGuestbookDeploy.metadata.name},
|
||||||
|
{name: "service-name", value: bgGuestbookSvc.metadata.name},
|
||||||
|
{name: "new-deployment-manifest", value: std.manifestJson(bgGuestbookDeploy)},
|
||||||
|
{name: "new-service-manifest", value: std.manifestJson(bgGuestbookSvc)},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
global: {
|
||||||
|
// User-defined global parameters; accessible to all component and environments, Ex:
|
||||||
|
// replicas: 4,
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
// Component-level parameters, defined initially from 'ks prototype use ...'
|
||||||
|
// Each object below should correspond to a component in the components/ directory
|
||||||
|
"bg-guestbook": {
|
||||||
|
containerPort: 80,
|
||||||
|
image: "gcr.io/heptio-images/ks-guestbook-demo:0.2",
|
||||||
|
name: "bg-guestbook",
|
||||||
|
replicas: 3,
|
||||||
|
servicePort: 80,
|
||||||
|
type: "LoadBalancer",
|
||||||
|
},
|
||||||
|
"bg-workflow": {},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
# This workflow performs a "blue-green" deployment, while preserving the original deployment object
|
||||||
|
# and name. It accomplishes this by temporarily redirecting traffic to a *clone* of the original
|
||||||
|
# deployment. Then after upgrading the original deployment to a later version, redirects traffic
|
||||||
|
# back to the original (now upgraded) deployment.
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Workflow
|
||||||
|
metadata:
|
||||||
|
generateName: k8s-bluegreen-
|
||||||
|
annotations:
|
||||||
|
argocd.argoproj.io/hook: Sync
|
||||||
|
spec:
|
||||||
|
entrypoint: k8s-bluegreen
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: deployment-name
|
||||||
|
- name: service-name
|
||||||
|
- name: new-deployment-manifest
|
||||||
|
- name: new-service-manifest
|
||||||
|
|
||||||
|
templates:
|
||||||
|
- name: k8s-bluegreen
|
||||||
|
steps:
|
||||||
|
# 1. Create a parallel Kubernetes deployment with tweaks to name and selectors
|
||||||
|
- - name: create-blue-deployment
|
||||||
|
template: clone-deployment
|
||||||
|
|
||||||
|
# 2. Wait for parallel deployment to become ready
|
||||||
|
- - name: wait-for-blue-deployment
|
||||||
|
template: wait-deployment-ready
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: deployment-name
|
||||||
|
value: '{{workflow.parameters.deployment-name}}-blue'
|
||||||
|
|
||||||
|
# 3. Patch the named service to point to the parallel deployment app
|
||||||
|
- - name: switch-service-to-blue-deployment
|
||||||
|
template: patch-service
|
||||||
|
|
||||||
|
# 4. Update the original deployment (receiving no traffic) with a new version
|
||||||
|
- - name: apply-green-deployment
|
||||||
|
template: apply-manifest
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: manifest
|
||||||
|
value: '{{workflow.parameters.new-deployment-manifest}}'
|
||||||
|
|
||||||
|
# 5. Wait for the original deployment, now updated, to become ready
|
||||||
|
- - name: wait-for-green-deployment
|
||||||
|
template: wait-deployment-ready
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: deployment-name
|
||||||
|
value: '{{workflow.parameters.deployment-name}}'
|
||||||
|
|
||||||
|
# dummy approval step for demo purposes. Sleeps for 30 seconds
|
||||||
|
- - name: approve
|
||||||
|
template: approve
|
||||||
|
|
||||||
|
# 6. Patch the named service to point to the original, now updated app
|
||||||
|
- - name: switch-service-to-green-deployment
|
||||||
|
template: apply-manifest
|
||||||
|
arguments:
|
||||||
|
parameters:
|
||||||
|
- name: manifest
|
||||||
|
value: '{{workflow.parameters.new-service-manifest}}'
|
||||||
|
|
||||||
|
# 7. Remove the cloned deployment (no longer receiving traffic)
|
||||||
|
- - name: delete-cloned-deployment
|
||||||
|
template: delete-deployment
|
||||||
|
|
||||||
|
# end of steps
|
||||||
|
|
||||||
|
# clone-deployment creates a "blue" clone of an existing deployment. The string -blue is appended to:
|
||||||
|
# - metadata.name
|
||||||
|
# - spec.selector.matchLabels
|
||||||
|
# - spec.template.metadata.labels
|
||||||
|
- name: clone-deployment
|
||||||
|
container:
|
||||||
|
image: argoproj/argoexec:v2.1.1
|
||||||
|
command: [sh, -c, -x]
|
||||||
|
args:
|
||||||
|
- kubectl get --export -o json deployment.apps/{{workflow.parameters.deployment-name}} > /original-deploy &&
|
||||||
|
jq -r '.metadata.name+="-blue" |
|
||||||
|
.spec.template.metadata.labels += (.spec.template.metadata.labels | to_entries | map(select(.key != "applications.argoproj.io/app-name")) | map(.value+="-blue") | from_entries) |
|
||||||
|
.spec.selector.matchLabels += (.spec.selector.matchLabels | to_entries | map(select(.key != "applications.argoproj.io/app-name")) | map(.value+="-blue") | from_entries)'
|
||||||
|
/original-deploy > /cloned-deploy &&
|
||||||
|
cat /cloned-deploy &&
|
||||||
|
kubectl apply -o yaml -f /cloned-deploy
|
||||||
|
|
||||||
|
# apply-manifest takes a kubernetes manifest and carrys over the app-name label (if present)
|
||||||
|
# before running `kubectl apply`. The label is used by ArgoCD for monitoring.
|
||||||
|
- name: apply-manifest
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: manifest
|
||||||
|
artifacts:
|
||||||
|
- name: manifest-file
|
||||||
|
path: /manifest
|
||||||
|
raw:
|
||||||
|
data: '{{inputs.parameters.manifest}}'
|
||||||
|
container:
|
||||||
|
image: argoproj/argoexec:v2.1.1
|
||||||
|
command: [sh, -c, -x]
|
||||||
|
args:
|
||||||
|
- cp /manifest /manifest-new &&
|
||||||
|
APP_NAME=$(kubectl get -n default -f /manifest-new -o json | jq -r '.metadata.labels."applications.argoproj.io/app-name"') &&
|
||||||
|
if [ "$APP_NAME" != "null" ]; then
|
||||||
|
jq -r --arg APP_NAME "$APP_NAME" '.metadata.labels."applications.argoproj.io/app-name" = $APP_NAME' /manifest-new > /manifest-new.tmp &&
|
||||||
|
mv /manifest-new.tmp /manifest-new &&
|
||||||
|
if [ "$(jq -r .spec.template.metadata.labels /manifest-new)" != "null" ]; then
|
||||||
|
jq -r --arg APP_NAME "$APP_NAME" '.spec.template.metadata.labels."applications.argoproj.io/app-name" = $APP_NAME' /manifest-new > /manifest-new.tmp &&
|
||||||
|
mv /manifest-new.tmp /manifest-new ;
|
||||||
|
fi ;
|
||||||
|
fi &&
|
||||||
|
cat /manifest-new &&
|
||||||
|
kubectl apply -f /manifest-new
|
||||||
|
|
||||||
|
# wait-deployment-ready waits for a deployment to become fully deployed and ready, using the
|
||||||
|
# `kubectl rollout` command
|
||||||
|
- name: wait-deployment-ready
|
||||||
|
inputs:
|
||||||
|
parameters:
|
||||||
|
- name: deployment-name
|
||||||
|
container:
|
||||||
|
image: argoproj/argoexec:v2.1.1
|
||||||
|
command: [kubectl, rollout, status, --watch=true, 'deployments/{{inputs.parameters.deployment-name}}']
|
||||||
|
|
||||||
|
# patch-service updates the service selector labels to point to the "blue" deployment
|
||||||
|
- name: patch-service
|
||||||
|
container:
|
||||||
|
image: argoproj/argoexec:v2.1.1
|
||||||
|
command: [sh, -c, -x]
|
||||||
|
args:
|
||||||
|
- kubectl get -n default service {{workflow.parameters.service-name}} --export -o json > /original-svc &&
|
||||||
|
jq '.spec.selector = (.spec.selector | with_entries(.value+="-blue"))' /original-svc > /blue-svc &&
|
||||||
|
kubectl apply -o yaml -f /blue-svc
|
||||||
|
|
||||||
|
- name: delete-deployment
|
||||||
|
resource:
|
||||||
|
action: delete
|
||||||
|
manifest: |
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{workflow.parameters.deployment-name}}-blue
|
||||||
|
|
||||||
|
- name: approve
|
||||||
|
container:
|
||||||
|
image: argoproj/argoexec:v2.1.1
|
||||||
|
command: [sleep, "30"]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
local components = std.extVar("__ksonnet/components");
|
||||||
|
components + {
|
||||||
|
// Insert user-specified overrides here.
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
local base = import "base.libsonnet";
|
||||||
|
// uncomment if you reference ksonnet-lib
|
||||||
|
// local k = import "k.libsonnet";
|
||||||
|
|
||||||
|
base + {
|
||||||
|
// Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n")
|
||||||
|
// "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"})
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
local params = std.extVar("__ksonnet/params");
|
||||||
|
local globals = import "globals.libsonnet";
|
||||||
|
local envParams = params + {
|
||||||
|
components +: {
|
||||||
|
// Insert component parameter overrides here. Ex:
|
||||||
|
// guestbook +: {
|
||||||
|
// name: "guestbook-dev",
|
||||||
|
// replicas: params.global.replicas,
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
components: {
|
||||||
|
[x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components)
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/lib
|
||||||
|
/.ksonnet/registries
|
||||||
|
/app.override.yaml
|
||||||
|
/.ks_environment
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: 0.1.0
|
||||||
|
environments:
|
||||||
|
default:
|
||||||
|
destination:
|
||||||
|
namespace: default
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
k8sVersion: v1.10.0
|
||||||
|
path: default
|
||||||
|
kind: ksonnet.io/app
|
||||||
|
name: sock-shop
|
||||||
|
version: 0.0.1
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: carts-db
|
||||||
|
labels:
|
||||||
|
name: carts-db
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: carts-db
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: carts-db
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: carts-db
|
||||||
|
image: mongo
|
||||||
|
ports:
|
||||||
|
- name: mongo
|
||||||
|
containerPort: 27017
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- CHOWN
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-volume
|
||||||
|
volumes:
|
||||||
|
- name: tmp-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: carts-db
|
||||||
|
labels:
|
||||||
|
name: carts-db
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 27017
|
||||||
|
targetPort: 27017
|
||||||
|
selector:
|
||||||
|
name: carts-db
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: carts
|
||||||
|
labels:
|
||||||
|
name: carts
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: carts
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: carts
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: carts
|
||||||
|
image: weaveworksdemos/carts:0.4.8
|
||||||
|
env:
|
||||||
|
- name: ZIPKIN
|
||||||
|
value: zipkin.jaeger.svc.cluster.local
|
||||||
|
- name: JAVA_OPTS
|
||||||
|
value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 500Mi
|
||||||
|
requests:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 500Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-volume
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
volumes:
|
||||||
|
- name: tmp-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: catalogue-db
|
||||||
|
labels:
|
||||||
|
name: catalogue-db
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: catalogue-db
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: catalogue-db
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: catalogue-db
|
||||||
|
image: weaveworksdemos/catalogue-db:0.3.0
|
||||||
|
env:
|
||||||
|
- name: MYSQL_ROOT_PASSWORD
|
||||||
|
value: fake_password
|
||||||
|
- name: MYSQL_DATABASE
|
||||||
|
value: socksdb
|
||||||
|
ports:
|
||||||
|
- name: mysql
|
||||||
|
containerPort: 3306
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: catalogue-db
|
||||||
|
labels:
|
||||||
|
name: catalogue-db
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 3306
|
||||||
|
targetPort: 3306
|
||||||
|
selector:
|
||||||
|
name: catalogue-db
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: catalogue
|
||||||
|
labels:
|
||||||
|
name: catalogue
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: catalogue
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: catalogue
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: catalogue
|
||||||
|
image: weaveworksdemos/catalogue:0.3.5
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: catalogue
|
||||||
|
labels:
|
||||||
|
name: catalogue
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: catalogue
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: front-end
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: front-end
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: front-end
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: front-end
|
||||||
|
image: weaveworksdemos/front-end:0.3.12
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 1000Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 300Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 8079
|
||||||
|
env:
|
||||||
|
- name: SESSION_REDIS
|
||||||
|
value: "true"
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8079
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8079
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 3
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: front-end
|
||||||
|
labels:
|
||||||
|
name: front-end
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 8079
|
||||||
|
nodePort: 30001
|
||||||
|
selector:
|
||||||
|
name: front-end
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: orders-db
|
||||||
|
labels:
|
||||||
|
name: orders-db
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: orders-db
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: orders-db
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: orders-db
|
||||||
|
image: mongo
|
||||||
|
ports:
|
||||||
|
- name: mongo
|
||||||
|
containerPort: 27017
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- CHOWN
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-volume
|
||||||
|
volumes:
|
||||||
|
- name: tmp-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: orders-db
|
||||||
|
labels:
|
||||||
|
name: orders-db
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 27017
|
||||||
|
targetPort: 27017
|
||||||
|
selector:
|
||||||
|
name: orders-db
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: orders
|
||||||
|
labels:
|
||||||
|
name: orders
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: orders
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: orders
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: orders
|
||||||
|
image: weaveworksdemos/orders:0.4.7
|
||||||
|
env:
|
||||||
|
- name: ZIPKIN
|
||||||
|
value: zipkin.jaeger.svc.cluster.local
|
||||||
|
- name: JAVA_OPTS
|
||||||
|
value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 500Mi
|
||||||
|
requests:
|
||||||
|
cpu: 200m
|
||||||
|
memory: 500Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-volume
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
volumes:
|
||||||
|
- name: tmp-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: orders
|
||||||
|
labels:
|
||||||
|
name: orders
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: orders
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
global: {
|
||||||
|
// User-defined global parameters; accessible to all component and environments, Ex:
|
||||||
|
// replicas: 4,
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
// Component-level parameters, defined initially from 'ks prototype use ...'
|
||||||
|
// Each object below should correspond to a component in the components/ directory
|
||||||
|
"carts-db-dep": {},
|
||||||
|
"carts-db-svc": {},
|
||||||
|
"carts-dep": {},
|
||||||
|
"catalogue-db-dep": {},
|
||||||
|
"catalogue-db-svc": {},
|
||||||
|
"catalogue-dep": {},
|
||||||
|
"catalogue-svc": {},
|
||||||
|
"front-end-dep": {},
|
||||||
|
"front-end-svc": {},
|
||||||
|
"orders-db-dep": {},
|
||||||
|
"orders-db-svc": {},
|
||||||
|
"orders-dep": {},
|
||||||
|
"orders-svc": {},
|
||||||
|
"payment-dep": {},
|
||||||
|
"payment-svc": {},
|
||||||
|
"queue-master-dep": {},
|
||||||
|
"queue-master-svc": {},
|
||||||
|
"rabbitmq-dep": {},
|
||||||
|
"rabbitmq-svc": {},
|
||||||
|
"session-db-dep": {},
|
||||||
|
"session-db-svc": {},
|
||||||
|
"shipping-dep": {},
|
||||||
|
"shipping-svc": {},
|
||||||
|
"user-db-dep": {},
|
||||||
|
"user-db-svc": {},
|
||||||
|
"user-dep": {},
|
||||||
|
"user-svc": {},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: payment
|
||||||
|
labels:
|
||||||
|
name: payment
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: payment
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: payment
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: payment
|
||||||
|
image: weaveworksdemos/payment:0.4.3
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
requests:
|
||||||
|
cpu: 99m
|
||||||
|
memory: 100Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: payment
|
||||||
|
labels:
|
||||||
|
name: payment
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: payment
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: queue-master
|
||||||
|
labels:
|
||||||
|
name: queue-master
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: queue-master
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: queue-master
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: queue-master
|
||||||
|
image: weaveworksdemos/queue-master:0.3.1
|
||||||
|
env:
|
||||||
|
- name: ZIPKIN
|
||||||
|
value: zipkin.jaeger.svc.cluster.local
|
||||||
|
- name: JAVA_OPTS
|
||||||
|
value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 500Mi
|
||||||
|
requests:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 500Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: queue-master
|
||||||
|
labels:
|
||||||
|
name: queue-master
|
||||||
|
annotations:
|
||||||
|
prometheus.io/path: "/prometheus"
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: queue-master
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: rabbitmq
|
||||||
|
labels:
|
||||||
|
name: rabbitmq
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: rabbitmq
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: rabbitmq
|
||||||
|
annotations:
|
||||||
|
prometheus.io/scrape: "false"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: rabbitmq
|
||||||
|
image: rabbitmq:3.6.8-management
|
||||||
|
ports:
|
||||||
|
- containerPort: 15672
|
||||||
|
name: management
|
||||||
|
- containerPort: 5672
|
||||||
|
name: rabbitmq
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- CHOWN
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
- name: rabbitmq-exporter
|
||||||
|
image: kbudde/rabbitmq-exporter
|
||||||
|
ports:
|
||||||
|
- containerPort: 9090
|
||||||
|
name: exporter
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: rabbitmq
|
||||||
|
labels:
|
||||||
|
name: rabbitmq
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 5672
|
||||||
|
name: rabbitmq
|
||||||
|
targetPort: 5672
|
||||||
|
- port: 9090
|
||||||
|
name: exporter
|
||||||
|
targetPort: exporter
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
name: rabbitmq
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: session-db
|
||||||
|
labels:
|
||||||
|
name: session-db
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: session-db
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: session-db
|
||||||
|
annotations:
|
||||||
|
prometheus.io.scrape: "false"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: session-db
|
||||||
|
image: redis:alpine
|
||||||
|
ports:
|
||||||
|
- name: redis
|
||||||
|
containerPort: 6379
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- CHOWN
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: session-db
|
||||||
|
labels:
|
||||||
|
name: session-db
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 6379
|
||||||
|
targetPort: 6379
|
||||||
|
selector:
|
||||||
|
name: session-db
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: shipping
|
||||||
|
labels:
|
||||||
|
name: shipping
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: shipping
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: shipping
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: shipping
|
||||||
|
image: weaveworksdemos/shipping:0.4.8
|
||||||
|
env:
|
||||||
|
- name: ZIPKIN
|
||||||
|
value: zipkin.jaeger.svc.cluster.local
|
||||||
|
- name: JAVA_OPTS
|
||||||
|
value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 500Mi
|
||||||
|
requests:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 500Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-volume
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
volumes:
|
||||||
|
- name: tmp-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: shipping
|
||||||
|
labels:
|
||||||
|
name: shipping
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: shipping
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: user-db
|
||||||
|
labels:
|
||||||
|
name: user-db
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: user-db
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: user-db
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: user-db
|
||||||
|
image: weaveworksdemos/user-db:0.3.0
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- name: mongo
|
||||||
|
containerPort: 27017
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- CHOWN
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-volume
|
||||||
|
volumes:
|
||||||
|
- name: tmp-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: user-db
|
||||||
|
labels:
|
||||||
|
name: user-db
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 27017
|
||||||
|
targetPort: 27017
|
||||||
|
selector:
|
||||||
|
name: user-db
|
||||||
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: user
|
||||||
|
labels:
|
||||||
|
name: user
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: user
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: user
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: user
|
||||||
|
image: weaveworksdemos/user:0.4.7
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 100Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
env:
|
||||||
|
- name: MONGO_HOST
|
||||||
|
value: user-db:27017
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 10001
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- all
|
||||||
|
add:
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 300
|
||||||
|
periodSeconds: 3
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 180
|
||||||
|
periodSeconds: 3
|
||||||
|
nodeSelector:
|
||||||
|
beta.kubernetes.io/os: linux
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: user
|
||||||
|
labels:
|
||||||
|
name: user
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
# the port that this service should serve on
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: user
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
local components = std.extVar("__ksonnet/components");
|
||||||
|
components + {
|
||||||
|
// Insert user-specified overrides here.
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
local base = import "base.libsonnet";
|
||||||
|
// uncomment if you reference ksonnet-lib
|
||||||
|
// local k = import "k.libsonnet";
|
||||||
|
|
||||||
|
base + {
|
||||||
|
// Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n")
|
||||||
|
// "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"})
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
local params = std.extVar("__ksonnet/params");
|
||||||
|
local globals = import "globals.libsonnet";
|
||||||
|
local envParams = params + {
|
||||||
|
components +: {
|
||||||
|
// Insert component parameter overrides here. Ex:
|
||||||
|
// guestbook +: {
|
||||||
|
// name: "guestbook-dev",
|
||||||
|
// replicas: params.global.replicas,
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
components: {
|
||||||
|
[x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components)
|
||||||
|
},
|
||||||
|
}
|
||||||
Reference in new issue
Block a user