Simple layered lab environment#
Note
Before you start, make sure you’ve seen: Lab Environment
For a diagram of the architecture after a successful installation see:
Installation process#
kubectl create secret docker-registry docker-registry-key --docker-server=https://index.docker.io/v1/ --docker-username=labile --docker- password=<your-pword> --docker-email=labile.zhu@gmail.com
kubectl get secret docker-registry-key --output=yaml
fortio#
fortio-server L1#
kubectl -n mark apply -f - <<"EOF"
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: fortio-server
labels:
app: fortio-server
spec:
replicas: 1
selector:
matchLabels:
app: fortio-server
template:
metadata:
labels:
app.kubernetes.io/name: fortio-server
app: fortio-server
annotations:
proxy.istio.io/config: |-
proxyStatsMatcher:
inclusionRegexps:
- "cluster\\..*fortio.*" #proxy upstream(outbound)
- "cluster\\..*inbound.*" #proxy upstream(inbound)
- "http\\..*"
- "listener\\..*"
spec:
restartPolicy: Always
imagePullSecrets:
- name: docker-registry-key
containers:
- name: main-app
image: docker.io/fortio/fortio
imagePullPolicy: IfNotPresent
command: ["/usr/bin/fortio"]
args: ["server", "-M", "8070 http://fortio-server-l2:8080"]
ports:
- containerPort: 8080
protocol: TCP
name: http
- containerPort: 8070
protocol: TCP
name: http-m
- containerPort: 8079
protocol: TCP
name: grpc
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: fortio-server
app.kubernetes.io/instance: fortio-server
name: fortio-server
spec:
type: NodePort
selector:
app.kubernetes.io/name: fortio-server
sessionAffinity: None
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
- name: http-m
protocol: TCP
port: 8070
targetPort: 8070
- name: grpc
protocol: TCP
port: 8079
targetPort: 8079
EOF
fortio-server L2#
kubectl -n mark apply -f - <<"EOF"
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: fortio-server-l2
labels:
app: fortio-server-l2
spec:
replicas: 1
selector:
matchLabels:
app: fortio-server-l2
template:
metadata:
labels:
app.kubernetes.io/name: fortio-server-l2
app: fortio-server-l2
annotations:
proxy.istio.io/config: |-
proxyStatsMatcher:
inclusionRegexps:
- "cluster\\..*fortio.*" #proxy upstream(outbound)
- "cluster\\..*inbound.*" #proxy upstream(inbound)
- "http\\..*"
- "listener\\..*"
spec:
restartPolicy: Always
imagePullSecrets:
- name: docker-registry-key
containers:
- name: main-app
image: docker.io/fortio/fortio
imagePullPolicy: IfNotPresent
command: ["/usr/bin/fortio"]
args: ["server", "-M", "8070 http://fortio-server-l2:8080"]
ports:
- containerPort: 8080
protocol: TCP
name: http
- containerPort: 8070
protocol: TCP
name: http-m
- containerPort: 8079
protocol: TCP
name: grpc
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: fortio-server-l2
app.kubernetes.io/instance: fortio-server-l2
name: fortio-server-l2
spec:
type: NodePort
selector:
app.kubernetes.io/name: fortio-server-l2
sessionAffinity: None
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
- name: http-m
protocol: TCP
port: 8070
targetPort: 8070
- name: grpc
protocol: TCP
port: 8079
targetPort: 8079
EOF
fortio-server-worknode6#
kubectl -n mark apply -f - <<"EOF"
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: fortio-server-worknode6
labels:
app: fortio-server-worknode6
spec:
replicas: 1
selector:
matchLabels:
app: fortio-server-worknode6
template:
metadata:
labels:
app.kubernetes.io/name: fortio-server-worknode6
app: fortio-server-worknode6
annotations:
proxy.istio.io/config: |-
proxyStatsMatcher:
inclusionRegexps:
- "cluster\\..*fortio.*" #proxy upstream(outbound)
- "cluster\\..*inbound.*" #proxy upstream(inbound)
- "http\\..*"
- "listener\\..*"
spec:
restartPolicy: Always
imagePullSecrets:
- name: docker-registry-key
containers:
- name: main-app
image: docker.io/fortio/fortio
imagePullPolicy: IfNotPresent
command: ["/usr/bin/fortio"]
args: ["server", "-M", "8070 http://fortio-server-worknode6:8080"]
ports:
- containerPort: 8080
protocol: TCP
name: http
- containerPort: 8070
protocol: TCP
name: http-m
- containerPort: 8079
protocol: TCP
name: grpc
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "kubernetes.io/hostname"
operator: In
values:
- "worknode6"
EOF