# Installing Connectware Agents without a License Key Using the connectware-agent Helm Chart

## Prerequisites

* Connectware is already installed and configured.
* A custom image registry to mirror Connectware images -OR- access to an existing kubernetes.io/dockerconfigjson secret providing access to the Cybus image registry (see text for details).
* Helm V3 installed (Helm | Installing Helm).
* kubectl installed (Install Tools).
* kubectl configured with the current context pointing to your target cluster (Configure Access to Multiple Clusters).
* Decided on a Kubernetes namespace to use.

Follow this guide if you want to install agents using the connectware-agent Helm chart without providing your license key.

You have two options to achieve this:

* Providing a manually created pull secret, or use the pull secret provided by Connectware
* Using a custom image registry

The agents will still verify a valid license for your Connectware once you register them

## Installing Using a Manually Created Pull Secret

If you don’t enter a license key, you can still install the agent if you provide an already existing Kubernetes secret of type `kubernetes.io/dockerconfigjson`.

Connectware creates a secret like this named `cybus-docker-registry`. If you install agents in the same namespace as Connectware itself, you can use this secret by listing it in the `protocolMapperAgentDefaults.image.pullSecrets` list of your `values.yaml` file:

{% code lineNumbers="true" %}

```yaml
# not needed when supplying another pullSecret
# licenseKey:
protocolMapperAgentDefaults:
  image:
    pullSecrets:
      - name: cybus-docker-registry
```

{% endcode %}

If your Connectware installation is in a different namespace, you can copy the secret from your Connectware namespace to the target namespace by using this command:

{% code lineNumbers="true" %}

```yaml
kubectl get secret cybus-docker-registry --namespace=<connectware-namespace> -o yaml | sed 's/namespace: .*/namespace: <agent-namespace>/' | kubectl apply -f -
```

{% endcode %}

**Example**

{% code lineNumbers="true" %}

```yaml
kubectl get secret cybus-docker-registry --namespace=connectware -o yaml | sed 's/namespace: .*/namespace: connectware-agent/' | kubectl apply -f -
```

{% endcode %}

If you need to copy between Kubernetes clusters, you can use the `--context` parameter of `kubectl` to target your local contexts.

Of course you can also use a completely manually created secret, as long as it provides access to the registry used to pull the agents `protocol-mapper` image.

## Installing Using a Custom Registry

You can also use a custom registry to provide the protocol-mapper image for the agent.

In this case, set this registry in the image.registry inside the protocolMapperAgentDefaults section in your `values.yaml` file.

**Example**

{% code lineNumbers="true" %}

```yaml
# not needed when supplying another image registry
# licenseKey:
protocolMapperAgentDefaults:
  image:
    registry: registry.company.tld/cybus
```

{% endcode %}

If your custom registry requires authentication, you must also provide a manually created kubernetes.io/dockerconfigjson secret in the protocolMapperAgentDefaults.image.pullSecrets list of your `values.yaml` file.

**Example**

{% code lineNumbers="true" %}

```yaml
# not needed when supplying another image registry
# licenseKey:
protocolMapperAgentDefaults:
  image:
    registry: registry.company.tld/cybus
    pullSecrets:
      - name: my-company-pull-secret
```

{% endcode %}

**Hint**

kubernetes.io/dockerconfigjson secrets can be created with this command:

{% code lineNumbers="true" %}

```yaml
kubectl create secret <secret-name> --docker-server=<registry-address> --docker-username=<username> --docker-password=<password> --docker-email=<user-email>
```

{% endcode %}
