Octelium enables you to seamlessly easily deploy, scale and provide zero trust client-based/client-less BeyondCorp (read more here) secure access as well as public anonymous access (read more here) to your Next.js/Vite.js/Astro web containerized/dockerized applications that can be hosted by public container registries or even private registries that require authentication (read more about managed containers here) effectively making Octelium operate as a PaaS-like deployment platform. In this guide, we're going to assume that your web app is built as a Docker image that is served by a private container registry (e.g. ghcr.io
) as follows:
We first need to obtain the user and password/token needed to authenticate to the private container registry. For example, the GitHub container registry (i.e. ghcr.io
), you can read more here.
Now we store the obtained token as a Secret as follows:
octeliumctl create secret reg-password
Now we create the Service for our web application as follows:
1kind: Service2metadata:3name: dashboard4spec:5mode: WEB6isPublic: true7config:8upstream:9container:10port: 300011image: ghcr.io/<ORG>/<IMAGE>:<TAG>12command:13- npm14args:15- run16- start17replicas: 318credentials:19usernamePassword:20username: <USERNAME>21password:22fromSecret: reg-password23resourceLimit:24cpu:25millicores: 200026memory:27megabytes: 400028env:29- name: KEY130value: VALUE131- name: KEY232value: VALUE233securityContext:34runAsUser: 1000
You can now apply the Service as follows (read more here):
octeliumctl apply /PATH/TO/SERVICE.YAML
Now you can access the Service publicly via the client-less/BeyondCorp using your browser at the address https://dashboard.<DOMAIN>
. You can read more about publicly exposed BeyondCorp Services here.
And to provide public anonymous access, you only need to enable the isAnonymous
field as follows:
1kind: Service2metadata:3name: dashboard4spec:5mode: WEB6isPublic: true7isAnonymous: true8config:9# The rest of your config
This was a very short guide to show you how to use Octelium to deploy, scale, route and provide secure access as well as anonymous public access to any webapp containers. Here are a few more related features that you might be interested in:
- Routing not just by request paths, but also by header keys and values, request body content including JSON (read more here).
- Request/response header manipulation (read more here).
- Cross-Origin Resource Sharing (CORS) (read more here).
- gRPC mode (read more here).
- Secret-less access to upstreams and injecting bearer, basic, or custom authentication header credentials (read more here).
- Application layer-aware ABAC access control via policy-as-code using CEL and Open Policy Agent (read more here).