> ## Documentation Index
> Fetch the complete documentation index at: https://docs.validio.io/llms.txt
> Use this file to discover all available pages before exploring further.

# VPC Deployment Examples

> Example Helm configurations for deploying Validio on GCP, AWS, and Azure Kubernetes clusters.

For installation instructions, refer to [VPC Deployment Installation](https://docs.validio.io/v11.1/docs/deployment/virtual-private-cloud/vpc-deployment.md). The following sections provide examples of VPC deployments.

## Example of GCP ingress

```yaml title="YAML" theme={null}
surface:
  ingress:
    enabled: true
    host: validio.example.com
    managedCert: true
    annotations:
      kubernetes.io/ingress.allow-http: "false"
      kubernetes.io/ingress.class: gce
```

This example creates a `Kubernetes Ingress` resource and a `ManagedCertificate` resource, with the specified hostname. Make sure that the created `DNS A record` points to the IP address of the load balancer. Without a `DNS A record`, the certificate is not created and the `Kubernetes Ingress` won’t work.

Use the following command to verify the IP address of the load balancer:

```bash title="Bash" theme={null}
kubectl -n validio get ingress validio-surface -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
```

## Example of AWS ingress

```yaml title="YAML" theme={null}
surface:
  ingress:
    enabled: true
    host: validio.example.com
    annotations:
      alb.ingress.kubernetes.io/certificate-arn: <ARN of certificate>
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
      alb.ingress.kubernetes.io/scheme: internet-facing
      alb.ingress.kubernetes.io/success-codes: 200,302
      alb.ingress.kubernetes.io/target-type: ip
      kubernetes.io/ingress.class: alb
```

This requires the `AWS Load Balancer Controller Add-On`. This example creates a `Kubernetes Ingress` resource with the specified hostname. You must first create a certificate with `AWS Certificate Manager` as specified in the annotations part. Then, use the `Alias option` to create a `DNS A record` that points to the endpoint of the load balancer.

Use the following command to verify the endpoint of the load balancer:

```bash title="Bash" theme={null}
kubectl -n validio get ingress validio-surface -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
```

## Example of Azure ingress

```yaml title="YAML" theme={null}
surface:
  ingress:
    enabled: true
    host: validio.example.com
    annotations:
      cert-manager.io/acme-challenge-type: http01
      cert-manager.io/cluster-issuer: letsencrypt
    ingressClassName: webapprouting.kubernetes.azure.com
    tls:
      enabled: true
```

This requires the `AKS Application routing add-on` with a working `external-dns` setup and `cert-manager` for TLS. This example creates a `Kubernetes Ingress` resource with the specified hostname using TLS.

## Example of Nginx Ingress

Configuring an Nginx Ingress can be done in a few different ways, here we will show just the basic options needed. For your environment you might need to add specific annotations local to your Kubernetes installation.

```yaml title="YAML" theme={null}
surface:
  ingress:
    enabled: true
    host: validio.example.com
```

## Example of default memory and cpu resources set

> [!WARNING]
>
> **Caution**
>
> Below is an example configuration using the above suggested resource configuration and some other sensible values. The YAML key `surface.ingress` below are GCP, AWS or Azure specific, please refer to examples above. Validio will provide customer specific configuration when applicable

```yaml title="YAML" theme={null}
postgres:
  resources:
    limits:
      memory: 4000Mi
    requests:
      cpu: 200m
  storage:
    capacity: 50Gi
    class: managed-premium
redis:
  resources:
    limits:
      memory: 250Mi
    requests:
      cpu: 50m
  storage:
    capacity: 20Gi
    class: managed-premium
surface:
  ingress:
    enabled: true
    host: your-validio-instance
  resources:
    limits:
      memory: 1000Mi
    requests:
      cpu: 200m
  service:
    type: ClusterIP
ve:
  diver:
    resources:
      limits:
        memory: 500Mi
      requests:
        cpu: 200m
  ingress:
    cache:
      size: 10G
    resources:
      limits:
        memory: 1000Mi
      requests:
        cpu: 200m
  pipelines:
    cache:
      size: 10G
    resources:
      limits:
        memory: 1000Mi
      requests:
        cpu: 100m
```
