kubeshop / kusk-gateway

Kusk-gateway is an OpenAPI-driven API Gateway for Kubernetes
https://kubeshop.github.io/kusk-gateway/
MIT License
253 stars 21 forks source link

Devportal not available #1024

Open jasmingacic opened 1 year ago

jasmingacic commented 1 year ago

When installing kusk I get following output:

kusk-gateway-envoy-fleet               LoadBalancer   10.43.147.8     147.75.87.209   80:31039/TCP,443:32504/TCP      4m
...
kusk-devportal-envoy-fleet             LoadBalancer   10.43.81.45     <pending>       80:31701/TCP,443:30471/TCP      3m49s

devportal get assigned to the same port as the dashboard rendering it inaccessible

mbana commented 1 year ago

Summary

Error on first installation but on second installation after installing LoadBalancer configuration, I got an IP for for kusk-devportal-envoy-fleet

Log

I got this error on first installation (I tried twice and on second fresh install, I didn't see this error):

./cmd/kusk/kusk cluster install           
🚀 Installing Kusk in your cluster
  ✔  Installing Kusk Gateway                                                                                                                                                                                                                                                                                                                                               
  ✔  Installing Envoyfleet                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing API Server                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing Dashboard                                                                                                                                                                                                                                                                                                                                                  
  â ‹  Installing Kusk Developer Portal... (0s)resource mapping not found for name: "kusk-devportal-envoy-fleet" namespace: "kusk-system" from "/tmp/cmd/kusk/manifests/devportal.yaml": no matches for kind "EnvoyFleet" in version "gateway.kusk.io/v1alpha1"                                                                                                              
ensure CRDs are installed first
resource mapping not found for name: "kusk-devportal" namespace: "kusk-system" from "/tmp/cmd/kusk/manifests/devportal.yaml": no matches for kind "StaticRoute" in version "gateway.kusk.io/v1alpha1"
ensure CRDs are installed first

But when I reinstalled it:

./cmd/kusk/kusk cluster install
Kusk is already installed in the cluster.

Reinstalling components.

🚀 Installing Kusk in your cluster
  ✔  Installing Kusk Gateway                                                                                                                                                                                                                                                                                                                                               
  ✔  Installing Envoyfleet                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing API Server                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing Dashboard                                                                                                                                                                                                                                                                                                                                                  
  ✔  Installing Kusk Developer Portal                                                                                                                                                                                                                                                                                                                                      

🎉 Installation complete

💡 Access the dashboard by using the following command
👉 kusk dashboard

💡 Deploy your first API
👉 kusk deploy -i <path or url to your api definition>

💡 Access Help and useful examples to help get you started
👉 kusk --help
$ kubectl get svc -A
NAMESPACE     NAME                                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
default       kubernetes                             ClusterIP      10.96.0.1        <none>        443/TCP                         5m15s
kube-system   kube-dns                               ClusterIP      10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP          5m14s
kusk-system   kusk-devportal                         ClusterIP      10.110.107.238   <none>        80/TCP                          3m26s
kusk-system   kusk-devportal-envoy-fleet             LoadBalancer   10.100.219.36    <pending>     80:30768/TCP,443:31873/TCP      17s
kusk-system   kusk-gateway-api                       ClusterIP      10.99.17.155     <none>        80/TCP,8081/TCP                 3m40s
kusk-system   kusk-gateway-dashboard                 ClusterIP      10.101.237.39    <none>        80/TCP                          3m26s
kusk-system   kusk-gateway-envoy-fleet               LoadBalancer   10.96.89.174     <pending>     80:32028/TCP,443:30619/TCP      3m40s
kusk-system   kusk-gateway-manager                   ClusterIP      10.99.233.64     <none>        18000/TCP,19000/TCP,17000/TCP   3m53s
kusk-system   kusk-gateway-manager-metrics-service   ClusterIP      10.96.24.19      <none>        8443/TCP                        3m53s
kusk-system   kusk-gateway-private-envoy-fleet       ClusterIP      10.96.81.146     <none>        80/TCP,443/TCP                  3m26s
kusk-system   kusk-gateway-webhooks-service          ClusterIP      10.98.175.3      <none>        443/TCP                         3m53s

Apply LoadBalancer configuration:

$ kubectl apply -f fission/config-map-metallb.yaml                              
configmap/config configured

config-map-metallb.txt

After I apply LoadBalancer configuration:

$ kubectl get svc -A
NAMESPACE     NAME                                   TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                         AGE
default       kubernetes                             ClusterIP      10.96.0.1        <none>         443/TCP                         5m33s
kube-system   kube-dns                               ClusterIP      10.96.0.10       <none>         53/UDP,53/TCP,9153/TCP          5m32s
kusk-system   kusk-devportal                         ClusterIP      10.110.107.238   <none>         80/TCP                          3m44s
kusk-system   kusk-devportal-envoy-fleet             LoadBalancer   10.100.219.36    192.168.49.2   80:30768/TCP,443:31873/TCP      35s
kusk-system   kusk-gateway-api                       ClusterIP      10.99.17.155     <none>         80/TCP,8081/TCP                 3m58s
kusk-system   kusk-gateway-dashboard                 ClusterIP      10.101.237.39    <none>         80/TCP                          3m44s
kusk-system   kusk-gateway-envoy-fleet               LoadBalancer   10.96.89.174     192.168.49.3   80:32028/TCP,443:30619/TCP      3m58s
kusk-system   kusk-gateway-manager                   ClusterIP      10.99.233.64     <none>         18000/TCP,19000/TCP,17000/TCP   4m11s
kusk-system   kusk-gateway-manager-metrics-service   ClusterIP      10.96.24.19      <none>         8443/TCP                        4m11s
kusk-system   kusk-gateway-private-envoy-fleet       ClusterIP      10.96.81.146     <none>         80/TCP,443/TCP                  3m44s
kusk-system   kusk-gateway-webhooks-service          ClusterIP      10.98.175.3      <none>         443/TCP                         4m11s

cURLing the endpoint:

curl 192.168.49.2     
<!DOCTYPE html><html id="__next_error__"><head><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" nomodule=""></script></head><body><script src="/_next/static/chunks/webpack-c283a1c7b929b23c.js" async=""></script><script src="/_next/static/chunks/17-c8ddf26145914539.js" async=""></script><script src="/_next/static/chunks/main-app-f7991bdf5a7d528d.js" async=""></script></body></html><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"M1:{\"id\":\"7954\",\"name\":\"\",\"chunks\":[\"272:webpack-c283a1c7b929b23c\",\"17:17-c8ddf26145914539\",\"744:main-app-f7991bdf5a7d528d\"],\"async\":false}\nM2:{\"id\":\"9875\",\"name\":\"\",\"chunks\":[\"272:webpack-c283a1c7b929b23c\",\"17:17-c8ddf26145914539\",\"744:main-app-f7991bdf5a7d528d\"],\"async\":false}\nM3:{\"id\":\"91\",\"chunks\":[\"601:app/error-2e70dbec76a8f993\"],\"name\":\"default\",\"async\":true}\nM4:{\"id\":\"2092\",\"name\":\"\",\"chunks\":[\"272:webpack-c283a1c7b929b23c\",\"17:17-c8ddf26145914539\",\"744:main-app-f7991bdf5a7d528d\"],\"async\":false}\n"])</script><script>self.__next_f.push([1,"J0:[\"$\",\"@1\",null,{\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/\",\"initialTree\":[\"\",{\"children\":[\"\",{}]},null,null,true],\"initialHead\":[[\"$\",\"title\",null,{\"children\":\"Create Next App\"}],[\"$\",\"meta\",null,{\"content\":\"width=device-width, initial-scale=1\",\"name\":\"viewport\"}],[\"$\",\"meta\",null,{\"name\":\"description\",\"content\":\"Generated by create next app\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/KuskLogo.svg\"}]],\"children\":[[],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ab44ce7add5c3d11.css\",\"precedence\":\"high\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{}],[\"$\",\"body\",null,{\"children\":[\"$\",\"@2\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$3\",\"errorStyles\":[],\"hasLoading\":false,\"template\":[\"$\",\"@4\",null,{}],\"notFound\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"-apple-system, BlinkMacSystemFont, Roboto, \\\"Segoe UI\\\", \\\"Fira Sans\\\", Avenir, \\\"Helvetica Neue\\\", \\\"Lucida Grande\\\", sans-serif\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n            body { margin: 0; color: #000; background: #fff; }\\n            .next-error-h1 {\\n              border-right: 1px solid rgba(0, 0, 0, .3);\\n            }\\n\\n            @media (prefers-color-scheme: dark) {\\n              body { color: #fff; background: #000; }\\n              .next-error-h1 {\\n                border-right: 1px solid rgba(255, 255, 255, .3);\\n              }\\n            }\\n          \"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":0,\"marginRight\":\"20px\",\"padding\":\"0 23px 0 0\",\"fontSize\":\"24px\",\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\",\"textAlign\":\"left\",\"lineHeight\":\"49px\",\"height\":\"49px\",\"verticalAlign\":\"middle\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":\"normal\",\"lineHeight\":\"49px\",\"margin\":0,\"padding\":0},\"children\":\"This page could not be found.\"}]}]]}]]}],\"childProp\":{\"current\":[[],[],\"@5\"],\"segment\":\"\"},\"rootLayoutIncluded\":true}]}],[\"$\",\"script\",null,{\"type\":\"module\",\"src\":\"https://unpkg.com/rapidoc/dist/rapidoc-min.js\",\"async\":true}]]}]]}]\n"])</script><script>self.__next_f.push([1,"J5:\"@6\"\nE6:{\"digest\":\"2368634408\"}\n"])</script>%

