mirror of
https://github.com/stefanprodan/podinfo.git
synced 2026-04-07 03:26:54 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5516b38cb | ||
|
|
39130004d5 | ||
|
|
d4b615e3a2 | ||
|
|
98e133a7be | ||
|
|
7674b76dab | ||
|
|
8fa39d90be | ||
|
|
638bdc8e83 | ||
|
|
b565a67dec | ||
|
|
65d077291b | ||
|
|
e9d11c247e | ||
|
|
126ac55801 |
@@ -33,6 +33,7 @@ jobs:
|
|||||||
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin;
|
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin;
|
||||||
echo $QUAY_PASS | docker login -u $QUAY_USER --password-stdin quay.io;
|
echo $QUAY_PASS | docker login -u $QUAY_USER --password-stdin quay.io;
|
||||||
make push-container;
|
make push-container;
|
||||||
|
make push-base;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
push-binary:
|
push-binary:
|
||||||
|
|||||||
10
Dockerfile.base
Normal file
10
Dockerfile.base
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
FROM golang:1.14
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
# copy modules manifests
|
||||||
|
COPY go.mod go.mod
|
||||||
|
COPY go.sum go.sum
|
||||||
|
|
||||||
|
# cache modules
|
||||||
|
RUN go mod download
|
||||||
6
Makefile
6
Makefile
@@ -33,6 +33,12 @@ build-charts:
|
|||||||
build-container:
|
build-container:
|
||||||
docker build -t $(DOCKER_IMAGE_NAME):$(VERSION) .
|
docker build -t $(DOCKER_IMAGE_NAME):$(VERSION) .
|
||||||
|
|
||||||
|
build-base:
|
||||||
|
docker build -f Dockerfile.base -t $(DOCKER_REPOSITORY)/podinfo-base:latest .
|
||||||
|
|
||||||
|
push-base: build-base
|
||||||
|
docker push $(DOCKER_REPOSITORY)/podinfo-base:latest
|
||||||
|
|
||||||
test-container:
|
test-container:
|
||||||
@docker rm -f podinfo || true
|
@docker rm -f podinfo || true
|
||||||
@docker run -dp 9898:9898 --name=podinfo $(DOCKER_IMAGE_NAME):$(VERSION)
|
@docker run -dp 9898:9898 --name=podinfo $(DOCKER_IMAGE_NAME):$(VERSION)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
version: 3.2.3
|
version: 3.2.4
|
||||||
appVersion: 3.2.3
|
appVersion: 3.2.4
|
||||||
name: podinfo
|
name: podinfo
|
||||||
engine: gotpl
|
engine: gotpl
|
||||||
description: Podinfo Helm chart for Kubernetes
|
description: Podinfo Helm chart for Kubernetes
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ Parameter | Default | Description
|
|||||||
`faults.error` | `false` | 1/3 chances of a random HTTP response error
|
`faults.error` | `false` | 1/3 chances of a random HTTP response error
|
||||||
`faults.unhealthy` | `false` | When set, the healthy state is never reached
|
`faults.unhealthy` | `false` | When set, the healthy state is never reached
|
||||||
`faults.unready` | `false` | When set, the ready state is never reached
|
`faults.unready` | `false` | When set, the ready state is never reached
|
||||||
|
`faults.testFail` | `false` | When set, a helm test is included which always fails
|
||||||
|
`faults.testTimeout` | `false` | When set, a helm test is included which always times out
|
||||||
`h2c.enabled` | `false` | Allow upgrading to h2c
|
`h2c.enabled` | `false` | Allow upgrading to h2c
|
||||||
`image.repository` | `stefanprodan/podinfo` | Image repository
|
`image.repository` | `stefanprodan/podinfo` | Image repository
|
||||||
`image.tag` | `<VERSION>` | Image tag
|
`image.tag` | `<VERSION>` | Image tag
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ spec:
|
|||||||
env:
|
env:
|
||||||
{{- if .Values.ui.message }}
|
{{- if .Values.ui.message }}
|
||||||
- name: PODINFO_UI_MESSAGE
|
- name: PODINFO_UI_MESSAGE
|
||||||
value: {{ .Values.ui.message }}
|
value: {{ quote .Values.ui.message }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.ui.logo }}
|
{{- if .Values.ui.logo }}
|
||||||
- name: PODINFO_UI_LOGO
|
- name: PODINFO_UI_LOGO
|
||||||
|
|||||||
26
charts/podinfo/templates/tests/fail.yaml
Normal file
26
charts/podinfo/templates/tests/fail.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{{- if .Values.faults.test }}
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ template "podinfo.fullname" . }}-fault-test-{{ randAlphaNum 5 | lower }}
|
||||||
|
labels:
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
app: {{ template "podinfo.name" . }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test
|
||||||
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
|
sidecar.istio.io/inject: "false"
|
||||||
|
linkerd.io/inject: disabled
|
||||||
|
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: fault
|
||||||
|
image: alpine:3.11
|
||||||
|
command: ['/bin/sh']
|
||||||
|
args: ['-c', 'exit 1']
|
||||||
|
restartPolicy: Never
|
||||||
|
{{- end }}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
apiVersion: v1
|
apiVersion: batch/v1
|
||||||
kind: Pod
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ template "podinfo.fullname" . }}-grpc-test-{{ randAlphaNum 5 | lower }}
|
name: {{ template "podinfo.fullname" . }}-grpc-test-{{ randAlphaNum 5 | lower }}
|
||||||
labels:
|
labels:
|
||||||
@@ -14,9 +14,11 @@ metadata:
|
|||||||
linkerd.io/inject: disabled
|
linkerd.io/inject: disabled
|
||||||
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
||||||
spec:
|
spec:
|
||||||
containers:
|
template:
|
||||||
- name: grpc-health-probe
|
spec:
|
||||||
image: stefanprodan/grpc_health_probe:v0.3.0
|
containers:
|
||||||
command: ['grpc_health_probe']
|
- name: grpc-health-probe
|
||||||
args: ['-addr={{ template "podinfo.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.grpcPort }}']
|
image: stefanprodan/grpc_health_probe:v0.3.0
|
||||||
restartPolicy: Never
|
command: ['grpc_health_probe']
|
||||||
|
args: ['-addr={{ template "podinfo.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.grpcPort }}']
|
||||||
|
restartPolicy: Never
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
apiVersion: v1
|
apiVersion: batch/v1
|
||||||
kind: Pod
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ template "podinfo.fullname" . }}-jwt-test-{{ randAlphaNum 5 | lower }}
|
name: {{ template "podinfo.fullname" . }}-jwt-test-{{ randAlphaNum 5 | lower }}
|
||||||
labels:
|
labels:
|
||||||
@@ -14,16 +14,18 @@ metadata:
|
|||||||
linkerd.io/inject: disabled
|
linkerd.io/inject: disabled
|
||||||
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
||||||
spec:
|
spec:
|
||||||
containers:
|
template:
|
||||||
- name: tools
|
spec:
|
||||||
image: giantswarm/tiny-tools
|
containers:
|
||||||
command:
|
- name: tools
|
||||||
- sh
|
image: giantswarm/tiny-tools
|
||||||
- -c
|
command:
|
||||||
- |
|
- sh
|
||||||
TOKEN=$(curl -sd 'test' ${PODINFO_SVC}/token | jq -r .token) &&
|
- -c
|
||||||
curl -sH "Authorization: Bearer ${TOKEN}" ${PODINFO_SVC}/token/validate | grep test
|
- |
|
||||||
env:
|
TOKEN=$(curl -sd 'test' ${PODINFO_SVC}/token | jq -r .token) &&
|
||||||
- name: PODINFO_SVC
|
curl -sH "Authorization: Bearer ${TOKEN}" ${PODINFO_SVC}/token/validate | grep test
|
||||||
value: "{{ template "podinfo.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.externalPort }}"
|
env:
|
||||||
restartPolicy: Never
|
- name: PODINFO_SVC
|
||||||
|
value: "{{ template "podinfo.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.externalPort }}"
|
||||||
|
restartPolicy: Never
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
apiVersion: v1
|
apiVersion: batch/v1
|
||||||
kind: Pod
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ template "podinfo.fullname" . }}-service-test-{{ randAlphaNum 5 | lower }}
|
name: {{ template "podinfo.fullname" . }}-service-test-{{ randAlphaNum 5 | lower }}
|
||||||
labels:
|
labels:
|
||||||
@@ -14,15 +14,17 @@ metadata:
|
|||||||
linkerd.io/inject: disabled
|
linkerd.io/inject: disabled
|
||||||
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
||||||
spec:
|
spec:
|
||||||
containers:
|
template:
|
||||||
- name: curl
|
spec:
|
||||||
image: curlimages/curl:7.69.0
|
containers:
|
||||||
command:
|
- name: curl
|
||||||
- sh
|
image: curlimages/curl:7.69.0
|
||||||
- -c
|
command:
|
||||||
- |
|
- sh
|
||||||
curl -s ${PODINFO_SVC}/api/info | grep version
|
- -c
|
||||||
env:
|
- |
|
||||||
- name: PODINFO_SVC
|
curl -s ${PODINFO_SVC}/api/info | grep version
|
||||||
value: "{{ template "podinfo.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.externalPort }}"
|
env:
|
||||||
restartPolicy: Never
|
- name: PODINFO_SVC
|
||||||
|
value: "{{ template "podinfo.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.externalPort }}"
|
||||||
|
restartPolicy: Never
|
||||||
|
|||||||
26
charts/podinfo/templates/tests/timeout.yaml
Normal file
26
charts/podinfo/templates/tests/timeout.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{{- if .Values.faults.test }}
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ template "podinfo.fullname" . }}-fault-test-{{ randAlphaNum 5 | lower }}
|
||||||
|
labels:
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
app: {{ template "podinfo.name" . }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test
|
||||||
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
|
sidecar.istio.io/inject: "false"
|
||||||
|
linkerd.io/inject: disabled
|
||||||
|
appmesh.k8s.aws/sidecarInjectorWebhook: disabled
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: fault
|
||||||
|
image: alpine:3.11
|
||||||
|
command: ['/bin/sh']
|
||||||
|
args: ['-c', 'while sleep 3600; do :; done']
|
||||||
|
restartPolicy: Never
|
||||||
|
{{- end }}
|
||||||
@@ -15,13 +15,15 @@ faults:
|
|||||||
error: false
|
error: false
|
||||||
unhealthy: false
|
unhealthy: false
|
||||||
unready: false
|
unready: false
|
||||||
|
testFail: false
|
||||||
|
testTimeout: false
|
||||||
|
|
||||||
h2c:
|
h2c:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: stefanprodan/podinfo
|
repository: stefanprodan/podinfo
|
||||||
tag: 3.2.3
|
tag: 3.2.4
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
service:
|
service:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: backend
|
- name: backend
|
||||||
image: stefanprodan/podinfo:3.2.3
|
image: stefanprodan/podinfo:3.2.4
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: frontend
|
- name: frontend
|
||||||
image: stefanprodan/podinfo:3.2.3
|
image: stefanprodan/podinfo:3.2.4
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ spec:
|
|||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
name: backend
|
name: frontend
|
||||||
minReplicas: 1
|
minReplicas: 1
|
||||||
maxReplicas: 4
|
maxReplicas: 4
|
||||||
metrics:
|
metrics:
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ spec:
|
|||||||
serviceAccountName: webapp
|
serviceAccountName: webapp
|
||||||
containers:
|
containers:
|
||||||
- name: backend
|
- name: backend
|
||||||
image: stefanprodan/podinfo:3.2.3
|
image: stefanprodan/podinfo:3.2.4
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
|
|||||||
29
deploy/webapp/common/reconciler-rbac.yaml
Normal file
29
deploy/webapp/common/reconciler-rbac.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: reconciler
|
||||||
|
namespace: webapp
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: reconciler
|
||||||
|
namespace: webapp
|
||||||
|
rules:
|
||||||
|
- apiGroups: ['*']
|
||||||
|
resources: ['*']
|
||||||
|
verbs: ['*']
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: reconciler
|
||||||
|
namespace: webapp
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: reconciler
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: reconciler
|
||||||
|
namespace: webapp
|
||||||
@@ -25,7 +25,7 @@ spec:
|
|||||||
serviceAccountName: webapp
|
serviceAccountName: webapp
|
||||||
containers:
|
containers:
|
||||||
- name: frontend
|
- name: frontend
|
||||||
image: stefanprodan/podinfo:3.2.3
|
image: stefanprodan/podinfo:3.2.4
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: podinfod
|
- name: podinfod
|
||||||
image: stefanprodan/podinfo:3.2.3
|
image: stefanprodan/podinfo:3.2.4
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package version
|
package version
|
||||||
|
|
||||||
var VERSION = "3.2.3"
|
var VERSION = "3.2.4"
|
||||||
var REVISION = "unknown"
|
var REVISION = "unknown"
|
||||||
|
|||||||
Reference in New Issue
Block a user