diff --git a/docs/getting_started/tutorials/graphql.md b/docs/getting_started/tutorials/graphql.md index 8208586..5972580 100644 --- a/docs/getting_started/tutorials/graphql.md +++ b/docs/getting_started/tutorials/graphql.md @@ -467,7 +467,7 @@ data: Let's review some parts of these resources. Think of the Environment as a parent of Virtual Environments (we'll call Virtual -Environments VEs for short). Environment variables defined in the Environment +Environments "VEs" for short). Environment variables defined in the Environment resource will be inherited by VEs, but can also be overridden in VEs. The Environment is largely a convenience, relieving you from defining the same values repeatedly in the VEs (e.g., DB connection strings). @@ -717,6 +717,16 @@ center in the screen in Figure 2).
Figure 2 - Pods display after Fox publish
+A few things to note: + +1. We've deployed our App - `graphql-server` - once, and we have a single Pod + running. +2. There are 3 Pods running with 3 different databases: + + 1. `hasura-dev` - Traffic to the `dev` VE will be routed to this database + 2. `hasura-john` - Traffic to the `dev-john` VE will be routed to this database + 3. `hasura-prod` - Traffic to the `prod` VE will be routed to this database + Typically, connections to KubeFox Apps are made through a public-facing load balancer. To keep things simple for purposes of this tutorial, we'll use the Fox CLI to create a local proxy instead. Note that we're going to leave the proxy @@ -1410,15 +1420,19 @@ We receive an immediate error: error 😖 Error finding commit hash: uncommitted changes present ``` -Remember that KubeFox works from the repository outward. We discussed the fact -that it inspects the repository, detects changes, and publishes only those -changes that it finds. It also ensures that when we try to publish to a -VE that has a Stable release policy, that we're publishing what we -intend to publish. +KubeFox ensures that when we try to publish to a VE that has a Stable +release policy, that we're publishing what we intend to publish. The deployment +must be versioned and built from a tag in the repository (KubeFox helps with +that as you can see above). + +Concerning the uncommitted changes message - remember that KubeFox works from +the repository outward. We discussed the fact that KubeFox inspects the +repository, detects changes, and publishes only those changes that it finds. If +uncommitted changes are present, KubeFox will halt the publish operation until +that situation is resolved in the repository. -Remember that we made a change earlier to uncomment subPath in dev.yaml. We -need to deal with that before we can publish. In our case, let's simply commit -the changes and republish: +Remember that we made a change earlier to uncomment subPath in dev.yaml? That's +the pending change with which we need to deal before we can publish. In our case, let's simply commit the changes and republish: ```{ .shell .copy } git add . && \ @@ -1523,9 +1537,10 @@ This is a common occurrence when working with a KubeFox App. It is not incumbent on the developer, QA or build staff to determine what has changed and modify CI/CD accordingly. Instead, staff simply publishes, and KubeFox handles the rest. Besides being an enormous timesaver, this approach lends itself to far -greater accuracy during development cycles. +greater accuracy during development cycles. Additionally, provisioning is +controlled in a largely seamless manner. -KubeFox did create a new AppDeployment, with the name "graphql-v1": +KubeFox did create a new AppDeployment, with the name `graphql-v1`: ```text hl_lines="14" kind: AppDeployment @@ -1568,8 +1583,8 @@ Let's take a look at our AppDeployments. On k9s, type `:appdeployments`. We have two AppDeployments: -1. graphql-main - the development version of our App -2. graphql-v1 - the production version of our App +1. `graphql-main` - the development version of our App +2. `graphql-v1` - the production version of our App Let's take a look at the browser. First, let's try the dev VE. @@ -2150,7 +2165,8 @@ highlighted in Figure 28. Let’s check out the results. If we go to the dev-john VE and don't provide query parameters, there should not be a gender column. -The reason is that we have not yet performed a release - we only published. +The reason is that we have not yet performed a release - we only published. So +the released version is our original deployment - `graphql-main`. [http://localhost:8080/john/hasura/heroes](http://localhost:8080/john/hasura/heroes){:target="_blank"} @@ -2159,7 +2175,10 @@ The reason is that we have not yet performed a release - we only published.
Figure 29 - dev-john VE after gender mod but before release
-The App in dev-john is unchanged. As it should be. We can access our modifications with query parameters though. +The App in dev-john is unchanged. As it should be. + +Our new deploying with our gender modifications - `graphql-feature` - is running +and we can access it. We just need to include query parameters on the URL. [http://localhost:8080/john/hasura/heroes?kf-dep=graphql-feature&kf-ve=dev-john](http://localhost:8080/john/hasura/heroes?kf-dep=graphql-feature&kf-ve=dev-john){:target="_blank"} @@ -2360,7 +2379,7 @@ KubeFox, we do a Fox publish. This operation is going to update the status: "False" type: Progressing ``` -Because dev is already using the graphql-main AppDeployment, we should see that +Because dev is already using the `graphql-main` AppDeployment, we should see that dev is updated with the new feature. Let's check it and see. [http://localhost:8080/dev/hasura/heroes](http://localhost:8080/dev/hasura/heroes){:target="_blank"} @@ -2375,14 +2394,12 @@ prototyping and POC efforts. You can make changes and redeploy, and the VE will reflect those changes instantly. Note that this is only permissable with a release policy of Testing. ---- - ## Exploring KubeFox VEs To further explore this KubeFox superpower, let's do the following: 1. Modify the `dev.yaml` to change the subPath to `something`. Remember that it's - currently inheriting the subPath from the dev Environment, which is `dev`. + currently inheriting the subPath (`dev`) from the dev Environment. 2. Apply the Environment YAML. 3. Check what we see. @@ -2769,19 +2786,19 @@ two versions of our App. If we look at our AppDeployments (`:appdeployments`), we see that there are 4 AppDeployments: -1. Our graphql-main deployment -2. Our first release AppDeployment graphql-v1 -3. Our feature deployment graphql-feature -4. Our just-released AppDeployment graphql-v2 +1. Our `graphql-main` deployment +2. Our first release AppDeployment `graphql-v1` +3. Our feature deployment `graphql-feature` +4. Our just-released AppDeployment `graphql-v2`
Figure 43 - Active Pods after our v2 release
-No one is using the graphql-v1 AppDeployment anymore, so let's delete it: +No one is using the `graphql-v1` AppDeployment anymore, so let's delete it: -1. Use the ++up++ or ++down++ arrow keys to highlight the graphql-v1 AppDeployment +1. Use the ++up++ or ++down++ arrow keys to highlight the `graphql-v1` AppDeployment 2. Hit ++ctrl+d++ to delete it