Skip to content

Instantly share code, notes, and snippets.

@ihcsim
Last active March 15, 2020 06:09
Show Gist options
  • Select an option

  • Save ihcsim/4b89e43929d98ffd65658356e761f868 to your computer and use it in GitHub Desktop.

Select an option

Save ihcsim/4b89e43929d98ffd65658356e761f868 to your computer and use it in GitHub Desktop.
# all resource requirements are removed from the deployments
# to ensure better utilization of nodes rsources.
# otherwise, I ended with many nodes that barely utilized 2% of the CPU
# and are unable to host more pods due to their resource requirements.
apiVersion: v1
kind: Namespace
metadata:
name: emojivoto
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: emoji
namespace: emojivoto
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: voting
namespace: emojivoto
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: web
namespace: emojivoto
---
apiVersion: v1
kind: Service
metadata:
name: emoji-svc
namespace: emojivoto
spec:
ports:
- name: grpc
port: 8080
targetPort: 8080
selector:
app: emoji-svc
---
apiVersion: v1
kind: Service
metadata:
name: voting-svc
namespace: emojivoto
spec:
ports:
- name: grpc
port: 8080
targetPort: 8080
selector:
app: voting-svc
---
apiVersion: v1
kind: Service
metadata:
name: web-svc
namespace: emojivoto
spec:
ports:
- name: http
port: 80
targetPort: 8080
selector:
app: web-svc
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: emoji
namespace: emojivoto
spec:
replicas: 1
selector:
matchLabels:
app: emoji-svc
template:
metadata:
labels:
app: emoji-svc
spec:
containers:
- env:
- name: GRPC_PORT
value: "8080"
image: buoyantio/emojivoto-emoji-svc:v9
name: emoji-svc
ports:
- containerPort: 8080
name: grpc
serviceAccountName: emoji
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vote-bot
namespace: emojivoto
spec:
replicas: 1
selector:
matchLabels:
app: vote-bot
template:
metadata:
labels:
app: vote-bot
spec:
containers:
- command:
- emojivoto-vote-bot
env:
- name: WEB_HOST
value: web-svc.emojivoto:80
image: buoyantio/emojivoto-web:v9
name: vote-bot
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: voting
namespace: emojivoto
spec:
replicas: 1
selector:
matchLabels:
app: voting-svc
template:
metadata:
labels:
app: voting-svc
spec:
containers:
- env:
- name: GRPC_PORT
value: "8080"
image: buoyantio/emojivoto-voting-svc:v9
name: voting-svc
ports:
- containerPort: 8080
name: grpc
serviceAccountName: voting
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: emojivoto
spec:
replicas: 1
selector:
matchLabels:
app: web-svc
template:
metadata:
labels:
app: web-svc
spec:
containers:
- env:
- name: WEB_PORT
value: "8080"
- name: EMOJISVC_HOST
value: emoji-svc.emojivoto:8080
- name: VOTINGSVC_HOST
value: voting-svc.emojivoto:8080
- name: INDEX_BUNDLE
value: dist/index_bundle.js
image: buoyantio/emojivoto-web:v9
name: web-svc
ports:
- containerPort: 8080
name: http
serviceAccountName: web
#!/bin/bash
linkerd_path="${1:-linkerd}"
linkerd_namespace="${2:-linkerd}"
replicas="${replicas:-5}"
root_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# download emojivoto YAML, remove the namespace resource
emojivoto=$(cat "$root_dir"/emojivoto.yaml)
emojivoto=$(echo "$emojivoto" | tail -n +6)
emojins='namespace: emojivoto'
emojivoto="${emojivoto//$emojins/}"
# remove references to namespace in the service DNS, in the containers arguments
emojins='.emojivoto:'
newns=':'
emojivoto="${emojivoto//$emojins/$newns}"
# inject the emojivoto with the Linkerd proxy
emojivoto=$(echo "$emojivoto" | "$linkerd_path" -l "$linkerd_namespace" inject -)
ns_start_index="1"
ns_end_index="50"
for i in $(eval echo "{$ns_start_index..$ns_end_index}"); do
emojins=$linkerd_namespace-emoji-$i
kubectl create ns "$emojins"
echo "$emojivoto" | kubectl apply -n "$emojins" -f -
kubectl -n "$emojins" label deploy/emoji deploy/voting deploy/web deploy/vote-bot app=emojivoto
kubectl -n "$emojins" scale --replicas="$replicas" deploy/emoji deploy/voting deploy/web deploy/vote-bot
echo ""
done
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
#- linkerd-edge-19.12.1.yaml
- linkerd-dev.yaml
patchesStrategicMerge:
- resources-and-toleration.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-identity
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: identity
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-controller
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: public-api
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-destination
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: destination
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-grafana
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: grafana
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-web
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: web
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-prometheus
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: prometheus
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "prometheus"
effect: "NoSchedule"
containers:
- name: prometheus
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "4"
memory: "14Gi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-proxy-injector
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: proxy-injector
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-sp-validator
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: sp-validator
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: linkerd-tap
namespace: linkerd
spec:
template:
spec:
nodeSelector:
linkerd.io/control-plane-component: "true"
tolerations:
- key: "linkerd.io/control-plane-component"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: tap
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "10Mi"
- name: linkerd-proxy
resources:
limits:
cpu: "1"
memory: "250Mi"
requests:
cpu: "100m"
memory: "20Mi"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment