Update samples to not use Ingress. (#60)

* Update samples to not use Ingress.

This is follow-up of https://github.com/knative/serving/pull/1228.  We
moved to Istio v1alpha3 / Gateway which requires a different way to
get the external IP address to send traffic to our samples.

* Also update the command to find service domain.
This commit is contained in:
Nghia Tran 2018-07-02 14:07:17 -07:00 committed by Mustafa Demirhan
parent c57f006f4c
commit b97fa65aec
19 changed files with 205 additions and 125 deletions

View File

@ -29,14 +29,14 @@ kubectl apply -f sample/autoscale/sample.yaml
``` ```
Export your Ingress IP as SERVICE_IP. Export your ingress IP as SERVICE_IP.
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the ingress Host name into an environment variable.
export SERVICE_HOST=`kubectl get route autoscale-route -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route autoscale-route -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get ingress autoscale-route-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
Request the largest prime less than 40,000,000 from the autoscale app. Note that it consumes about 1 cpu/sec. Request the largest prime less than 40,000,000 from the autoscale app. Note that it consumes about 1 cpu/sec.

View File

@ -55,21 +55,21 @@ Once the `BuildComplete` status becomes `True` the resources will start getting
To access this service via `curl`, we first need to determine its ingress address: To access this service via `curl`, we first need to determine its ingress address:
```shell ```shell
$ watch kubectl get ing $ watch kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
buildpack-sample-app-ingress buildpack-app.example.com 80 3m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you can run: Once the `ADDRESS` gets assigned to the cluster, you can run:
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route buildpack-sample-app -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route buildpack-sample-app -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
$ export SERVICE_IP=`kubectl get ingress buildpack-sample-app-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
# Curl the Ingress IP "as-if" DNS were properly configured. # Curl the ingress IP "as-if" DNS were properly configured.
$ curl --header "Host: $SERVICE_HOST" http://${SERVICE_IP}/ $ curl --header "Host: $SERVICE_HOST" http://${SERVICE_IP}/
[response] [response]
``` ```

View File

@ -54,21 +54,22 @@ Once the `BuildComplete` status becomes `True` the resources will start getting
To access this service via `curl`, we first need to determine its ingress address: To access this service via `curl`, we first need to determine its ingress address:
```shell ```shell
$ watch kubectl get ing watch kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
buildpack-function-ingress buildpack-function.default.example.com 0.0.0.0 80 3m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you can run: Once the `EXTERNAL-IP` gets assigned to the cluster, you can run:
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
$ export SERVICE_HOST=`kubectl get route buildpack-function -o jsonpath="{.status.domain}"` $ export SERVICE_HOST=`kubectl get route buildpack-function -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
$ export SERVICE_IP=`kubectl get ingress buildpack-function-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` $ export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
# Curl the Ingress IP "as-if" DNS were properly configured.
# Curl the ingress IP "as-if" DNS were properly configured.
$ curl http://${SERVICE_IP}/ -H "Host: $SERVICE_HOST" -H "Content-Type: application/json" -d "33" $ curl http://${SERVICE_IP}/ -H "Host: $SERVICE_HOST" -H "Content-Type: application/json" -d "33"
[response] [response]
``` ```

View File

@ -47,14 +47,14 @@ kubectl get revisions -o yaml
``` ```
To make this service accessible to github, we first need to determine its ingress address To make this service accessible to github, we first need to determine its ingress address
(might have to wait a little while until 'ADDRESS' gets assigned): (might have to wait a little while until `EXTERNAL-IP` gets assigned):
```shell ```shell
$ watch kubectl get ingress watch kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
git-webhook-ingress demostuff.aikas.org 35.202.30.59 80 14s knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you need to assign a DNS name for that IP address. Once the `EXTERNAL-IP` gets assigned to the cluster, you need to assign a DNS name for that IP address.
[Using GCP DNS](https://support.google.com/domains/answer/3290350) [Using GCP DNS](https://support.google.com/domains/answer/3290350)
So, you'd need to create an A record for demostuff.aikas.org pointing to 35.202.30.59. So, you'd need to create an A record for demostuff.aikas.org pointing to 35.202.30.59.

View File

@ -37,11 +37,11 @@ kubectl apply -f sample/grpc-ping/sample.yaml
1. Fetch the created ingress hostname and IP. 1. Fetch the created ingress hostname and IP.
``` ```
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route grpc-ping -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route grpc-ping -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get ingress grpc-ping-ela-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
1. Use the client to send message streams to the gRPC server 1. Use the client to send message streams to the gRPC server

View File

@ -115,15 +115,24 @@ folder) you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use `kubectl get ing` to 1. To find the IP address for your service, use
list the ingress points in the cluster. It may take a few seconds for the `kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
ingress point to be created. cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-csharp-ingress helloworld-csharp.default.example.com 35.232.134.1 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
```
1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-csharp -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-csharp helloworld-csharp.default.example.com
``` ```
1. Now you can make a request to your app to see the result. Replace 1. Now you can make a request to your app to see the result. Replace

View File

@ -126,15 +126,24 @@ folder) you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use `kubectl get ing` to 1. To find the IP address for your service, use
list the ingress points in the cluster. It may take a few seconds for the `kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
ingress point to be created. cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-go-ingress helloworld-go.default.example.com,*.helloworld-go.default.example.com 35.232.134.1 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
```
1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-go -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-go helloworld-go.default.example.com
``` ```
1. Now you can make a request to your app to see the results. Replace 1. Now you can make a request to your app to see the results. Replace

View File

@ -139,15 +139,24 @@ folder) you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use `kubectl get ing` to 1. To find the IP address for your service, use
list the ingress points in the cluster. It may take a few seconds for the `kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
ingress point to be created. cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-java-ingress helloworld-java.default.example.com 35.232.134.1 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
```
1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-java -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-java helloworld-java.default.example.com
``` ```
1. Now you can make a request to your app to see the result. Replace 1. Now you can make a request to your app to see the result. Replace

View File

@ -157,15 +157,24 @@ folder) you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use `kubectl get ing` to 1. To find the IP address for your service, use
list the ingress points in the cluster. It may take a few seconds for the `kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
ingress point to be created. cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-nodejs-ingress helloworld-nodejs.default.example.com 35.232.134.1 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
```
1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-nodejs -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-nodejs helloworld-nodejs.default.example.com
``` ```
1. Now you can make a request to your app to see the result. Replace 1. Now you can make a request to your app to see the result. Replace
@ -182,4 +191,4 @@ To remove the sample app from your cluster, delete the service record:
```shell ```shell
kubectl delete -f service.yaml kubectl delete -f service.yaml
``` ```

View File

@ -69,7 +69,7 @@ following instructions recreate the source files from this folder.
## Building and deploying the sample ## Building and deploying the sample
Once you have recreated the sample code files (or used the files in the sample folder) Once you have recreated the sample code files (or used the files in the sample folder)
you're ready to build and deploy the sample app. you're ready to build and deploy the sample app.
1. Use Docker to build the sample code into a container. To build and push with 1. Use Docker to build the sample code into a container. To build and push with
@ -98,13 +98,24 @@ you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use kubectl to list the ingress points in the cluster: 1. To find the IP address for your service, use
`kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-php-ingress helloworld-php.default.example.com,*.helloworld-php.default.example.com 35.232.134.1 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
```
1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-php -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-php helloworld-php.default.example.com
``` ```
1. Now you can make a request to your app to see the result. Replace 1. Now you can make a request to your app to see the result. Replace

View File

@ -15,7 +15,7 @@ TARGET is not specified, it will use "NOT SPECIFIED" as the TARGET.
## Steps to recreate the sample code ## Steps to recreate the sample code
While you can clone all of the code from this directory, hello world apps are While you can clone all of the code from this directory, hello world apps are
generally more useful if you build them step-by-step. generally more useful if you build them step-by-step.
The following instructions recreate the source files from this folder. The following instructions recreate the source files from this folder.
1. Create a new directory and cd into it: 1. Create a new directory and cd into it:
@ -110,16 +110,27 @@ folder) you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use kubectl to list the ingress points in the cluster: 1. To find the IP address for your service, use
`kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
NAME HOSTS ADDRESS PORTS AGE
helloworld-python-ingress helloworld-python.default.example.com,*.helloworld-python.default.example.com 35.232.134.1 80 1m
``` ```
1. Now you can make a request to your app to see the result. Replace `{IP_ADDRESS}` 1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-python -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-python helloworld-python.default.example.com
```
1. Now you can make a request to your app to see the result. Replace `{IP_ADDRESS}`
with the address you see returned in the previous step. with the address you see returned in the previous step.
```shell ```shell

View File

@ -14,8 +14,8 @@ TARGET is not specified, it will use "NOT SPECIFIED" as the TARGET.
## Steps to recreate the sample code ## Steps to recreate the sample code
While you can clone all of the code from this directory, hello world apps are While you can clone all of the code from this directory, hello world apps are
generally more useful if you build them step-by-step. generally more useful if you build them step-by-step.
The following instructions recreate the source files from this folder. The following instructions recreate the source files from this folder.
1. Create a new directory and cd into it: 1. Create a new directory and cd into it:
@ -38,7 +38,7 @@ The following instructions recreate the source files from this folder.
end end
``` ```
1. Create a file named `Dockerfile` and copy the code block below into it. 1. Create a file named `Dockerfile` and copy the code block below into it.
See [official Ruby docker image](https://hub.docker.com/_/ruby/) for more details. See [official Ruby docker image](https://hub.docker.com/_/ruby/) for more details.
```docker ```docker
@ -66,7 +66,7 @@ The following instructions recreate the source files from this folder.
gem 'sinatra' gem 'sinatra'
``` ```
1. Run bundle. If you don't have bundler installed, copy the 1. Run bundle. If you don't have bundler installed, copy the
[Gemfile.lock](./Gemfile.lock) to your working directory. [Gemfile.lock](./Gemfile.lock) to your working directory.
```shell ```shell
@ -96,7 +96,7 @@ The following instructions recreate the source files from this folder.
## Build and deploy this sample ## Build and deploy this sample
Once you have recreated the sample code files (or used the files in the sample folder) Once you have recreated the sample code files (or used the files in the sample folder)
you're ready to build and deploy the sample app. you're ready to build and deploy the sample app.
1. Use Docker to build the sample code into a container. To build and push with 1. Use Docker to build the sample code into a container. To build and push with
@ -125,16 +125,27 @@ you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use kubectl to list the ingress points in the cluster: 1. To find the IP address for your service, use
`kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
NAME HOSTS ADDRESS PORTS AGE
helloworld-ruby-ingress helloworld-ruby.default.example.com,*.helloworld-ruby.default.example.com 35.232.134.1 80 1m
``` ```
1. Now you can make a request to your app to see the result. Replace `{IP_ADDRESS}` 1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-ruby -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-ruby helloworld-ruby.default.example.com
```
1. Now you can make a request to your app to see the result. Replace `{IP_ADDRESS}`
with the address you see returned in the previous step. with the address you see returned in the previous step.
```shell ```shell

View File

@ -32,7 +32,7 @@ following instructions recreate the source files from this folder.
``` ```
1. Create a `src` folder, then create a new file named `main.rs` in that folder 1. Create a `src` folder, then create a new file named `main.rs` in that folder
and paste the following code. This code creates a basic web server which and paste the following code. This code creates a basic web server which
listens on port 8080: listens on port 8080:
```rust ```rust
@ -141,15 +141,24 @@ folder) you're ready to build and deploy the sample app.
* Network programming to create a route, ingress, service, and load balance for your app. * Network programming to create a route, ingress, service, and load balance for your app.
* Automatically scale your pods up and down (including to zero active pods). * Automatically scale your pods up and down (including to zero active pods).
1. To find the URL and IP address for your service, use `kubectl get ing` to 1. To find the IP address for your service, use
list the ingress points in the cluster. It may take a few seconds for the `kubectl get svc knative-ingressgateway -n istio-system` to get the ingress IP for your
ingress point to be created. cluster. If your cluster is new, it may take sometime for the service to get asssigned
an external IP address.
```shell ```shell
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld-rust-ingress helloworld-rust.default.example.com 35.232.134.1 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
```
1. To find the URL for your service, use
```
kubectl get services.serving.knative.dev helloworld-rust -o=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
NAME DOMAIN
helloworld-rust helloworld-rust.default.example.com
``` ```
1. Now you can make a request to your app to see the result. Replace 1. Now you can make a request to your app to see the result. Replace

View File

@ -157,19 +157,18 @@ As with the other demos, you can confirm that things work by capturing the IP
of the ingress endpoint: of the ingress endpoint:
``` ```
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route private-repos \ export SERVICE_HOST=`kubectl get route private-repos \
-o jsonpath="{.status.domain}"` -o jsonpath="{.status.domain}"`
export SERVICE_IP=`kubectl get ing private-repos-ingress \ export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
-o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"`
``` ```
If your cluster is running outside a cloud provider (for example on Minikube), If your cluster is running outside a cloud provider (for example on Minikube),
your ingress will never get an address. In that case, use the istio `hostIP` and `nodePort` as the service IP: your services will never get an external IP address. In that case, use the istio `hostIP` and `nodePort` as the service IP:
```shell ```shell
export SERVICE_IP=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}') export SERVICE_IP=$(kubectl get po -l knative=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')
``` ```
Now curl the service IP as if DNS were properly configured: Now curl the service IP as if DNS were properly configured:

