Deploy приложения из видео курса [Stephen Grider] Docker and Kubernetes: The Complete Guide [2018, ENG]
Делаю:
09.11.2019
$ minikube version
minikube version: v1.4.0
commit: 7969c25a98a018b94ea87d949350f3271e9d64b6
Этот вариант будет работать (предположительно) только на minikube.
Ссылка на github:
https://github.com/webmak1/Docker-and-Kubernetes-The-Complete-Guide-Deploy-on-Local-Kubernetes-Cluster-Only
Само приложение:
$ minikube start
$ minikube addons enable ingress
Разворачиваем приложение
$ cd ~/tmp
$ git clone https://github.com/webmak1/Docker-and-Kubernetes-The-Complete-Guide-Deploy-on-Local-Kubernetes-Cluster-Only
$ cd ~/tmp/Docker-and-Kubernetes-The-Complete-Guide-Deploy-on-Local-Kubernetes-Cluster-Only/kubernetes/
$ kubectl create secret generic pgpassword --from-literal PGPASSWORD=12345asdf
$ kubectl create -f .
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
client-deployment-7677fdbc66-259wz 1/1 Running 0 66s
client-deployment-7677fdbc66-7tv6d 1/1 Running 0 66s
client-deployment-7677fdbc66-czqbk 1/1 Running 0 66s
postgres-deployment-79d45ff857-w2ffn 1/1 Running 0 66s
redis-deployment-6f6947dd7d-4d6vc 1/1 Running 0 66s
server-deployment-74b6f7844f-5pp7w 1/1 Running 0 65s
server-deployment-74b6f7844f-fhqkv 1/1 Running 0 65s
server-deployment-74b6f7844f-krn5n 1/1 Running 0 65s
wroker-deployment-864db9dddc-wtr82 1/1 Running 0 65s
KubernetesInc Ingress Nginx
$ cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: grider-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
spec:
rules:
- host: grider-app.com
http:
paths:
- path: /?(.*)
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
- path: /api/?(.*)
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
EOF
// Ждем адрес
$ kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
example-ingress grider-app.com 10.0.2.15 80 44s
$ minikube ip
192.168.99.120
$ sudo vi /etc/hosts
192.168.99.120 grider-app.com
http://grider-app.com
Ошибка!!!
При обращении к адресам
http://grider-app.com/api/values/current http://grider-app.com/api/values/all
Не должно показываться: Hi http://grider-app.com/
Какой-то баг в ingress
Debug
В общем я уже нашел причину. По какой-то причине ключ rewrite-target не сохраняется.
$ kubectl get ingress
$ kubectl describe ingress example-ingress
$ kubectl get ingress -o json
$ kubectl edit ingress -o json
"nginx.ingress.kubernetes.io/rewrite-target": "/"
Меняю на:
"nginx.ingress.kubernetes.io/rewrite-target": "/$1"
Приложение должно работать.
Ожидаемый результат:
Удаляем, если не нужно
$ minikube stop
$ minikube delete