Configure Binarly charts
There are two custom Helm charts for Binarly On-Prem:- Secrets: Creates necessary secrets for the Binarly components.
- Binarly: Deploys core On-Prem components following the ArgoCD App of Apps pattern.
Binarly Secrets
The chart is configured ink8s/apps/binarly-secrets/values.yaml.gotmpl. At least, itโs necessary to provide the following secrets:
.envrc.local file:
BINARLY_SECRET_NVD_API_KEY it should be present on the Bitwarden secrets.
For the BINARLY_SECRET_SERVER_INTEGRATION_SECRET you need to generate it with the following terminal command:
Remember if you make any change to the
.envrc.local file to apply again the source .envrc.local command to refresh the latest environment variables!lint the Chart for any misconfiguration or issues as well:
Binarly Chart
This is the main chart that contains the ArgoCD App of Apps for Binarly. Configuration is stored ink8s/apps/binarly/values.yaml.gotmpl.
Image Pull Secrets
By default, the Binarly deployment will use the authenticated registry provided by Customer Success and this is already set up. If you are using a custom registry, this can be adjusted in thebinarly-repository-secrets file.
imagePullSecrets should match with the binarly-registry (that is being created on the secrets chart). This will allow to access the custom Artifact Registry to be able to pull docker images:
Ingress
basedomain is base domain name for Binarly Transparency Platform:
cert-manager with the Let's Encrypt known as ACME by setting to true the key useCertManager.
cert-manager suppors many certificate provider issuers and not only ACME as we can see from the list here.
You can tweak the issuer section to match any of the cert-manager issuers providers to be able to customize to your specific settings.
Donโt forget to configure the keycloak ingress (ensure, for the hostname to start with auth and the basedomain you have configured before):
If you are using a custom
clusterIssuer.issuer just ensure to change the ingressAnnotations for both clusterIssuer.ingressAnnotations and keycloakHelmChart.chart.values.annotations to match with the new cerfiticate provider.Currently, we expect both Binarly
dashboard and auth to use the same basedomain. If you have your own Certifcate Authority, youโll need your own certificates for dashboard.{{basedomain}} and auth.{{basedomain}}.Role-Based Access Control (RBAC)
By default all access is managed via Keycloak. To enable RBAC, you can set the following values:Air Gapped Environment
The Binarly Application will work in an air-gapped environment with a few caveats:- There must be an internal registry capable of hosting images and charts.
- Chart addresses must be updated to use the internal registry.
- Image repository fields must be overwritten to use the internal registry.
- One component of the Binarly Application (Vulnerability Database) requires internet access to fetch vulnerability data.
Internal Registry
The registry in use should be populated with the contents of the private Binarly registry provided by Customer Success. The exact contents will be communicated prior to the installation.Chart and Image Addresses
The chart address need to be updated in two places:- The
repositoriessection of thehelmfile.d/*.yaml.gotmplfile. - In the
envrc.localfile.
Vulnerability Database
The Vulnerability Database component of the Binarly Application requires internet access to fetch vulnerability data. This can be achieved by setting up a proxy server that allows the Vulnerability Database to access the internet, and passing this config ink8s/apps/binarly/values.yaml.gotmpl:
Configure Third-Party Charts
The Binarly Installation comes with a set of third-party charts, more information in considerations. These charts are configured in thek8s/apps/{chart name} directory.
ArgoCD
Improve password security for admin user
By default, and if the Helm chart values are not changed from default settings, ArgoCD will create automatically the initialadmin user with the following credentials:
- Username:
admin - Password: A randomized string of 10 characters.
argocd namespace within the following secret name: argocd-initial-admin-secret. We recommend though, to change the password of the account to improve the security settings of your cluster with a size of 32 characters.
To do so there are two ways:
Configure ArgoCD Helm chart
The other option is to directly configure the ArgoCD Helm chart, to deploy it with our password. We can do it like it follows:- Configure the
k8s/apps/argocd/values.yamlto include a hashed password like it follows (ensure you have installedhtpasswdandopensslcli tools): - Ensure you save the
$ARGOCD_PASSWORDsafely, otherwise you wonโt be able to access ArgoCD with theadmincredentials, unless you redeploy the chart. - Once ArgoCD is running and deployed in your Kubernetes cluster, the password secret is stored inside the
argocd-secret(instead of theargocd-initial-admin-secretsecret).
What happens if I forgot my admin password?
In this particular case, you can always generate a new
admin password, update the k8s/apps/argocd/values.yaml and perform a helmfile apply --selector name=argocd to update your ArgoCD instance with the fix.Use ArgoCD CLI
This entails deploying ArgoCD (by just following this guide) and once up and running:- Install the ArgoCD CLI on your system as per the official docs guide
- Connect ArgoCD CLI to your ArgoCD instance
- Use the
argocd account update-passwordCLI command as stated in their docs.
What happens if I forgot my admin password? This guide will help you to troubleshoot it.
Configuring ArgoCD Ingress with Ingress-Nginx and TLS
There are two main approaches to configure the ingress:Option 1: SSL-Passthrough
This method allows exposing the Argo CD API server with a single ingress rule and hostname:- Open
k8s/apps/argocd/values.yaml - Add or modify the
server.ingresssection:
-
Ensure the nginx-ingress-controller is running with the
--enable-ssl-passthroughflag. Modify thek8s/apps/ingress-nginx/values.yamlto contain:
Option 2: SSL Termination at Ingress Controller
For this option, you need to provide your own TLS certificate.-
Open
k8s/apps/argocd/values.yaml -
Enable insecure mode for the ArgoCD server:
ArgoCD supports more configuration options to configure the ingress.
We recommend you visiting ArgoCD official documentation guide for more information.
MetalLB
- Include into the
repositorieslist the Helm registry:
- Now, add the chart to the list of
releases:
-
Create the folder and the file at the path
./k8s/apps/metallb/values.yaml. -
Customize the
values.yamlaccording to your necessities by following MetalLB instructions. - Continue with the rest of the instructions.