Adds liveness probe annotation, moves loadgen initcontainer into main

This commit is contained in:
Megan O'Keefe 2019-12-15 16:08:23 -05:00
parent 61dd04992b
commit 1b57e37ee1
5 changed files with 41 additions and 26 deletions

4
.gitignore vendored
View file

@ -9,3 +9,7 @@ pkg/
.idea
.skaffold-*.yaml
.kubernetes-manifests-*/
istio-1.*/
install-istio.sh
mtls.yaml
istio.yaml

View file

@ -212,35 +212,28 @@ by deploying the [release manifest](./release) directly to an existing cluster.
--istio-config=auth=MTLS_PERMISSIVE
```
> NOTE: If you need to enable `MTLS_STRICT` mode, you will need to update
> several manifest files:
>
> - `kubernetes-manifests/frontend.yaml`: delete "livenessProbe" and
> "readinessProbe" fields.
> - `kubernetes-manifests/loadgenerator.yaml`: delete "initContainers" field.
1. (Optional) Enable Stackdriver Tracing/Logging with Istio Stackdriver Adapter
2. (Optional) Enable Stackdriver Tracing/Logging with Istio Stackdriver Adapter
by [following this guide](https://cloud.google.com/istio/docs/istio-on-gke/installing#enabling_tracing_and_logging).
1. Install the automatic sidecar injection (annotate the `default` namespace
3. Install the automatic sidecar injection (annotate the `default` namespace
with the label):
```sh
kubectl label namespace default istio-injection=enabled
```
1. Apply the manifests in [`./istio-manifests`](./istio-manifests) directory.
4. Apply the manifests in [`./istio-manifests`](./istio-manifests) directory.
(This is required only once.)
```sh
kubectl apply -f ./istio-manifests
```
1. Deploy the application with `skaffold run --default-repo=gcr.io/[PROJECT_ID]`.
5. Deploy the application with `skaffold run --default-repo=gcr.io/[PROJECT_ID]`.
1. Run `kubectl get pods` to see pods are in a healthy and ready state.
6. Run `kubectl get pods` to see pods are in a healthy and ready state.
1. Find the IP address of your Istio gateway Ingress or Service, and visit the
7. Find the IP address of your Istio gateway Ingress or Service, and visit the
application.
```sh

View file

@ -199,6 +199,8 @@ spec:
metadata:
labels:
app: frontend
annotations:
sidecar.istio.io/rewriteAppHTTPProbers: "true"
spec:
containers:
- name: server
@ -444,23 +446,27 @@ spec:
metadata:
labels:
app: loadgenerator
annotations:
sidecar.istio.io/rewriteAppHTTPProbers: "true"
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
initContainers:
- name: wait-frontend
image: alpine:3.6
command: ['sh', '-c', 'set -x; apk add --no-cache curl &&
until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do
echo "waiting for http://${FRONTEND_ADDR}";
sleep 2;
done;']
env:
- name: FRONTEND_ADDR
value: "frontend:80"
# initContainers:
# - name: wait-frontend
# image: alpine:3.6
# command: ['sh', '-c', 'set -x; apk add --no-cache curl &&
# until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do
# echo "waiting for http://${FRONTEND_ADDR}";
# sleep 2;
# done;']
# env:
# - name: FRONTEND_ADDR
# value: "frontend:80"
containers:
- name: main
image: gcr.io/google-samples/microservices-demo/loadgenerator:v0.1.2
# image: gcr.io/google-samples/microservices-demo/loadgenerator:v0.1.2
image: gcr.io/megandemo/loadgen:failcurl
imagePullPolicy: Always
env:
- name: FRONTEND_ADDR
value: "frontend:80"

View file

@ -15,4 +15,7 @@ COPY --from=builder /install /usr/local
COPY . .
RUN chmod +x ./loadgen.sh
RUN apt-get -qq update \
&& apt-get install -y --no-install-recommends \
curl
ENTRYPOINT ./loadgen.sh

View file

@ -18,10 +18,19 @@
set -e
trap "exit" TERM
if [[ -z "${FRONTEND_ADDR}" ]]; then
if [ -z "${FRONTEND_ADDR}" ]; then
echo >&2 "FRONTEND_ADDR not specified"
exit 1
fi
set -x
# if one request to the frontend fails, then exit
STATUSCODE=$(curl --silent --output /dev/stderr --write-out "%{http_code}" http://${FRONTEND_ADDR})
if test $STATUSCODE -ne 200; then
echo "Error: cannot reach frontend, exiting"
exit 1
fi
# else, run loadgen
locust --host="http://${FRONTEND_ADDR}" --no-web -c "${USERS:-10}" 2>&1