Versions

$ ./cmd/kusk/kusk version
Kusk version 1.5.2
https://github.com/kubeshop/kusk-gateway/releases/tag/v1.5.2

kubeshop/kusk-gateway-dashboard:v1.2.5
kubeshop/kusk-gateway:v1.5.2
gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
kubeshop/kusk-devportal:v0.1.2
docker.io/envoyproxy/envoy:v1.23.1
kubeshop/kusk-gateway-api:v1.2.2
kubeshop/kusk-gateway-api-websocket:v1.2.2
$ minikube version
minikube version: v1.26.1
commit: 62e108c3dfdec8029a890ad6d8ef96b6461426dc
$ kubectl version --short
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.25.4
Kustomize Version: v4.5.7
Server Version: v1.24.3
jasmingacic commented 1 year ago

judging by this

./cmd/kusk/kusk cluster install           
🚀 Installing Kusk in your cluster
  ✔  Installing Kusk Gateway                                                                                                                                                                                                                                                                                                                                               
  ✔  Installing Envoyfleet                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing API Server                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing Dashboard                                                                                                                                                                                                                                                                                                                                                  
  â ‹  Installing Kusk Developer Portal... (0s)resource mapping not found for name: "kusk-devportal-envoy-fleet" namespace: "kusk-system" from "/tmp/cmd/kusk/manifests/devportal.yaml": no matches for kind "EnvoyFleet" in version "gateway.kusk.io/v1alpha1"                                                                                                              
