Ingress

Ingress with SSL & Basic Auth

Setting up Basic Auth is pretty straightforward as you only need to generate the htpasswd token and create the kubernetes secret before creating your ingress resource. If the htpasswd command isn't present on your machine you can install it with apt-get install apache2-utils.

Create credentials file & kubernetes secret

create-secret.sh
htpasswd -cb auth $(USERNAME) $(PASSWORD)
kubectl create secret generic "nginx-ingress-basic-auth" --from-file="auth"
The secret created will look like this:
apiVersion: v1
kind: Secret
metadata:
  name: nginx-ingress-basic-auth
type: Opaque
data:
  auth: dXNlcjp5LWJhc2g1LkQuRlJTdDlvU0tieDByN2pFaXJiaHEuSmNLaUZScUJWRw==

Create the ingress resource

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: <hostname>  annotations:    kubernetes.io/ingress.class: "nginx"    nginx.ingress.kubernetes.io/auth-type: basic    nginx.ingress.kubernetes.io/auth-secret: nginx-ingress-basic-auth    nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - foo"spec:  tls:  - hosts:    - <hostname>    secretName: <tls secret name>  rules:  - host: $HOST    http:      paths:      - path: /service-a        backend:          serviceName: my-service-a          servicePort: 80      - path: /service-b        backend:          serviceName: my-service-b          servicePort: 80  

Ingress with Sticky Sessions

apiVersion: extensions/v1beta1  kind: Ingressmetadata:    name: nginx-test-sticky  annotations:    kubernetes.io/ingress.class: "nginx"    ingress.kubernetes.io/affinity: "cookie"    ingress.kubernetes.io/session-cookie-name: "route"    ingress.kubernetes.io/session-cookie-hash: "sha1"spec:  rules:  - host: $HOST    http:      paths:      - path: /        backend:          serviceName: $SERVICE_NAME          servicePort: $SERVICE_PORT

Last updated