mirror of
https://github.com/Alfresco/SearchServices.git
synced 2025-09-10 14:11:25 +00:00
chaos monkey
This commit is contained in:
Submodule e2e-test/qa/chaos/kubernetes-pod-chaos-monkey deleted from f3e1cc7c1d
11
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/Dockerfile
Normal file
11
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/Dockerfile
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM debian:jessie
|
||||
|
||||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install \
|
||||
curl
|
||||
|
||||
ARG KUBECTL_URL=https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kubectl
|
||||
RUN cd /usr/local/bin && curl -O $KUBECTL_URL && chmod 755 kubectl
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
COPY chaos.sh ./
|
||||
CMD ["bash", "/usr/src/app/chaos.sh"]
|
21
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/LICENSE.md
Normal file
21
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Jesse Newland
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
39
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/README.md
Normal file
39
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Kubernetes Pod Chaos Monkey
|
||||
|
||||
This repository contains a `Dockerfile` and associated Kubernetes configuration for a Deployment that will randomly delete pods in a given namespace. This is implemented in Bash mostly because I'm writing it for a lightning talk.
|
||||
|
||||
An image built from the `Dockerfile` in this repository is available on Docker Hub as [`jnewland/kubernetes-pod-chaos-monkey`](https://hub.docker.com/r/jnewland/kubernetes-pod-chaos-monkey/).
|
||||
|
||||
### Configuration
|
||||
|
||||
A few environment variables are available for configuration:
|
||||
|
||||
* `DELAY`: seconds between selecting and deleting a pod. Defaults to `30`.
|
||||
* `NAMESPACE`: the namespace to select a pod from. Defaults to `default`.
|
||||
|
||||
Example Kubernetes config is included at [`config/kubernetes/production/deployment.yaml`](./config/kubernetes/production/deployment.yaml)
|
||||
|
||||
### Example
|
||||
|
||||
```bash
|
||||
$ kubectl apply -f config/kubernetes/production/deployment.yaml
|
||||
deployment "kubernetes-pod-chaos-monkey" created
|
||||
$ kubectl get pods | grep chaos
|
||||
kubernetes-pod-chaos-monkey-3294408070-6w6oh 1/1 Running 0 19s
|
||||
$ kubectl logs kubernetes-pod-chaos-monkey-3294408070-6w6oh
|
||||
+ : 30
|
||||
+ : default
|
||||
+ true
|
||||
+ xargs -t --no-run-if-empty kubectl --namespace default delete pod
|
||||
+ head -n 1
|
||||
+ shuf
|
||||
+ tr ' ' '\n'
|
||||
+ kubectl --namespace default -o 'jsonpath={.items[*].metadata.name}' get pods
|
||||
kubectl --namespace default delete pod dd-agent-3hw6w
|
||||
pod "dd-agent-3hw6w" deleted
|
||||
+ sleep 30
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[MIT](./LICENSE.md)
|
17
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/chaos.sh
Executable file
17
e2e-test/qa/chaos/kubernetes-pod-chaos-monkey/chaos.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
# Randomly delete pods in a Kubernetes namespace.
|
||||
set -ex
|
||||
|
||||
while true
|
||||
do
|
||||
kubectl \
|
||||
--namespace "${NAMESPACE}" \
|
||||
-o 'jsonpath={.items[*].metadata.name}' \
|
||||
get pods | \
|
||||
tr " " "\n" | \
|
||||
shuf | \
|
||||
head -n ${KILL_NR} |
|
||||
xargs -t --no-run-if-empty \
|
||||
kubectl --namespace "${NAMESPACE}" delete pod
|
||||
sleep "${DELAY_SEC}"
|
||||
done
|
@@ -0,0 +1,18 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: kubernetes-pod-chaos-monkey
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: kubernetes-pod-chaos-monkey
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: kubernetes-pod-chaos-monkey
|
||||
spec:
|
||||
containers:
|
||||
- name: kubernetes-pod-chaos-monkey
|
||||
image: jnewland/kubernetes-pod-chaos-monkey
|
||||
imagePullPolicy: Always
|
@@ -5,4 +5,5 @@ metadata:
|
||||
type: kubernetes.io/dockerconfigjson
|
||||
data:
|
||||
# Docker registries config json in base64 to do this just run - cat ~/.docker/config.json | base64
|
||||
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJkb2NrZXItaW50ZXJuYWwuYWxmcmVzY28uY29tIjogewoJCQkiYXV0aCI6ICJiSE4xWTJsMU9rbHVaV1poWW1sc01USWpKQT09IgoJCX0sCgkJImh0dHBzOi8vZG9ja2VyLWludGVybmFsLmFsZnJlc2NvLmNvbSI6IHsKCQkJImF1dGgiOiAiYkhOMVkybDFPa2x1WldaaFltbHNNVElqSkE9PSIKCQl9LAoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImJtVnpjM0p2T2tGdFltbGxiblJoYkRFd01BPT0iCgkJfSwKCQkiaHR0cHM6Ly9xdWF5LmlvIjogewoJCQkiYXV0aCI6ICJiSE4xWTJsMU9tRnBkWEpsWVRFeU13PT0iCgkJfSwKCQkicXVheS5pbyI6IHsKCQkJImF1dGgiOiAiYkhOMVkybDFPbUZwZFhKbFlURXlNdz09IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xNy4xMi4wLWNlIChkYXJ3aW4pIgoJfQp9
|
||||
# REMEMBER TO ADD A WORKING USER FOR THIS
|
||||
.dockerconfigjson: ewoJImF1dGhzIjogewoCSJkb2NrZXItaW50ZXJuYWwuYWxmcmVzY28uY29tIjogewoJCQkiYXV0aCI6ICJiSE4xWTJsMU9rbHVaV1poWW1sc01USWpKQT09IgoJCX0sCgkJImh0dHBzOi8vZG9ja2VyLWludGVybmFsLmFsZnJlc2NvLmNvbSI6IHsKCQkJImF1dGgiOiAiYkhOMVkybDFPa2x1WldaaFltbHNNVElqSkE9PSIKCQl9LAoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImJtVnpjM0p2T2tGdFltbGxiblJoYkRFd01BPT0iCgkJfSwKCQkiaHR0cHM6Ly9xdWF5LmlvIjogewoJCQkiYXV0aCI6ICJiSE4xWTJsMU9tRnBkWEpsWVRFeU13PT0iCgkJfSwKCQkicXVheS5pbyI6IHsKCQkJImF1dGgiOiAiYkhOMVkybDFPbUZwZFhKbFlURXlNdz09IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xNy4xMi4wLWNlIChkYXJ3aW4pIgoJfQp9
|
||||
|
Submodule e2e-test/qa/chaos/stupid-server deleted from 3eb18bc7ca
13
e2e-test/qa/chaos/stupid-server/Dockerfile
Normal file
13
e2e-test/qa/chaos/stupid-server/Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
||||
# DOCKER-VERSION 0.11.0
|
||||
|
||||
FROM quay.io/seanmcgary/nodejs-raw-base
|
||||
MAINTAINER Sean McGary <sean@seanmcgary.com>
|
||||
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
ADD start.sh start.sh
|
||||
|
||||
RUN chmod +x start.sh
|
||||
|
||||
CMD ./start.sh
|
7
e2e-test/qa/chaos/stupid-server/index.js
Normal file
7
e2e-test/qa/chaos/stupid-server/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
var http = require('http');
|
||||
|
||||
var server = http.createServer(function(req, res){
|
||||
res.end(new Date().toISOString());
|
||||
});
|
||||
|
||||
server.listen(8000);
|
4
e2e-test/qa/chaos/stupid-server/start.sh
Normal file
4
e2e-test/qa/chaos/stupid-server/start.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
git clone https://github.com/seanmcgary/stupid-server.git stupid-server
|
||||
|
||||
node stupid-server
|
14
e2e-test/qa/chaos/stupid-server/stupidServer@.service
Normal file
14
e2e-test/qa/chaos/stupid-server/stupidServer@.service
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Stupid Server
|
||||
After=docker.service
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
User=core
|
||||
ExecStartPre=/bin/bash -c '/usr/bin/docker run --rm -v /opt/bin:/opt/bin ibuildthecloud/systemd-docker && /usr/bin/docker pull quay.io/seanmcgary/stupid-server'
|
||||
ExecStart=/bin/bash -c '/opt/bin/systemd-docker run --name stupidservice -p 9000:8000 quay.io/seanmcgary/stupid-server'
|
||||
TimeoutStartSec=0
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
Type=notify
|
||||
NotifyAccess=all
|
Reference in New Issue
Block a user