View File

@ -44,26 +44,26 @@ Once the `BuildComplete` status becomes `True` the resources will start getting
To access this service via `curl`, we first need to determine its ingress address: To access this service via `curl`, we first need to determine its ingress address:
```shell ```shell
$ watch kubectl get ing $ watch kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
steren-sample-app-ingress steren-sample-app.default.example.net 80 3m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you can run: Once the `EXTERNAL-IP` gets assigned to the cluster, you can run:
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route steren-sample-app -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route steren-sample-app -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get ingress steren-sample-app-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
If your cluster is running outside a cloud provider (for example on Minikube), If your cluster is running outside a cloud provider (for example on Minikube),
your ingress will never get an address. In that case, use the istio `hostIP` and `nodePort` as the service IP: your services will never get an external IP address. In that case, use the istio `hostIP` and `nodePort` as the service IP:
```shell ```shell
export SERVICE_IP=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}') export SERVICE_IP=$(kubectl get po -l knative=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')
``` ```
Now curl the service IP as if DNS were properly configured: Now curl the service IP as if DNS were properly configured:

View File

@ -43,26 +43,26 @@ Once the `BuildComplete` status becomes `True` the resources will start getting
To access this service via `curl`, we first need to determine its ingress address: To access this service via `curl`, we first need to determine its ingress address:
```shell ```shell
$ watch kubectl get ing $ watch kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
steren-sample-fn-ingress steren-sample-fn.default.example.net 80 3m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you can run: Once the `ADDRESS` gets assigned to the cluster, you can run:
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route steren-sample-fn -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route steren-sample-fn -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get ingress steren-sample-fn-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
If your cluster is running outside a cloud provider (for example on Minikube), If your cluster is running outside a cloud provider (for example on Minikube),
your ingress will never get an address. In that case, use the istio `hostIP` and `nodePort` as the service IP: your services will never get an external IP address. In that case, use the istio `hostIP` and `nodePort` as the service IP:
```shell ```shell
export SERVICE_IP=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}') export SERVICE_IP=$(kubectl get po -l knative=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')
``` ```
Now curl the service IP as if DNS were properly configured: Now curl the service IP as if DNS were properly configured:

