Impossible d’utiliser un port externe dans les kubernetes avec nginx ingress

J’essaie d’utiliser le port 8888 pour charger un service, mais pour une raison quelconque, seul le port 80 fonctionne, alors que le site ne peut pas être atteint avec le port 8888.

La configuration est la suivante:

kind: Service apiVersion: v1 metadata: name: ingress-nginx labels: k8s-addon: ingress-nginx.addons.k8s.io annotations: service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*' spec: type: LoadBalancer selector: app: ingress-nginx ports: - name: http port: 80 targetPort: http - name: https port: 443 targetPort: https - name: port8888 port: 8888 targetPort: 8888 --- kind: ConfigMap apiVersion: v1 metadata: name: ingress-nginx labels: k8s-addon: ingress-nginx.addons.k8s.io data: use-proxy-protocol: "true" 8888: "default/some-api:8888" --- kind: Deployment apiVersion: extensions/v1beta1 metadata: name: ingress-nginx labels: k8s-addon: ingress-nginx.addons.k8s.io spec: replicas: 1 template: metadata: labels: app: ingress-nginx k8s-addon: ingress-nginx.addons.k8s.io spec: terminationGracePeriodSeconds: 60 containers: - image: gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.11 name: ingress-nginx imagePullPolicy: Always ports: - name: http containerPort: 80 protocol: TCP - name: https containerPort: 443 protocol: TCP - name: port8888 containerPort: 8888 protocol: TCP livenessProbe: httpGet: path: /healthz port: 10254 scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 5 env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace args: - /nginx-ingress-controller - --default-backend-service=$(POD_NAMESPACE)/nginx-default-backend - --configmap=$(POD_NAMESPACE)/ingress-nginx - --publish-service=$(POD_NAMESPACE)/ingress-nginx 

La ligne 8888: "default/some-api:8888" est conforme à l’exemple d’entrée comme on peut le voir ici: https://github.com/kubernetes/consortingb/blob/master/ingress/controllers/nginx/examples/ tcp / tcp-configmap-example.yaml

J’ai également ajouté le port 8888 à la liste des ports de l’équilibreur de charge et du déploiement proprement dit.

Le code du service est le suivant:

 apiVersion: v1 kind: Service metadata: name: some-api labels: name: some-api spec: ports: - port: 8888 selector: name: some-api --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: some-api-dply spec: replicas: 1 template: metadata: labels: name: some-api spec: containers: - name: some-api-container image: [url-ommited] ports: - containerPort: 8888 hostPort: 8888 

Remarque: Dans AWS, dans la page Listeners de Load Balancer, la configuration est définie sur:

 LB Protocol | Port | Inst. Protocol | Inst. Port TCP | 8888 | TCP | 32585 

Le code d’entrée ressemble à ceci:

 apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: ingress.kubernetes.io/rewrite-target: / name: rewrite namespace: default spec: rules: - host: "*.elb.amazonaws.com" http: paths: - backend: serviceName: some-api servicePort: 8888 path: /