fabric8 icon indicating copy to clipboard operation
fabric8 copied to clipboard

nginx-ingress stuck: "does not have ingress points"

Open nicolaiskogheim opened this issue 7 years ago • 6 comments

$ gofabric8 version
gofabric8, version 0.4.176 (branch: 'unknown', revision: 'homebrew')
build date:       '20171110-18:14:07'
go version:       '1.9.2'

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-16T03:15:08Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/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"}

$ uname -a
Darwin machine_name 15.6.0 Darwin Kernel Version 15.6.0: Mon Oct  2 22:20:08 PDT 2017; root:xnu-3248.71.4~1/RELEASE_X86_64 x86_64 i386 MacBookAir6,2 Darwin

$ docker --version # on my local machine
Docker version 17.11.0-ce, build 1caf76c

$ docker --version # on cluster
Docker version 17.03.1-ce, build c6d412e

I realise that it's ambitious to think that fabric8 will work with k8s 1.9, but despite the issue on init-containers being out of beta I thought I'd give it a shot.

Steps to reproduce

$ gofabric8 deploy --package system --http=true --legacy=false -n fabric8 
# In another terminal (because previous command hangs)
$ kubectl apply nginx-ingress-permissions.yaml # See below for this file

The gofabric8 deploy command never completes:

gofabric8 output

Deploying fabric8 to your Kubernetes installation at https://192.168.13.175:6443 for domain  in namespace fabric8

Loading fabric8 releases from maven repository:https://repo1.maven.org/maven2/
Continue? [Y/n]
Creating new Namespace: fabric8
No endpoints found for service nginx-ingress
Deploying package: ingress version: 4.0.208

Template APISERVER_HOSTPORT = 192.168.13.175:6443
Template NODE_IP = 192.168.13.175
Template EXPOSER =
Template DOMAIN = 192.168.13.175.nip.io
Template GITHUB_OAUTH_CLIENT_SECRET =
Template GITHUB_OAUTH_CLIENT_ID =
Template HTTP =
Template TLS_ACME_DATA =
Template APISERVER = 192.168.13.175
Template OAUTH_AUTHORIZE_PORT = 6443
Template NAMESPACE = nginx-ingress
Creating ingress template resources in namespace nginx-ingress from 9 objects
Processing resource kind: Namespace in namespace nginx-ingress name nginx-ingress
Processing resource kind: ServiceAccount in namespace nginx-ingress name nginx-ingress-serviceaccount
Processing resource kind: Service in namespace nginx-ingress name default-backend
Processing resource kind: Service in namespace nginx-ingress name nginx-ingress
Processing resource kind: ConfigMap in namespace nginx-ingress name fabric8-system
Processing resource kind: ConfigMap in namespace nginx-ingress name nginx-ingress
Processing resource kind: ConfigMap in namespace nginx-ingress name nginx-tmpl
Processing resource kind: Deployment in namespace nginx-ingress name default-backend
Processing resource kind: Deployment in namespace nginx-ingress name nginx-ingress
ingress.......................................................................✔
Waiting for External LoadBalancer IP Address for service nginx-ingress in namespace nginx-ingress.  This may take a few minutes.If you are running your own ingress controller please run deploy again passing the --ingress=false flag.

The nginx-ingress doesn't have permissions to see other services in its namespace so I gave it permissions:

nginx-ingress-permissions.yaml

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
    namespace: nginx-ingress
    name: fabric8-nginx-ingress-user
rules:
- apiGroups: [""]
  resources: ["services"]
  verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
    name: fabric8-nginx-user
    namespace: nginx-ingress
roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: fabric8-nginx-ingress-user
subjects:
- kind: ServiceAccount
  name: nginx-ingress-serviceaccount
  namespace: nginx-ingress

Now the nginx-ingress service/deployment enters CrashLoopBackOff. It says something about missing ingress points and then dies.

nginx-ingress pod log


[dumb-init] Unable to detach from controlling tty (errno=25 Inappropriate ioctl for device).
[dumb-init] Child spawned with PID 7.
[dumb-init] Unable to attach to controlling tty (errno=25 Inappropriate ioctl for device).
[dumb-init] setsid complete.
I1228 15:31:58.225440       7 launch.go:105] &{NGINX 0.9.0-beta.11 git-a3131c5 https://github.com/kubernetes/ingress}
I1228 15:31:58.225483       7 launch.go:108] Watching for ingress class: nginx
I1228 15:31:58.225779       7 nginx.go:182] starting NGINX process...
I1228 15:31:58.226482       7 launch.go:262] Creating API server client for https://10.96.0.1:443
I1228 15:31:58.238746       7 launch.go:124] validated nginx-ingress/default-backend as the default backend
F1228 15:31:58.240834       7 launch.go:134] service nginx-ingress/nginx-ingress does not (yet) have ingress points
[dumb-init] Received signal 17.
[dumb-init] A child with PID 7 exited with exit status 255.
[dumb-init] Forwarded signal 15 to children.
[dumb-init] Child exited with status 255. Goodbye.