View File

@ -52,31 +52,31 @@ kubectl get revisions -o yaml
To access this service via `curl`, we first need to determine its ingress address: To access this service via `curl`, we first need to determine its ingress address:
```shell ```shell
watch kubectl get ingress watch get svc knative-ingressgateway -n istio-system
``` ```
When the ingress is ready, you'll see an IP address in the ADDRESS field: When the service is ready, you'll see an IP address in the EXTERNAL-IP field:
``` ```
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
stock-route-example-ingress stock-route-example.default.example.com 35.185.44.102 80 1m knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you can run: Once the `ADDRESS` gets assigned to the cluster, you can run:
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the host name into an environment variable.
export SERVICE_HOST=`kubectl get route stock-route-example -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route stock-route-example -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get ingress stock-route-example-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
If your cluster is running outside a cloud provider (for example on Minikube), If your cluster is running outside a cloud provider (for example on Minikube),
your ingress will never get an address. In that case, use the istio `hostIP` and `nodePort` as the service IP: your services will never get an external IP address. In that case, use the istio `hostIP` and `nodePort` as the service IP:
```shell ```shell
export SERVICE_IP=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}') export SERVICE_IP=$(kubectl get po -l knative=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')
``` ```
Now curl the service IP as if DNS were properly configured: Now curl the service IP as if DNS were properly configured:

View File

@ -52,21 +52,21 @@ kubectl get revisions -o yaml
To access this service via `curl`, we first need to determine its ingress address: To access this service via `curl`, we first need to determine its ingress address:
```shell ```shell
watch kubectl get ingress watch kubectl get svc knative-ingressgateway -n istio-system
NAME HOSTS ADDRESS PORTS AGE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
telemetrysample-route-ingress telemetrysample.myhost.net 80 14s knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Once the `ADDRESS` gets assigned to the cluster, you can run: Once the `EXTERNAL-IP` gets assigned to the cluster, you can run:
```shell ```shell
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route telemetrysample-route -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route telemetrysample-route -o jsonpath="{.status.domain}"`
# Put the Ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get ingress telemetrysample-route-ingress -o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
# Curl the Ingress IP "as-if" DNS were properly configured. # Curl the ingress IP "as-if" DNS were properly configured.
curl --header "Host:$SERVICE_HOST" http://${SERVICE_IP} curl --header "Host:$SERVICE_HOST" http://${SERVICE_IP}
Hello World! Hello World!
``` ```

