Difference between revisions of "GWS/Current/GWSPEGuide/DeployIngress"
(Published) |
|||
Line 5: | Line 5: | ||
|ComingSoon=No | |ComingSoon=No | ||
|Section={{Section | |Section={{Section | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|sectionHeading=Prerequisites | |sectionHeading=Prerequisites | ||
+ | |anchor=prerequisites | ||
|alignment=Vertical | |alignment=Vertical | ||
− | |structuredtext=GWS | + | |structuredtext=Before you deploy GWS Ingress, you must first {{Link-SomewhereInThisVersion|manual=GWSPEGuide|topic=Deploy}}. |
|Status=No | |Status=No | ||
}}{{Section | }}{{Section | ||
− | |sectionHeading= | + | |sectionHeading=Deploy |
+ | |anchor=deploy | ||
|alignment=Vertical | |alignment=Vertical | ||
− | |structuredtext= | + | |structuredtext=To deploy GWS Ingress, you need the GWS Ingress Helm package and override file. Copy '''values.yaml''' and the Helm package ('''gws-ingress-<version>.tgz''') to the installation location. |
+ | For OpenShift, select the '''gws''' project you created in {{Link-SomewhereInThisVersion|manual=GWSPEGuide|topic=Deploy|anchor=OpenShift|display text=Prepare your environment}}: | ||
oc project gws | oc project gws | ||
+ | Run the following command to deploy GWS ingress: | ||
+ | helm upgrade --install gws-ingress helm-staging/gws-ingress --version=<version> -n gws -f ./override.gws-ingress.values.yaml -f ./versions.yaml | ||
+ | |Status=No | ||
+ | }}{{Section | ||
+ | |sectionHeading=Configure external access | ||
+ | |anchor=https | ||
+ | |alignment=Vertical | ||
+ | |structuredtext=Follow the instructions for either OpenShift or GKE to configure external access to GWS ingress. | ||
− | + | ===Create routes in OpenShift=== | |
− | + | Genesys recommends using the following hostname format: <code>gws.<cluster-subdomain></code>. For example, the VCE cluster (<nowiki>https://console-openshift-console.apps</nowiki>.<yourclusterdomain>.com/) should have the hostname '''gws.<yourclusterdomain>.com''' | |
− | + | oc create route edge --service=gws-service-proxy --hostname=<hostname> | |
+ | {{AnchorDiv|GKEingress}} | ||
+ | ===Provision ingresses for GKE=== | ||
+ | After deploying, make Genesys Web Services services accessible from outside the GKE cluster using the NGINX Ingress Controller. | ||
− | < | + | Create a JSON file called '''gauth-ingress.yaml''' with the content below. '''Note:''' Replace '''gws.<domain>''' and '''gauth.<domain>''' with your GWS and Genesys Authentication domains, such as <code>gws.test.dev</code>.<syntaxhighlight> |
+ | apiVersion: extensions/v1beta1 | ||
+ | kind: Ingress | ||
+ | metadata: | ||
+ | name: gauth-gws-ingress | ||
+ | namespace: gauth | ||
+ | annotations: | ||
+ | # add an annotation indicating the issuer to use. | ||
+ | cert-manager.io/cluster-issuer: "selfsigned-cluster-issuer" | ||
+ | # Custom annotations for NGINX Ingress Controller | ||
+ | kubernetes.io/ingress.class: "nginx" | ||
+ | nginx.ingress.kubernetes.io/ssl-redirect: "false" | ||
+ | nginx.ingress.kubernetes.io/use-regex: "true" | ||
+ | spec: | ||
+ | rules: | ||
+ | - host: gws.<domain> - e.g. gws.test.dev | ||
+ | http: | ||
+ | paths: | ||
+ | - path: /ui/auth/.* | ||
+ | backend: | ||
+ | serviceName: gauth-auth-ui | ||
+ | servicePort: 80 | ||
+ | - path: /auth/.* | ||
+ | backend: | ||
+ | serviceName: gauth-auth | ||
+ | servicePort: 80 | ||
+ | - path: /environment/.* | ||
+ | backend: | ||
+ | serviceName: gauth-environment | ||
+ | servicePort: 80 | ||
+ | tls: | ||
+ | - hosts: | ||
+ | - gws.<domain> - e.g. gws.test.dev | ||
+ | secretName: gauth-gws-ingress-cert | ||
+ | --- | ||
+ | apiVersion: extensions/v1beta1 | ||
+ | kind: Ingress | ||
+ | metadata: | ||
+ | name: gauth-gauth-ingress | ||
+ | namespace: gauth | ||
+ | annotations: | ||
+ | # add an annotation indicating the issuer to use. | ||
+ | cert-manager.io/cluster-issuer: "selfsigned-cluster-issuer" | ||
+ | # Custom annotations for NGINX Ingress Controller | ||
+ | kubernetes.io/ingress.class: "nginx" | ||
+ | nginx.ingress.kubernetes.io/ssl-redirect: "false" | ||
+ | nginx.ingress.kubernetes.io/use-regex: "true" | ||
+ | spec: | ||
+ | rules: | ||
+ | - host: gauth.<domain> - e.g. gauth.test.dev | ||
+ | http: | ||
+ | paths: | ||
+ | - path: /ui/auth/.* | ||
+ | backend: | ||
+ | serviceName: gauth-auth-ui | ||
+ | servicePort: 80 | ||
+ | - path: /auth/.* | ||
+ | backend: | ||
+ | serviceName: gauth-auth | ||
+ | servicePort: 80 | ||
+ | |||
+ | - path: /environment/.* | ||
+ | backend: | ||
+ | serviceName: gauth-environment | ||
+ | servicePort: 80 | ||
+ | tls: | ||
+ | - hosts: | ||
+ | - gauth.<domain> - e.g. gauth.test.dev | ||
+ | secretName: gauth-gauth-ingress-cert | ||
+ | </syntaxhighlight>Create ingresses with the following command:<syntaxhighlight> | ||
+ | kubectl apply -f gauth-ingress.yaml -n gws | ||
+ | </syntaxhighlight> | ||
+ | |Status=No | ||
+ | }}{{Section | ||
+ | |sectionHeading=Validate the deployment | ||
+ | |alignment=Vertical | ||
+ | |structuredtext=First, check that the pod is running: | ||
− | + | kubectl get pod | |
− | + | The result should show that gws-service-proxy is running. For example: | |
− | + | gws-service-proxy-d5997957f-m4kcg 1/1 Running 0 4d13h | |
− | + | Check the service:<syntaxhighlight> | |
− | + | kubectl get svc | |
− | + | </syntaxhighlight>The result should display the service name, gws-service-proxy. For example: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | gws-service-proxy ClusterIP 10.202.55.20 <none> 80/TCP,81/TCP,85/TCP,86/TCP 4d13h | |
− | + | Check the '''gws-ingress''' status: | |
− | + | helm status gws-ingress -n gws | |
− | |||
− | |||
− | |||
− | |||
− | + | The result should show the namespace details with a status of deployed: | |
− | + | <syntaxhighlight>NAME: gws-ingress | |
+ | LAST DEPLOYED: Fri Sep 17 11:54:31 2021 | ||
+ | NAMESPACE: gws | ||
+ | STATUS: deployed | ||
+ | REVISION: 1 | ||
+ | TEST SUITE: None</syntaxhighlight> | ||
− | + | Check the installed Helm release: | |
+ | helm list –n gws | ||
− | + | The result should show the '''gws-services''' and '''gws-ingress''' deployment details. For example: | |
+ | <syntaxhighlight> | ||
− | + | NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION | |
− | + | gws-ingress gws 1 2021-09-17 11:54:31.339091 -0300 ADT deployed gws-ingress-0.2.7 1.0 | |
− | |||
− | + | gws-services gws 1 2021-09-17 11:43:50.0692273 -0300 ADT deployed gws-services-1.0.55 1.0 | |
− | + | </syntaxhighlight> | |
− | + | Check the GWS Kubernetes objects created by Helm: | |
− | + | kubectl get all -n gws | |
− | + | The result should show all the created pods, services, ConfigMaps, and so on. | |
− | |||
− | + | {{Editgrn open}}JM: Will the step below work if you haven't completed the deployment for Workspace Web Edition? That deployment is documented separately here: {{Link-AnywhereElse|product=PEC-AD|version=Current|manual=WWEPEGuide}}{{Editgrn close}} | |
− | + | Finally, verify that you can now access Workspace Web Edition at the following URL: <nowiki>https://<hostname>/ui/wwe/index.html</nowiki> | |
|Status=No | |Status=No | ||
}}{{Section | }}{{Section | ||
− | |sectionHeading= | + | |sectionHeading=Next steps |
+ | |anchor=next | ||
|alignment=Vertical | |alignment=Vertical | ||
− | |structuredtext= | + | |structuredtext=*{{Link-SomewhereInThisVersion|manual=GWSPEGuide|topic=ProvisionAS}} |
− | |||
− | |||
|Status=No | |Status=No | ||
}} | }} | ||
}} | }} |
Revision as of 20:55, October 29, 2021
Contents
Learn how to deploy GWS Ingress.
Prerequisites
Before you deploy GWS Ingress, you must first Deploy GWS Services.
Deploy
To deploy GWS Ingress, you need the GWS Ingress Helm package and override file. Copy values.yaml and the Helm package (gws-ingress-<version>.tgz) to the installation location.
For OpenShift, select the gws project you created in Prepare your environment:
oc project gws
Run the following command to deploy GWS ingress:
helm upgrade --install gws-ingress helm-staging/gws-ingress --version=<version> -n gws -f ./override.gws-ingress.values.yaml -f ./versions.yaml
Configure external access
Follow the instructions for either OpenShift or GKE to configure external access to GWS ingress.
Create routes in OpenShift
Genesys recommends using the following hostname format: gws.<cluster-subdomain>
. For example, the VCE cluster (https://console-openshift-console.apps.<yourclusterdomain>.com/) should have the hostname gws.<yourclusterdomain>.com
oc create route edge --service=gws-service-proxy --hostname=<hostname>
Provision ingresses for GKE
After deploying, make Genesys Web Services services accessible from outside the GKE cluster using the NGINX Ingress Controller.
Create a JSON file called gauth-ingress.yaml with the content below. Note: Replace gws.<domain> and gauth.<domain> with your GWS and Genesys Authentication domains, such asgws.test.dev
.apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gauth-gws-ingress
namespace: gauth
annotations:
# add an annotation indicating the issuer to use.
cert-manager.io/cluster-issuer: "selfsigned-cluster-issuer"
# Custom annotations for NGINX Ingress Controller
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: gws.<domain> - e.g. gws.test.dev
http:
paths:
- path: /ui/auth/.*
backend:
serviceName: gauth-auth-ui
servicePort: 80
- path: /auth/.*
backend:
serviceName: gauth-auth
servicePort: 80
- path: /environment/.*
backend:
serviceName: gauth-environment
servicePort: 80
tls:
- hosts:
- gws.<domain> - e.g. gws.test.dev
secretName: gauth-gws-ingress-cert
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gauth-gauth-ingress
namespace: gauth
annotations:
# add an annotation indicating the issuer to use.
cert-manager.io/cluster-issuer: "selfsigned-cluster-issuer"
# Custom annotations for NGINX Ingress Controller
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: gauth.<domain> - e.g. gauth.test.dev
http:
paths:
- path: /ui/auth/.*
backend:
serviceName: gauth-auth-ui
servicePort: 80
- path: /auth/.*
backend:
serviceName: gauth-auth
servicePort: 80
- path: /environment/.*
backend:
serviceName: gauth-environment
servicePort: 80
tls:
- hosts:
- gauth.<domain> - e.g. gauth.test.dev
secretName: gauth-gauth-ingress-cert
kubectl apply -f gauth-ingress.yaml -n gws
Validate the deployment
First, check that the pod is running:
kubectl get pod
The result should show that gws-service-proxy is running. For example:
gws-service-proxy-d5997957f-m4kcg 1/1 Running 0 4d13hCheck the service:
kubectl get svc
gws-service-proxy ClusterIP 10.202.55.20 <none> 80/TCP,81/TCP,85/TCP,86/TCP 4d13h
Check the gws-ingress status:
helm status gws-ingress -n gws
The result should show the namespace details with a status of deployed:
NAME: gws-ingress
LAST DEPLOYED: Fri Sep 17 11:54:31 2021
NAMESPACE: gws
STATUS: deployed
REVISION: 1
TEST SUITE: None
Check the installed Helm release:
helm list –n gws
The result should show the gws-services and gws-ingress deployment details. For example:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
gws-ingress gws 1 2021-09-17 11:54:31.339091 -0300 ADT deployed gws-ingress-0.2.7 1.0
gws-services gws 1 2021-09-17 11:43:50.0692273 -0300 ADT deployed gws-services-1.0.55 1.0
Check the GWS Kubernetes objects created by Helm:
kubectl get all -n gws
The result should show all the created pods, services, ConfigMaps, and so on.
JM: Will the step below work if you haven't completed the deployment for Workspace Web Edition? That deployment is documented separately here: Workspace Web Edition Private Edition Guide
Finally, verify that you can now access Workspace Web Edition at the following URL: https://<hostname>/ui/wwe/index.html