Azure / draft-classic

A tool for developers to create cloud-native applications on Kubernetes.
https://draft.sh
MIT License
3.93k stars 397 forks source link

Draft Up can not ADD jar dependency failed from Dockerfile #777

Closed quantum-fusion closed 6 years ago

quantum-fusion commented 6 years ago

These are the steps that I am using to test DRAFT.

%git clone https://github.com/quantum-fusion/springboot_swagger_example-master-cassandra

%mvn clean install -DskipTests

%draft create

%draft up

Results Fail: draft up Draft Up Started: 'springboot_swagger_example-master-cassandra': 01CE78545ZSNAVCWTZGSYX69RJ springboot_swagger_example-master-cassandra: Building Docker Image: FAIL ❌ (7.0014s) Inspect the logs with draft logs 01CE78545ZSNAVCWTZGSYX69RJ

Trace results: draft logs 01CE78545ZSNAVCWTZGSYX69RJ 2018/05/23 15:38:53 error while building: Error response from daemon: Cannot locate specified Dockerfile: Dockerfile 2018/05/23 15:38:53 complete: failed to store build object for app "springboot_swagger_example-master-cassandra": ConfigMap "springboot_swagger_example-master-cassandra" is invalid: metadata.name: Invalid value: "springboot_swagger_example-master-cassandra": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is 'a-z0-9?(.a-z0-9?)*')

Question: I added a symbolic link for the Dockerfile.lrwxr-xr-x 1 me staff 24 May 23 15:36 Dockerfile -> ./dockerbuild/Dockerfile

Errata question: Is there something wrong with DRAFT that doesn't either see the symbolic link, or some other reason that DRAFT isn't seeing the Dockerfile when I use the draft up command?

quantum-fusion commented 6 years ago

@squillace @bacongobbler @radu-matei This was the stock java example.

This was the transcript: minikube start helm init cd $HOME/draft/examples/example-spring-boot draft create draft up Draft Up Started: 'example-spring-boot': 01CESC1PTH7BPVD46TWC2H341R example-spring-boot: Building Docker Image: SUCCESS ⚓ (115.0699s) example-spring-boot: Pushing Docker Image: SUCCESS ⚓ (44.5014s) example-spring-boot: Releasing Application: SUCCESS ⚓ (2.3197s) Inspect the logs with draft logs 01CESC1PTH7BPVD46TWC2H341R

draft connect Error: cannot get pod with buildID 01CESC1PTH7BPVD46TWC2H341R: timed out

quantum-fusion commented 6 years ago

@squillace @radu-matei This is draft connect issue is just like #776 for python, except this is for the java spring boot example.

bacongobbler commented 6 years ago

it looks like a recent change to the java pack fixed example-java, but broke example-spring-boot: https://github.com/Azure/draft/pull/749

Sorry that you hit this. For the time being, I'd suggest using another example app instead like example-java. I'll make a PR to remove the spring boot app for now until we have a better solution in place.

related: #727

squillace commented 6 years ago

No, it is not. The resolution for that one, as I read it, is that you did not have enough resources in minikube to run the application, so the pod did not get scheduled. While you didn't realize you didn't have enough, the python app worked properly when you freed up resources.

this one is just a bug in the container call. Per https://github.com/Azure/draft/issues/777#issuecomment-393323382, just now.

squillace commented 6 years ago

I'm THRILLED, however, that we are finding the bugs so that we can fix them.

quantum-fusion commented 6 years ago

@squillace @bacongobbler I am glad to help, and you have the proper accounting and score now. Squillace is right, the python example was out of resources, the java spring boot bug is different, but bacon gobbler is on top of it now.

quantum-fusion commented 6 years ago

@squillace @bacongobbler I was so thrilled to get my Microsoft Developer tour coffee cup, and I have the video footage of the draft example, and the showcase of kubernetes with minecraft. I haven't been able to resurrect that demo yet from developer conference, but figured we can stew on these example test cases for starters. I know there is a GitHub repo out there too from developer tour that we had in DC.

squillace commented 6 years ago

Where did you catch the tour? whoops: DC. do you remember who did the demos?

quantum-fusion commented 6 years ago

@squillace The Developer tour was here in Washington, DC.

quantum-fusion commented 6 years ago

@squillace @bacongobbler

This testcase was executed draft/examples/example-java

draft up Draft Up Started: 'example-java': 01CEWAK959YJF3ZF8EPYZ9YNZ7 example-java: Building Docker Image: SUCCESS ⚓ (1.0002s) example-java: Pushing Docker Image: SUCCESS ⚓ (80.3250s) example-java: Releasing Application: SUCCESS ⚓ (2.5402s) Inspect the logs with draft logs 01CEWAK959YJF3ZF8EPYZ9YNZ7 MacBook-Pro-2:example-java $ draft connect Connect to java:4567 on localhost:63562 [java]: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". [java]: SLF4J: Defaulting to no-operation (NOP) logger implementation [java]: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. [java]: == Spark has ignited ... [java]: >> Listening on 0.0.0.0:4567

Web Browser: http://localhost:63562 Hello World, I'm Java!

Therefore the results are a success for /example/example-java

Conclusion: I recommend that you put a bug fix into draft/examples/example-spring-boot to fix the Dockerfile and bindings for that test case.

bacongobbler commented 6 years ago

We're removing the spring boot app for the time being, since we just need one example java app for demonstration purposes. Thank you SO much for the feedback!

quantum-fusion commented 6 years ago

@berndverst @ruthieyakubu @squillace See the Developer tour DC lineup, and links.

screen shot 2018-06-01 at 9 52 37 am screen shot 2018-06-01 at 9 52 56 am

berndverst commented 6 years ago

Just FYI

@quantum-fusion The Minecraft demo during our first developer tour was a deployment using Helm and just using Kubernetes directly. (It was being deployed to AKS) https://github.com/kubernetes/charts/tree/master/stable/minecraft

When I demo'd draft I deployed a Python Flask application. I of course know that Draft Pack inside out, so I know my app is being started with app.py which must spawn a HTTP server. For something more real world you'd definitely want to provide your own Draft pack. Never tried the Java Draft packs myself.

Please also note that Draft has changed quite a bit since the DC Dev Tour event.