View File

@ -117,7 +117,9 @@ Once `BuildComplete` has a `status: "True"`, the revision will get deployed as i
To confirm that the app deployed, you can check for the Knative Serving service using `kubectl`. First, is there an ingress service: To confirm that the app deployed, you can check for the Knative Serving service using `kubectl`. First, is there an ingress service:
``` ```
kubectl get ing kubectl get svc knative-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
knative-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229 80:32380/TCP,443:32390/TCP,32400:32400/TCP 2d
``` ```
Sometimes the newly deployed app may take few seconds to initialize. You can check its status like this Sometimes the newly deployed app may take few seconds to initialize. You can check its status like this
@ -129,18 +131,18 @@ kubectl -n default get pods
The Knative Serving ingress service will automatically be assigned an IP so let's capture that IP so we can use it in subsequent `curl` commands The Knative Serving ingress service will automatically be assigned an IP so let's capture that IP so we can use it in subsequent `curl` commands
``` ```
# Put the Ingress Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route thumb -o jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route thumb -o jsonpath="{.status.domain}"`
export SERVICE_IP=`kubectl get ing thumb-ingress \ # Put the ingress IP into an environment variable.
-o jsonpath="{.status.loadBalancer.ingress[*]['ip']}"` export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
If your cluster is running outside a cloud provider (for example on Minikube), If your cluster is running outside a cloud provider (for example on Minikube),
your ingress will never get an address. In that case, use the istio `hostIP` and `nodePort` as the service IP: your services will never get an external IP address. In that case, use the istio `hostIP` and `nodePort` as the service IP:
```shell ```shell
export SERVICE_IP=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}') export SERVICE_IP=$(kubectl get po -l knative=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')
``` ```
> To make the JSON service responses more readable consider installing [jq](https://stedolan.github.io/jq/), makes JSON pretty > To make the JSON service responses more readable consider installing [jq](https://stedolan.github.io/jq/), makes JSON pretty