Deploy on EKS
Overview
Deploy the Access Broker on an existing EKS cluster with the britive-broker Helm chart. You build the broker image once from the onboarding repository, push it to Amazon ECR, and install the chart with your tenant subdomain and a broker pool token. The chart runs the broker as a non-root user on a read-only root filesystem and can grant it the RBAC needed for Kubernetes just-in-time checkouts in the same cluster.
What you’ll accomplish:
- Build the Broker 3.x image and push it to ECR
- Install the broker with Helm, with the token in a Kubernetes Secret
- Confirm the broker is active in its pool
Before You Begin
- A Britive tenant with administrator access
- Tenant subdomain —
mycompanyforhttps://mycompany.britive-app.com - Broker pool token — System Administration → Brokers and Broker Pools → create or open a pool → Tokens
- Broker tarball — System Administration → Brokers and Broker Pools → Download Brokers → Any other Linux → the
tar.gzforamd64andarm64. There is no public download URL. helm3.12+,kubectland the AWS CLI configured for the cluster; Docker withbuildx- Outbound HTTPS (443) from the pods to
<tenant>.britive-app.com, through a NAT gateway or egress gateway - Node role (or pod identity) allowed to pull from ECR — managed node groups have
AmazonEC2ContainerRegistryReadOnlyby default
Broker 2.x (the Java JAR) is deprecated and not supported by the chart. Download the 3.x tarball.
Deploy
Clone the onboarding repo
git clone https://github.com/britive/onboarding.git
cd onboarding/access-brokerAdd the broker tarball
Place the downloaded files next to the Dockerfile. They are gitignored.
cp ~/Downloads/britive-broker-3.0.2-linux-amd64.tar.gz image/
cp ~/Downloads/britive-broker-3.0.2-linux-arm64.tar.gz image/Build and push the image
The script creates the ECR repository if it does not exist, builds for both architectures and pushes the tag 3.0.2-r1.
cd image
REGISTRY=<account>.dkr.ecr.<region>.amazonaws.com \
WITH_AWS_CLI=true WITH_KUBECTL=true \
./build-and-push.sh
cd ..WITH_KUBECTL=true is needed for Kubernetes checkouts; WITH_AWS_CLI=true for scripts that read Secrets Manager or call aws eks update-kubeconfig. Add WITH_PYWINRM=true or WITH_DB_CLIENTS=true for Windows or database targets.
Create the token Secret
kubectl create namespace britive
kubectl -n britive create secret generic britive-broker-token \
--from-literal=BRITIVE_BROKER_AUTH_TOKEN=<broker-pool-token>For production, let External Secrets Operator or the Secrets Store CSI driver create this Secret from AWS Secrets Manager instead; the chart only needs its name and key.
Set the chart values
cp kubernetes/values.example.yaml kubernetes/values.yamlimage:
repository: <account>.dkr.ecr.<region>.amazonaws.com/britive-broker
tag: 3.0.2-r1
britive:
tenantSubdomain: mycompany
existingSecret:
name: britive-broker-token
key: BRITIVE_BROKER_AUTH_TOKENInstall the chart
helm upgrade --install britive-broker kubernetes/charts/britive-broker \
-n britive -f kubernetes/values.yamlThe chart refuses to render without image.repository, britive.tenantSubdomain and a token source.
Verify
Check the pod is running
kubectl -n britive get pods -l app.kubernetes.io/name=britive-broker
# Expected: STATUS = RunningTail the logs
kubectl -n britive logs -l app.kubernetes.io/name=britive-broker -fExpect Britive broker starting version=3.0.2 and, after the first few seconds, no Broker bootstrap failed lines.
Confirm registration
In the Britive console, go to System Administration → Brokers and Broker Pools → your pool → Brokers. The broker is listed as active under the pod name.
Kubernetes Checkouts in This Cluster
Checkout scripts that create a RoleBinding at checkout and delete it at check-in run with the pod’s service account. Let the chart create the RBAC, scoped to the namespaces that should be reachable:
rbac:
create: true
namespaces: [dev, staging]The broker can only bind Roles that already exist in those namespaces and whose rules the chart’s ClusterRole covers — Kubernetes prevents a service account from granting more than it holds. Script examples are in access-broker-examples/k8s.
Scripts That Call AWS
Give the pod an IAM role with IRSA and annotate the service account. Scope the role to what the scripts do, for example secretsmanager:GetSecretValue on one secret prefix.
serviceAccount:
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::<account>:role/britive-brokerOperations
| Task | How |
|---|---|
| Rotate the token | Update the Secret, then kubectl -n britive rollout restart deployment/britive-broker. Delete the old token in the console once the new pod shows active |
| Upgrade the broker | Download the new tarball, BROKER_VERSION=3.x.y ./build-and-push.sh, then helm upgrade … --set image.tag=3.x.y-r1. The rolling update briefly runs two brokers in the pool; that is supported |
| Restrict resource types | Put a broker-config.yml in the chart’s config: value; the chart mounts it and restarts the pods when it changes |
| Uninstall | helm -n britive uninstall britive-broker, then deactivate the token |
Troubleshoot
| Symptom | Cause | Fix |
|---|---|---|
ImagePullBackOff | Node role cannot pull from ECR | Attach AmazonEC2ContainerRegistryReadOnly to the node group role |
Helm: image.repository is required (or tenantSubdomain, token) | Required value missing from values.yaml | Set it; the chart refuses to render without the three |
Broker bootstrap failed … 401 / 403 | Wrong or deactivated token | Create a new token, update the Secret, restart the deployment |
Broker bootstrap failed … i/o timeout | No egress on 443 | Allow outbound HTTPS to *.britive-app.com; set extraEnv with HTTPS_PROXY / NO_PROXY behind a proxy |
Checkout script: forbidden: user "system:serviceaccount:britive:britive-broker" cannot … | RBAC not enabled or namespace not listed | Set rbac.create: true and add the namespace to rbac.namespaces |
Next Steps
- Onboard a broker-based integration
- Source: britive/onboarding — access-broker/kubernetes (chart,
values.example.yaml, AKS and GKE registry notes)