Closed jpconver closed 6 years ago
you can update image tag to 0.12.0 to check if it works
You're not using the correct annotation prefix: https://github.com/kubernetes/ingress-nginx/releases/tag/nginx-0.9.0
Yes!!! You are right. The annotations that I should use need to start with: nginx. Thanks a lot!! For the record the correct way of specifying my ingress was then:
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/session-cookie-hash: sha1 nginx.ingress.kubernetes.io/session-cookie-name: SERVERID nginx.ingress.kubernetes.io/rewrite-target: /foo kubernetes.io/ingress.class: "nginx" name: example.com spec: rules: - host: example.com http: paths: - backend: serviceName: example-service servicePort: 80 path: /
Hi everyone!
I've come across with the same problem and desribed solution with the annotations does not work for me. I use docker desktop for windows with enabled k8s cluster, should be the same as minikube.
Can be reproduced with the following steps for the repo:
install minikube/docker for windows
install helm and init with the command: helm init
install nginx-ingress via helm: helm install stable/nginx-ingress --name my-nginx
creare a secret with the command: kubectl create secret generic mssql-secret --from-literal SA_PASSWORD="P@ssw0rd" --from-literal TASKS_DB="Server=mssql-cluster-ip-service;DataBase=Tasks;User Id=sa;Password=P@ssw0rd;Connection Timeout=30;"
use command kubectl apply -f k8s
to apply deployments and ingress config
After cluster is set up try curl -i https://localhost -k
command. According to the sticky session documentation there should be a header:
Set-Cookie: route=a9907b79b248140b56bb13723f72b67697baac3d; Expires=Sun, 12-Feb-17 14:11:12 GMT; Max-Age=172800; Path=/; HttpOnly
But I have no such headers in my response:
Could you advise how to solve this problem, maybe I misunderstood smt from the nginx-ingress docs, but is seems clear.
Finally I've figured out with the problem, the host should be used, an example:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-hash: sha1
nginx.ingress.kubernetes.io/session-cookie-name: route
nginx.ingress.kubernetes.io/ssl-redirect: 'true'
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt-prod
certmanager.k8s.io/acme-http01-edit-in-place: 'true'
spec:
tls:
- hosts:
- your-host.com
- www.your-host.com
secretName: your-host-com
rules:
- host: your-host.com
http:
paths:
- path: /
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
- path: /api
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
- host: www.your-host.com
http:
paths:
- path: /
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
- path: /api
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
NGINX Ingress controller version: image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.9.0
Kubernetes version (use
kubectl version
): Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T12:22:21Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}Environment:
Cloud provider or hardware configuration:
OS (e.g. from /etc/os-release):
NAME="Ubuntu" VERSION="16.04.3 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.3 LTS" VERSION_ID="16.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" VERSION_CODENAME=xenial UBUNTU_CODENAME=xenial
uname -a
):Linux jpconver.xcade.net 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
What happened:
After deploying the ingress controller and default backend, I created a test ingress object based on the example, but the sticky session cookie isn't set.
What you expected to happen:
That the cookie is set
How to reproduce it (as minimally and precisely as possible):
1) created an example service using this yml (with kubectl create -f)
2) create the ingress using this yml
3) Execute of the following command: curl -v http://192.168.39.121 -H 'Host: example.com', where 192.168.39.121 is the ip address of my minikube
4) The cookie is not set
Anything else we need to know:
I'm using minikube (version v0.25.0) and installed the ingress using: minikube addons enable ingress
contents of the nginx.conf file