ensure CRDs are installed first
resource mapping not found for name: "kusk-devportal" namespace: "kusk-system" from "/tmp/cmd/kusk/manifests/devportal.yaml": no matches for kind "StaticRoute" in version "gateway.kusk.io/v1alpha1"
ensure CRDs are installed first

we didn't update manifest data or something else we need to test this locally again

mbana commented 1 year ago

judging by this

./cmd/kusk/kusk cluster install           
🚀 Installing Kusk in your cluster
  ✔  Installing Kusk Gateway                                                                                                                                                                                                                                                                                                                                               
  ✔  Installing Envoyfleet                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing API Server                                                                                                                                                                                                                                                                                                                                                 
  ✔  Installing Dashboard                                                                                                                                                                                                                                                                                                                                                  
  â ‹  Installing Kusk Developer Portal... (0s)resource mapping not found for name: "kusk-devportal-envoy-fleet" namespace: "kusk-system" from "/tmp/cmd/kusk/manifests/devportal.yaml": no matches for kind "EnvoyFleet" in version "gateway.kusk.io/v1alpha1"                                                                                                              
ensure CRDs are installed first
resource mapping not found for name: "kusk-devportal" namespace: "kusk-system" from "/tmp/cmd/kusk/manifests/devportal.yaml": no matches for kind "StaticRoute" in version "gateway.kusk.io/v1alpha1"
ensure CRDs are installed first

we didn't update manifest data or something else we need to test this locally again

mmm ... that has happened once so far. You're right however, we need to handle this case.

If it happens again, I'll update this issue with logs.

monkpit commented 1 year ago

This just happened to me while trying to evaluate Kusk. Re-running the command worked.