Closed Kubik42 closed 6 years ago
@Kubik42 I updated the guide based on your feedback and checked off the boxes that I completed, but I have some questions/concerns about some of the feedback.
can you combine windows and unix commands into a single listing block? You can add comments about the commands to specify what platform they are meant for
@evelinec was against this... can you verify how you want this to be displayed please @evelinec ?
If you observe any errors, run the command one more time and it should succeed without any errors." -> this is kind of weird. Does the command fail often on its first try? Is there a reason why? Is there a workout/way to avoid this problem?
~This issue happens roughly 20% of the time I'd say.~ No longer an issue, I'll remove this from the guide.
Separate docker images into its own listing block so its easier to see and copy. Separate kubectl get deployments into its own listing block so its easier to see and copy.
Why would the user want to copy command output?
Users might not have curl available. Can they just visit that URL in a regular browser tab?
No, but they could use postman instead: https://www.getpostman.com/
Remove the block comments from the test listing block. You can do this by surrounding the comments in tags and then excluding those tags in the adoc.
I don't really understand, can you elaborate please?
Break down each test case that you added.
Don't I already do this?
Why repeat the tests three times? Does routing not always work? Is routing inconsistent? Thats really weird if it is.
I explained it, is it unclear?
Why would the user want to copy command output?
you have mark command output with role="no_copy"
to make them uncopiable
No, but they could use postman instead: https://www.getpostman.com/
ok
I don't really understand, can you elaborate please?
in you listing block, you can see the comments above the methods:
You can remove these by adding tags to your file and then removing those tags in your include
statement in your adoc.
Don't I already do this?
I meant make it more clear. For example, "The lol()
test case verifies..." for each test case that you have.
I explained it, is it unclear?
I know that you did, but it seems weird to me that this is necessary. Are you saying the routing rules may not always work? If you're demonstrating how something is done, it should work, so there is not need to rerun the test multiple times.
@evelinec Can you confirm if you want the unix/windows blocks split up, or if you want them together with a comment to distinguish them?
Just last few bits:
diff -ra finish/inventory/pom.xml start/inventory/pom.xml
8c8
< <version>2.0-SNAPSHOT</version>
---
> <version>1.0-SNAPSHOT</version>
54a55,125
> <!-- Start system service before running tests -->
> <profile>
> <id>setup-test</id>
> <activation>
> <activeByDefault>true</activeByDefault>
> </activation>
> <build>
> <plugins>
> <plugin>
> <groupId>org.codehaus.mojo</groupId>
> <artifactId>exec-maven-plugin</artifactId>
> <version>${version.exec-maven-plugin}</version>
> <executions>
> <execution>
> <id>test-start-system-service</id>
> <goals>
> <goal>exec</goal>
> </goals>
> <phase>pre-integration-test</phase>
> <configuration>
> <workingDirectory>../system</workingDirectory>
> <executable>mvn${mvn.extension}</executable>
> <arguments>
> <argument>liberty:start-server</argument>
> </arguments>
> </configuration>
> </execution>
> </executions>
> </plugin>
>
> <!-- Build docker image -->
> <plugin>
> <groupId>com.spotify</groupId>
> <artifactId>dockerfile-maven-plugin</artifactId>
> </plugin>
> </plugins>
> </build>
> </profile>
>
> <!-- Stop system service after running tests -->
> <profile>
> <id>teardown-test</id>
> <activation>
> <activeByDefault>true</activeByDefault>
> </activation>
> <build>
> <plugins>
> <plugin>
> <groupId>org.codehaus.mojo</groupId>
> <artifactId>exec-maven-plugin</artifactId>
> <version>${version.exec-maven-plugin}</version>
> <executions>
> <execution>
> <id>test-stop-system-service</id>
> <goals>
> <goal>exec</goal>
> </goals>
> <phase>post-integration-test</phase>
> <configuration>
> <workingDirectory>../system</workingDirectory>
> <executable>mvn${mvn.extension}</executable>
> <arguments>
> <argument>liberty:stop-server</argument>
> </arguments>
> </configuration>
> </execution>
> </executions>
> </plugin>
> </plugins>
> </build>
> </profile>
page-seo-title
and page-seo-description
role="no_copy"
to these:
Re question about having unix/windows blocks split up, or having them together with a comment to distinguish them. Confirmed with @proubatsis that these commands are copy-able and user needs to run them. For that, I'd prefer them being split up for ease of use.
@Kubik42 I fixed the inconsistency in the pom file, I also fixed all the issues you brought up. Can you verify that all of your concerns have been addressed please?
Here are my final comments:
Why use Istio?
Starting and preparing your cluster for Deployment
Deploying version 1 of the services to cluster
kubernetes.yaml
kubectl get deployments
. Like "Which produces a list of Deployments for your two microservices"Configure request routing
Can you also address the last three points in my previous comment?
@Kubik42 https://github.com/OpenLiberty/draft-guide-istio/commit/d965c00a1afcc0579e1188a764693568d05b06e7
Looks good!
Pre-everything
page-tags:
contain{kube}
which will not render because the variablekube
is defined later in the guideminikube-ip
variable is never used in the adoc.page-tags
and addistioctl
sincekubectl
is also there.General/other
You need to add a copyright statement + tag into these files.
inventory
andsystem
.What you’ll learn
system
service does in the second paragraph as you did with theinventory
serviceWhat is Istio?
Why use Istio?
Prerequisites
istioctl
Starting and preparing your cluster for Deployment
istio-system
namespace should be created. Is it for organizational purposes? If so, make sure that state that.kubectl apply
command does, as well as whatistio.yaml
is and what it creates.kubectl get deployments
does and what exactly the user should be looking for after they run that command.Deploying version 1 of the services to cluster
mvn clean package
does; ie. "Run the mvn clean package command to build your microservice"mvn clean package
builds a Docker image; ie. that it uses thedockerfile-maven
profile to build a Docker image as part of the Mavenpackage
phase.docker images
into its own listing block so its easier to see and copy.inventory
andsystem
microservice that are packaged into their respective Docker images.kubernetes.yaml
is for. For example, "Thekubernetes.yaml
configuration file contains configuration for various Kuberntes objects. In this case, it contains..., which can be broken down as so:".
minikube ip
and the port # via the port thats mapped under your service, which you can see after runningkubectl get service
. - [ ] Also, does this command work on Windows?http://ip-address:port
tohttp://<cluster-ip>:<nodePort>
for it to be more obvious that its a generalized URL, and that its user-specific.kubectl get deployments
into its own listing block so its easier to see and copy.Modify and deploy version 2 of the service
/inventory/systems
endpoint responds with a JSON in the following form"kubernetes.yaml
. Can you mention the name of the object(s) as well?curl
available. Can they just visit that URL in a regular browser tab?Configure request routing
routing.yaml
file by running the given command."curl
commands into their own listing blocks so they are easier to see and copy.Testing microservices that are running on Kubernetes
Results :
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0