Skip to content

Commit a8939a0

Browse files
committed
feat(workflow): add gateway docs
1 parent aec75e2 commit a8939a0

9 files changed

Lines changed: 50 additions & 32 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ This repository contains the source code for Drycc Workflow documentation. If yo
1010

1111
Please see below for links and descriptions of each component:
1212

13+
- [gateway](https://github.com/drycc/gateway) - Workflow gateway charts
1314
- [passport](https://github.com/drycc/passport) - Workflow single sign on system
1415
- [controller](https://github.com/drycc/controller) - Workflow API server
1516
- [builder](https://github.com/drycc/builder) - Git server and source-to-image component

mkdocs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ nav:
1717
- Components: understanding-workflow/components.md
1818
- Installing To Kubenetes:
1919
- System Requirements: installing-workflow/system-requirements.md
20-
- Installing Ingress: installing-workflow/ingress.md
20+
- Installing Gateway: installing-workflow/gateway.md
2121
- Installing Workflow: installing-workflow/index.md
2222
- Configuring Object Storage: installing-workflow/configuring-object-storage.md
2323
- Configuring Postgres: installing-workflow/configuring-postgres.md
@@ -35,6 +35,7 @@ nav:
3535
- Managing App Configuration: applications/managing-app-configuration.md
3636
- Managing App Lifecycle: applications/managing-app-lifecycle.md
3737
- Managing App Volumes: applications/managing-app-volumes.md
38+
- Managing App Gateway: applications/managing-app-gateway.md
3839
- Managing App Resources: applications/managing-app-resources.md
3940
- Inter-app Communication: applications/inter-app-communication.md
4041
- Resource Limits: applications/managing-resource-limits.md
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# About gateway for an Application
2+
3+
A Gateway describes how traffic can be translated to Services within the cluster. That is, it defines a request for a way to translate traffic from somewhere that does not know about Kubernetes to somewhere that does. For example, traffic sent to a Kubernetes Service by a cloud load balancer, an in-cluster proxy, or an external hardware load balancer. While many use cases have client traffic originating “outside” the cluster, this is not a requirement.
4+
5+
## Create Gateway for an Application
6+
7+
Gateway is a way of exposing services externally, which generates an external IP address to connect route and service.
8+
9+
## Create service for an Application
10+
11+
Service is a way of exposing services internally, creating a service generates an internal DNS that can access `procfile_type`.
12+
13+
## Create Route for an Application
14+
15+
A Gateway may be attached to one or more Route references which serve to direct traffic for a subset of traffic to a specific service.

src/applications/ssl-certificates.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,6 @@ remove the certificate from Drycc and re-run the `certs:add` command.
196196

197197
[RapidSSL]: https://www.rapidssl.com/
198198
[buy an SSL certificate with RapidSSL]: https://www.rapidssl.com/buy-ssl/
199-
[platform-ssl]: https://kubernetes.io/docs/concepts/services-networking/ingress/
199+
[platform-ssl]: https://gateway-api.sigs.k8s.io/guides/tls/
200200
[root CAs]: https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/included/
201201
[intermediary certificates]: http://en.wikipedia.org/wiki/Intermediate_certificate_authorities
Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# Specify Ingress
1+
# Specify Gateway
22

3-
## Install Drycc Workflow (Specify ingress)
3+
## Install Drycc Workflow (Specify gateway)
44

5-
Now that Helm is installed and the repository has been added, install Workflow with a native ingress by running:
5+
Now that Helm is installed and the repository has been added, install Workflow with a native gateway by running:
66

77
```
88
$ helm install drycc oci://registry.drycc.cc/charts/workflow \
99
--namespace drycc \
10-
--set global.ingressClass=nginx \
10+
--set global.gatewayClass=istio \
1111
--set global.platformDomain=drycc.cc \
1212
--set builder.service.type=LoadBalancer
1313
```
@@ -16,7 +16,7 @@ Of course, if you deploy it on a bare machine, you probably do not have Load Bal
1616
```
1717
$ helm install drycc oci://registry.drycc.cc/charts/workflow \
1818
--namespace drycc \
19-
--set global.ingressClass=nginx \
19+
--set global.gatewayClass=istio \
2020
--set global.platformDomain=drycc.cc \
2121
--set builder.service.type=NodePort \
2222
--set builder.service.nodePort=32222
@@ -33,10 +33,10 @@ Wait for the pods that Helm launched to be ready. Monitor their status by runnin
3333
$ kubectl --namespace=drycc get pods
3434
```
3535

36-
You should also notice that several Kubernetes ingresses has been installed on your cluster. You can view it by running:
36+
You should also notice that several Kubernetes gatewayclass has been installed on your cluster. You can view it by running:
3737

3838
```
39-
$ kubectl get ingress --namespace drycc
39+
$ kubectl get gatewayclass --namespace drycc
4040
```
4141

4242
Depending on the order in which the Workflow components initialize, some pods may restart. This is common during the
@@ -55,44 +55,46 @@ drycc-database-rad1o 1/1 Running 0 5m
5555
drycc-logger-fluentd-1v8uk 1/1 Running 0 5m
5656
drycc-logger-fluentd-esm60 1/1 Running 0 5m
5757
drycc-logger-sm8b3 1/1 Running 0 5m
58-
drycc-storage-4ww3t 1/1 Running 0 5m
58+
drycc-storage-4ww3t 1/1 Running 0 5m
5959
drycc-registry-asozo 1/1 Running 1 5m
6060
drycc-rabbitmq-0 1/1 Running 0 5m
6161
```
6262

63-
## Install a Kubernetes Ingress Controller
63+
## Install a Kubernetes Gateway
6464

65-
Now that Workflow has been deployed with the `global.ingressClass` , we will need a Kubernetes ingress controller in place to begin routing traffic.
65+
Now that Workflow has been deployed with the `global.gatewayClass` , we will need a Kubernetes gateway in place to begin routing traffic.
6666

67-
Here is an example of how to use [traefik](https://traefik.io/) as an ingress controller for Workflow. Of course, you are welcome to use any controller you wish.
67+
Here is an example of how to use [istio](https://istio.io/) as an gateway for Workflow. Of course, you are welcome to use any controller you wish.
6868

6969
```
70-
$ helm install traefik oci://registry.drycc.cc/charts/traefik \
71-
--name ingress \
72-
--namespace kube-system \
73-
--set ssl.enabled=true
70+
$ helm repo add istio https://istio-release.storage.googleapis.com/charts
71+
$ helm repo update
72+
$ kubectl create namespace istio-system
73+
$ helm install istio-base istio/base -n istio-system
74+
$ helm install istiod istio/istiod -n istio-system --wait
75+
$ kubectl create namespace istio-ingress
76+
$ helm install istio-ingress istio/gateway -n istio-ingress --wait
7477
```
7578

7679
## Configure DNS
7780

78-
User must to set up a hostname, and assumes the `*.$host` convention.
81+
User must install [drycc](../quickstart/install-workflow.md) and then set up a hostname, and assumes the `*.$host` convention.
7982

80-
We need to point the `*.$host` record to the public IP address of your ingress controller. You can get the public IP using the following command. A wildcard entry is necessary here as apps will use the same rule after they are deployed.
83+
We need to point the `*.$host` record to the public IP address of your gateway. You can get the public IP using the following command. A wildcard entry is necessary here as apps will use the same rule after they are deployed.
8184

8285
```
83-
$ kubectl get svc ingress-traefik --namespace kube-system
84-
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
85-
ingress-traefik 10.0.25.3 138.91.243.152 80:31625/TCP,443:30871/TCP 33m
86+
$ kubectl get gateway --namespace drycc
87+
NAME CLASS ADDRESS PROGRAMMED AGE
88+
gateway istio 138.91.243.152 True 36d
8689
```
8790

88-
8991
If we were using `drycc.cc` as a hostname, we would need to create the following A DNS records.
9092

9193
| Name | Type | Value |
9294
| ---------------------------- |:-------------:| --------------:|
9395
| *.drycc.cc | A | 138.91.243.152 |
9496

95-
Once all of the pods are in the `READY` state, and `*.$host` resolves to the external IP found above, the preparation of ingress has been completed!
97+
Once all of the pods are in the `READY` state, and `*.$host` resolves to the external IP found above, the preparation of gateway has been completed!
9698

9799
After installing Workflow, [register a user and deploy an application](../quickstart/deploy-an-app.md).
98100

src/installing-workflow/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ More rigorous installations would benefit from using outside sources for the fol
3333
* [Redis](../managing-workflow/platform-logging.md#configuring-off-cluster-redis) - Such as AWS Elasticache
3434
* [InfluxDB](../managing-workflow/platform-monitoring.md#configuring-off-cluster-influxdb) and [Grafana](../managing-workflow/platform-monitoring.md#off-cluster-grafana)
3535

36-
#### Ingress
36+
#### Gateway
3737

38-
Now, workflow requires that ingress and cert-manager must be installed. Any compatible Kubernetes entry controller can be used, but only ingress-nginx and ingress-traefik currently support enforced HTTPS and allowlist. Enable entries in accordance with [this guide](./ingress.md).
38+
Now, workflow requires that gateway and cert-manager must be installed. Any compatible Kubernetes entry controller can be used.
3939

4040
## Install Drycc Workflow
4141

src/installing-workflow/system-requirements.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ Drycc Workflow requires Kubernetes v1.16.15 or later.
88

99
## Components Requirements
1010

11-
Drycc uses ingress as a routing implementation, so you have to choose an ingress.
12-
We recommend using [nginx-ingress](https://github.com/helm/charts/tree/master/stable/nginx-ingress) or [traefik-ingress](https://github.com/helm/charts/tree/master/stable/traefik), which we have adapted to allowlist and force TLS functions.
11+
Drycc uses gateway as a routing implementation, so you have to choose an gateway. We recommend using [istio](https://istio.io/) or [kong](https://konghq.com/).
1312

1413
Workflow supports the use of ACME to manage automatic certificates, [cert-manager](https://github.com/helm/charts/tree/master/stable/cert-manager) is also one of the necessary components, if you use cert-manager EAB, you need to set the `clusterResourceNamespace` to the namespace of drycc.
1514

src/managing-workflow/configuring-dns.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ DNS for any applications using a "custom domain" (a fully-qualified domain name
2323
Although it is dependent upon your distribution of Kubernetes and your underlying infrastructure, in many cases, the IP(s) or existing fully-qualified domain name of a load balancer can be determined directly using the `kubectl` tool:
2424

2525
```
26-
$ kubectl --namespace=ingress-nginx describe service | grep "LoadBalancer Ingress"
26+
$ kubectl --namespace=istio-nginx describe service | grep "LoadBalancer"
2727
LoadBalancer Ingress: a493e4e58ea0511e5bb390686bc85da3-1558404688.us-west-2.elb.amazonaws.com
2828
```
2929

@@ -40,7 +40,7 @@ In general, for any IP, `a.b.c.d`, the fully-qualified domain name `any-subdomai
4040
To begin, find the node(s) hosting router instances using `kubectl`:
4141

4242
```
43-
$ kubectl --namespace=ingress-nginx describe pod | grep Node
43+
$ kubectl --namespace=istio-ingress describe pod | grep Node:
4444
Node: ip-10-0-0-199.us-west-2.compute.internal/10.0.0.199
4545
Node: ip-10-0-0-198.us-west-2.compute.internal/10.0.0.198
4646
```
@@ -73,7 +73,7 @@ We'll assume the following in this section:
7373
Here are the steps for configuring cloud DNS to route to your drycc cluster:
7474

7575
1. Get the load balancer IP or domain name
76-
- If you are on Google Container Engine, you can run `kubectl get svc -n ingress-nginx` and look for the `LoadBalancer Ingress` column to get the IP address
76+
- If you are on Google Container Engine, you can run `kubectl get svc -n istio-ingress` and look for the `LoadBalancer Ingress` column to get the IP address
7777
2. Create a new Cloud DNS Zone (on the console: `Networking` => `Cloud DNS`, then click on `Create Zone`)
7878
3. Name your zone, and set the DNS name to `mystuff.com.` (note the `.` at the end
7979
4. Click on the `Create` button

src/reference-guide/creating-a-self-signed-ssl-certificate.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@ The self-signed SSL certificate is generated from the server.key private key and
4343
The server.crt file is your site certificate suitable for use with [Drycc's SSL endpoint][app ssl] along with the server.key private key.
4444

4545
[app ssl]: ../applications/ssl-certificates.md
46-
[platform ssl]: https://kubernetes.io/docs/concepts/services-networking/ingress/
46+
[platform ssl]: https://gateway-api.sigs.k8s.io/guides/tls/

0 commit comments

Comments
 (0)