initial commit
This commit is contained in:
commit
0e6be50e37
23 changed files with 1069 additions and 0 deletions
131
README.md
Normal file
131
README.md
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
# kube
|
||||
|
||||
This repo contains some kubernetes test stuff
|
||||
|
||||
## testapp
|
||||
|
||||
The testapp consists of three parts:
|
||||
|
||||
* srv - the frontend server
|
||||
* db - simulating a database backend that gets called
|
||||
* api - another service that calls an external service (httpbin.org)
|
||||
|
||||
Topology:
|
||||
|
||||
```
|
||||
+--- db
|
||||
/
|
||||
srv ---+
|
||||
\
|
||||
+--- api --- httpbin.org
|
||||
```
|
||||
|
||||
### Prepare
|
||||
|
||||
You need to have access from you local machine to the container registry deployed in you cluster on port 5000:
|
||||
|
||||
You can use ssh port-forwarding: `ssh k8s-master -L 5000:127.0.0.1:5000`
|
||||
|
||||
You need a local docker installation to build and upload the containers.
|
||||
|
||||
For the normal deployment the nginx ingress controller is used.
|
||||
|
||||
#### Ingress traffic
|
||||
|
||||
To get traffic to the ingress controller, install an nginx tcp proxy on the master node:
|
||||
|
||||
Install nginx: `apt install nginx -y`
|
||||
|
||||
Configure nginx to forward traffic to the node ports.
|
||||
First get the ports of your ingress controller.
|
||||
Look for the `80:<nodeport>` and `443:<nodeport>` mappings.
|
||||
|
||||
For nginx: `kubectl -n ingress-nginx get svc ingress-nginx`
|
||||
For Istio: `kubectl -n istio-system get svc istio-ingressgateway`
|
||||
|
||||
Now add all your nodes as stream backends with the ports:
|
||||
|
||||
```
|
||||
cat <<EOF> /etc/nginx/nginx.conf
|
||||
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
stream {
|
||||
upstream stream_backend_80 {
|
||||
server 192.168.0.3:31380;
|
||||
server 192.168.0.4:31380;
|
||||
server 192.168.0.5:31380;
|
||||
}
|
||||
server {
|
||||
listen 80;
|
||||
proxy_pass stream_backend_80;
|
||||
}
|
||||
|
||||
upstream stream_backend_443 {
|
||||
server 192.168.0.3:31390;
|
||||
server 192.168.0.4:31390;
|
||||
server 192.168.0.5:31390;
|
||||
}
|
||||
server {
|
||||
listen 443;
|
||||
proxy_pass stream_backend_443;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
Restart nginx: `systemctl restart nginx`
|
||||
|
||||
Now you can access your ingress via the masters IP on port 80 and 443.
|
||||
|
||||
### Build
|
||||
|
||||
New build the containers and upload them.
|
||||
|
||||
#### SRV
|
||||
|
||||
```
|
||||
cd testapp/srv
|
||||
VERSION=v1 make
|
||||
```
|
||||
|
||||
#### DB
|
||||
|
||||
```
|
||||
cd testapp/db
|
||||
VERSION=v1 make
|
||||
```
|
||||
|
||||
#### API
|
||||
|
||||
```
|
||||
cd testapp/api
|
||||
VERSION=v1 make
|
||||
```
|
||||
|
||||
### Deploy
|
||||
|
||||
Deploy your application stack either using the simple versions or the `-istio` versions.
|
||||
|
||||
To use `-istio` versions you need to install istio in your cluster first.
|
||||
|
||||
**Note:** Change the `k8s-testapp.example.com` domain in the `srv` manifests to your domain.
|
||||
|
||||
#### Simple
|
||||
|
||||
```
|
||||
cd testapp
|
||||
kubectl apply -f api/api-v1.yaml
|
||||
kubectl apply -f db/db.yaml
|
||||
kubectl apply -f srv/srv-v1.yaml
|
||||
```
|
||||
|
||||
#### Istio
|
||||
|
||||
```
|
||||
cd testapp
|
||||
kubectl apply -f api/api-v1-istio.yaml
|
||||
kubectl apply -f db/db.yaml
|
||||
kubectl apply -f srv/srv-v1-istio.yaml
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue