Configuring the AtScale Proxy Service
The AtScale proxy service is a wrapper of the Nginx Helm Chart, with pre-configured routing to all AtScale services.
If you want to configure the proxy service, do the following before installing AtScale.
Configure certificates
You can provide TLS certificates for the proxy service in three different ways:
-
(Default) Auto-generate them. Leave the section
global.atscale.tlsin the values override file empty. When using this method, a self-signed certificate for theglobal.ingressDomainis automatically generated by AtScale and saved to thedefault-certificatesecret.Example override file:
global:
ingressDomain: "<ingress_domain>" -
Provide them in the values override file. Fill out the
global.atscale.tlsCrt,global.atscale.tlsKey, and (optionally)global.atscale.caCertsparameters. All values must beBase64encoded. AtScale saves these to thedefault-certificatesecret.Example override file:
global:
ingressDomain: "<ingress_domain>"
atscale:
tls:
tlsCrt: <tls_certificate>
tlsKey: <tls_key>
caCerts: <ca_certificates> -
Provide them via secret, with
tls.key,tls.crt, andca.crtkeys. The secret name should be specified in both theglobal.atscale.tls.existingSecretandatscale-proxy.tls.existingSecretsections of the values override file.Example secret manifest:
type: kubernetes.io/tls
apiVersion: v1
kind: Secret
metadata:
namespace: <atscale_namespace>
data:
tls.crt: <tls_certificate>
tls.key: <tls_key>
ca.crt: <ca_certificates>Example values override file:
global:
ingressDomain: "<ingress_domain>"
atscale:
tls:
existingSecret: "<secret>"
atscale-proxy:
tls:
existingSecret: "<secret>"Where
<secret>is the secret created above.
Configure routing
There are two different methods of reaching the AtScale services from the outside:
-
(Default) Service. All configuration related to the proxy service is defined in the
atscale-proxy.servicesection of the values override file. In this configuration, the AtScale proxy service handles TLS termination, using the certificate defined inglobal.atscale.tls(or the generated self-signed certificate). HTTP 2.0 is set as the default.Example values override for a load balancer with three replicas:
atscale-proxy:
replicaCount: 3
service:
type: LoadBalancerExample values override for an AWS load balancer:
atscale-proxy:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-scheme: internal
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instanceExample values override for an Azure load balancer:
atscale-proxy:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-ipv4: <load_balancer_ip_address>Example values override for a Google Cloud load balancer:
atscale-proxy:
service:
type: LoadBalancer
annotations:
networking.gke.io/load-balancer-type: "Internal"
networking.gke.io/load-balancer-ip-addresses: "<load_balancer_ip_address>"
kubernetes.io/ingress.global-static-ip-name: <ingress_ip_address> -
Ingress. All configuration related to the proxy service is defined in the
atscale-proxy.ingresssection of the values override file. In order to enable this, setatscale-proxy.ingress.enabledtotrue. In this configuration, the AtScale proxy service does not handle TLS termination, HTTP 1.1 is set as the default, and the certificateglobal.atscale.tls(or the generated self-signed certificate) is attached to the ingress.Example values override using an ingress, with
nginxas the default ingress class:atscale-proxy:
ingress:
enabled: true
ingressClassName: "nginx"Note on TCP Connections when Using IngressThe communication between the AtScale engine and external applications, such as Tableau, uses the Postgres Wire protocol, via TCP port 15432.
This port is also exposed via the
atscale-proxyservice; however, when using the ingress, only HTTPS connections are allowed. Therefore, it is necessary to use Firewall rules (or other availble proxy) to allow access via port 15432.For information on exposing TCP ports using the Nginx Ingress Controller, see Exposing TCP and UDP services - Ingress-Nginx Controller. For information on using Traefik, see Traefik Routers Documentation - Traefik.