Issue
When deploying Fusion 5.9.10, an error occurs while pulling the keytool-utils image:
Failed to pull image "fusion-dev-docker.ci-artifactory.lucidworks.com/keytool-utils:v3.0.2": reading manifest v3.0.2 in fusion-dev-docker.ci-artifactory.lucidworks.com/keytool-utils: unauthorized: The client does not have permission for manifest
This error prevents successful startup of affected services such as classic-rest-service and connector-plugin.
Diagnosis
This issue occurs when Kubernetes resources reference a hardcoded Docker registry path (fusion-dev-docker.ci-artifactory.lucidworks.com) that is not publicly accessible. The problem manifests even when users are authenticated or use a proxy for pulling images, due to the repository itself being private and requiring credentials unavailable to client environments.
Environment
Fusion 5.9.10.
Self-hosted Kubernetes environments.
Cause
The StatefulSet and Deployment definitions for affected services (e.g., classic-rest-service and connector-plugin) directly reference a hardcoded image repository path. This bypasses the dynamic configuration values provided by Helm, which are designed to accommodate different environments and image sources.
Resolution
Update the image configuration in the StatefulSet or Deployment resources to use Helm values instead of a hardcoded image path.
Step 1: Use dynamic image values in StatefulSet
Update the image section in the affected StatefulSet, for example in classic-rest-service:
- name: import-certs
image: "{{ .Values.image.repository }}/{{ .Values.image.name }}:{{ .Values.image.tag }}"
command: [...]
This ensures that the image path is pulled from the Helm chart values and can be overridden per deployment environment.
Step 2: Use valid image reference in configmap.yaml for connector-plugin
If using a ConfigMap to define job steps or container behaviors for connector-plugin, use the public image path directly:
{{- if $importTrustedCertsEnabled }}
- name: import-certs
image: lucidworks/keytool-utils:v3.0.2
This change bypasses the private CI registry and uses a publicly accessible image repository.