I understand that this issue may be down prioritised, but I though I'd file the issue anyway.

nicolaiskogheim avatar Dec 28 '17 16:12 nicolaiskogheim

gofabric8 validate after killing gofabric8 deploy ...:

Validating your Kubernetes installation at https://192.168.13.175:6443 in namespace default

Service account......................................✘ serviceaccounts "fabric8" not found
Console..............................................✘ deployments.extensions "fabric8" not found
Jenkinshift Service..................................✘ services "jenkinshift" not found
PersistentVolumeClaims...............................✔
ConfigMaps...........................................✔

nicolaiskogheim avatar Dec 28 '17 16:12 nicolaiskogheim

I just switched out the nginx images with the newest releases. default-backend now runs gcr.io/google_containers/defaultbackend:1.4 and nginx-ingress runs quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.9.0 That didn't fix the issue 😁

nginx-ingress pod log

NGINX Ingress controller
  Release:    0.9.0
  Build:      git-6816630
  Repository: https://github.com/kubernetes/ingress-nginx
-------------------------------------------------------------------------------
 I1228 17:36:15.712435       6 main.go:227] Creating API client for https://10.96.0.1:443
I1228 17:36:15.725464       6 main.go:239] Running in Kubernetes Cluster version v1.9 (v1.9.0) - git (clean) commit 925c127ec6b946659ad0fd596fa959be43f0cc05 - platform linux/amd64
I1228 17:36:15.727908       6 main.go:83] validated nginx-ingress/default-backend as the default backend
F1228 17:36:15.729824       6 main.go:101] service nginx-ingress/nginx-ingress does not (yet) have ingress points

nicolaiskogheim avatar Dec 28 '17 17:12 nicolaiskogheim

Hi did you figured out how to solve this ? I also had same problem

sh-4.2# kubectl logs nginx-ingress-7ddc99b46c-6b9wk --namespace nginx-ingress [dumb-init] Unable to detach from controlling tty (errno=25 Inappropriate ioctl for device). [dumb-init] Child spawned with PID 5. [dumb-init] Unable to attach to controlling tty (errno=25 Inappropriate ioctl for device). [dumb-init] setsid complete. I0202 07:42:29.973603 5 launch.go:105] &{NGINX 0.9.0-beta.11 git-a3131c5 https://github.com/kubernetes/ingress} I0202 07:42:29.973632 5 launch.go:108] Watching for ingress class: nginx I0202 07:42:29.973813 5 launch.go:262] Creating API server client for https://10.96.0.1:443 I0202 07:42:29.976995 5 nginx.go:182] starting NGINX process... I0202 07:42:29.986773 5 launch.go:124] validated nginx-ingress/default-backend as the default backend F0202 07:42:29.987821 5 launch.go:134] service nginx-ingress/nginx-ingress does not (yet) have ingress points [dumb-init] Received signal 17. [dumb-init] A child with PID 5 exited with exit status 255. [dumb-init] Forwarded signal 15 to children. [dumb-init] Child exited with status 255. Goodbye.

BTW, do you know what docker version and k8s version are workable for latest gofabric8 ?

shuang-x-zhao-gj avatar Feb 02 '18 07:02 shuang-x-zhao-gj

I never figured out how to get rid of service nginx-ingress/nginx-ingress does not (yet) have ingress points.

And I never got fabric8 working. I think I was close, but I never figured out what value to give to PROXY_PASS_URL, which I mention here: https://github.com/fabric8-ui/fabric8-ui-openshift-nginx/issues/16

nicolaiskogheim avatar Feb 02 '18 10:02 nicolaiskogheim

Because init-containers in k8s was deprecated in 1.6 or something, I suppose you'll have to use 1.5. I never bothered trying that.

nicolaiskogheim avatar Feb 02 '18 10:02 nicolaiskogheim

well, thx, anyway, i tried docker 17+k8s 1.9, docker 1.12 + k8s 1.7.2, i didn't make it work, and i searched on website, i see someone successfully make it work on k8s 1.7.2 or 1.7.3 ... that's sad it is really hard to set up this platform, it should be easy...

shuang-x-zhao-gj avatar Feb 02 '18 10:02 shuang-x-zhao-gj