mirror of https://github.com/knative/docs.git
Document xip.io with ambassador. (#1839)
Note that I haven't been able to verify this due to: https://github.com/datawire/ambassador/issues/1871
This commit is contained in:
parent
aad87199b3
commit
026acebf9f
|
@ -27,21 +27,15 @@ The following commands install all available Knative components as well as the
|
||||||
standard set of observability plugins. To customize your Knative installation,
|
standard set of observability plugins. To customize your Knative installation,
|
||||||
see Performing a Custom Knative Installation.
|
see Performing a Custom Knative Installation.
|
||||||
|
|
||||||
1. To install Knative, first install the CRDs by running the `kubectl apply`
|
1. To install Knative, first install the CRDs by running the following `kubectl apply`
|
||||||
command once with the `-l knative.dev/crd-install=true` flag. This prevents
|
command. This prevents race conditions during the install, which cause intermittent errors:
|
||||||
race conditions during the install, which cause intermittent errors:
|
|
||||||
|
|
||||||
kubectl apply -l knative.dev/crd-install=true \
|
kubectl apply --filename https://github.com/knative/serving/releases/download/{{< version >}}/serving-crds.yaml
|
||||||
--filename https://github.com/knative/serving/releases/download/{{< version >}}/serving.yaml \
|
|
||||||
--filename https://github.com/knative/serving/releases/download/{{< version >}}/monitoring.yaml
|
|
||||||
|
|
||||||
2. To complete the install of Knative and its dependencies, run the
|
2. To complete the install of Knative and its dependencies, next run the
|
||||||
`kubectl apply` command again, this time without the
|
following `kubectl apply` command:
|
||||||
`-l knative.dev/crd-install=true`:
|
|
||||||
|
|
||||||
kubectl apply \
|
kubectl apply --filename https://github.com/knative/serving/releases/download/{{< version >}}/serving-core.yaml
|
||||||
--filename https://github.com/knative/serving/releases/download/{{< version >}}/serving.yaml \
|
|
||||||
--filename https://github.com/knative/serving/releases/download/{{< version >}}/monitoring.yaml
|
|
||||||
|
|
||||||
3. Monitor the Knative namespaces and wait until all of the pods come up with a
|
3. Monitor the Knative namespaces and wait until all of the pods come up with a
|
||||||
`STATUS` of `Running`:
|
`STATUS` of `Running`:
|
||||||
|
@ -62,15 +56,19 @@ service mesh.
|
||||||
You can install Ambassador with `kubectl`:
|
You can install Ambassador with `kubectl`:
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl apply -f https://getambassador.io/yaml/ambassador/ambassador-knative.yaml
|
kubectl apply \
|
||||||
kubectl apply -f https://getambassador.io/yaml/ambassador/ambassador-service.yaml
|
--filename https://getambassador.io/yaml/ambassador/ambassador-knative.yaml \
|
||||||
|
--filename https://getambassador.io/yaml/ambassador/ambassador-service.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Ambassador will watch for and create routes based off of Knative
|
## Configuring DNS
|
||||||
`ClusterIngress` resources. These will then be accessible over the external IP
|
|
||||||
address of the Ambassador service you just created.
|
|
||||||
|
|
||||||
Get this external IP address and save it in a variable named `AMBASSADOR_IP`
|
Installing Ambassador will create a Kubernetes Service with type `LoadBalancer`.
|
||||||
|
This may take some time to get an IP address assigned, during this process it
|
||||||
|
will appear as `<pending>`. You must wait for this IP address to be assigned
|
||||||
|
before DNS may be set up.
|
||||||
|
|
||||||
|
Get this external IP address with:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ kubectl get svc ambassador
|
$ kubectl get svc ambassador
|
||||||
|
@ -78,7 +76,28 @@ $ kubectl get svc ambassador
|
||||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||||
ambassador LoadBalancer 10.59.246.30 35.229.120.99 80:32073/TCP 13m
|
ambassador LoadBalancer 10.59.246.30 35.229.120.99 80:32073/TCP 13m
|
||||||
|
|
||||||
$ AMBASSADOR_IP=35.229.120.99
|
```
|
||||||
|
|
||||||
|
This external IP can be used with your DNS provider with a wildcard `A` record;
|
||||||
|
however, for a basic functioning DNS setup (not suitable for production!) this
|
||||||
|
external IP address can be added to the `config-domain` ConfigMap in
|
||||||
|
`knative-serving`. You can edit this with the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
kubectl edit cm config-domain --namespace knative-serving
|
||||||
|
```
|
||||||
|
|
||||||
|
Given the external IP above, change the content to:
|
||||||
|
```
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: config-domain
|
||||||
|
namespace: knative-serving
|
||||||
|
data:
|
||||||
|
# xip.io is a "magic" DNS provider, which resolves all DNS lookups for:
|
||||||
|
# *.{ip}.xip.io to {ip}.
|
||||||
|
35.229.120.99.xip.io: ""
|
||||||
```
|
```
|
||||||
|
|
||||||
## Deploying an Application
|
## Deploying an Application
|
||||||
|
@ -116,22 +135,20 @@ route traffic to a serverless application.
|
||||||
|
|
||||||
`Knative Service`s are exposed via a `Host` header assigned by Knative. By
|
`Knative Service`s are exposed via a `Host` header assigned by Knative. By
|
||||||
default, Knative will assign the `Host`:
|
default, Knative will assign the `Host`:
|
||||||
`{service-name}.{namespace}.example.com`. You can verify this by checking the
|
`{service-name}.{namespace}.{the domain we setup above}`. You can see this
|
||||||
`EXTERNAL-IP` of the `helloworld-go` service created above.
|
with:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ kubectl get service helloworld-go
|
$ kubectl get ksvc helloworld-go
|
||||||
|
NAME URL LATESTCREATED LATESTREADY READY REASON
|
||||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
helloworld-go http://helloworld-go.default.34.83.124.52.xip.io helloworld-go-nwblj helloworld-go-nwblj True
|
||||||
helloworld-go ExternalName <none> helloworld-go.default.example.com <none> 32m
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Ambassador will use this `Host` header to route requests to the correct
|
You can send a request to the `helloworld-go` service with curl
|
||||||
service. You can send a request to the `helloworld-go` service with curl
|
using the `URL` given above:
|
||||||
using the `Host` and `AMBASSADOR_IP` from above:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ curl -H "Host: helloworld-go.default.example.com" $AMBASSADOR_IP
|
$ curl http://helloworld-go.default.34.83.124.52.xip.io
|
||||||
|
|
||||||
Hello Go Sample v1!
|
Hello Go Sample v1!
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue