Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion .github/workflows/llm-proxy-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,31 @@ jobs:

- name: Build operator images
run: |
# Login to Red Hat registry BEFORE switching to minikube context (for pushing to ttl.sh)
echo "${{ secrets.RH_REGISTRY_PASS }}" | docker login -u ${{ secrets.RH_REGISTRY_USER }} --password-stdin registry.redhat.io

# Switch to minikube's docker daemon
eval $(minikube docker-env)

# Login to Red Hat registry again in minikube's context (for pulling images in cluster)
echo "${{ secrets.RH_REGISTRY_PASS }}" | docker login -u ${{ secrets.RH_REGISTRY_USER }} --password-stdin registry.redhat.io

IMG=ttl.sh/konveyor-tackle-operator-${{ github.run_id }}:2h make docker-build docker-push
BUNDLE_IMG=ttl.sh/konveyor-tackle-operator-bundle-${{ github.run_id }}:2h make bundle bundle-build bundle-push

- name: Setup test environment
run: |
# Create namespace
kubectl create namespace konveyor-tackle || true


# Create image pull secret for Red Hat registry
kubectl create secret docker-registry redhat-pull-secret \
--docker-server=registry.redhat.io \
--docker-username="${{ secrets.RH_REGISTRY_USER }}" \
--docker-password="${{ secrets.RH_REGISTRY_PASS }}" \
-n konveyor-tackle \
--dry-run=client -o yaml | kubectl apply -f -

# Create API key secret for LLM proxy
kubectl create secret generic kai-api-keys \
--from-literal=OPENAI_API_KEY=dummy-key-for-llemulator \
Expand Down
2 changes: 1 addition & 1 deletion helm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ images:
provider_c_sharp: quay.io/konveyor/c-sharp-provider:latest
kantra: quay.io/konveyor/kantra:latest
kai: quay.io/konveyor/kai-solution-server:latest
llama_stack: docker.io/llamastack/distribution-starter:latest
llama_stack: registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if the image reference is used elsewhere and if pull secrets are configured
echo "=== Checking for imagePullSecrets configuration ==="
rg -n "imagePullSecret" --type yaml

echo ""
echo "=== Checking for registry.redhat.io references ==="
rg -n "registry.redhat.io" --type yaml

echo ""
echo "=== Checking for docker.io llama references ==="
rg -n "llamastack" --type yaml

echo ""
echo "=== Checking helm/values.yaml context around line 29 ==="
cat -n helm/values.yaml | sed -n '20,40p'

Repository: konveyor/operator

Length of output: 1447


Update ClusterServiceVersion manifests and configure imagePullSecrets for authenticated registry.

The helm/values.yaml change to registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest is out of sync with bundle/manifests/konveyor-operator.clusterserviceversion.yaml (lines 363, 567), which still references docker.io/llamastack/distribution-starter:latest. Additionally, no imagePullSecrets are configured anywhere in the codebase, yet registry.redhat.io requires authentication to pull images. Either:

  • Update the bundle manifests to match the new registry.redhat.io image, or
  • Revert to the upstream docker.io image

If the Red Hat registry image is intentional, ensure imagePullSecrets are configured in deployments to enable authentication.

🤖 Prompt for AI Agents
In `@helm/values.yaml` at line 29, The values key "llama_stack" was changed to
registry.redhat.io but the ClusterServiceVersion manifest
(konveyor-operator.clusterserviceversion.yaml) still references the docker.io
image; reconcile them by either updating the CSV image references to the
registry.redhat.io image or revert the "llama_stack" value back to the docker.io
image. If you choose to keep registry.redhat.io, add imagePullSecrets to the
operator Deployment/CSV spec (ensure the CSV's deployment spec includes
imagePullSecrets and the corresponding Secret is created) so authenticated pulls
succeed; update the CSV image fields that currently point to
docker.io/llamastack/distribution-starter:latest to match the llama_stack value.

2 changes: 1 addition & 1 deletion roles/tackle/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ kai_database_address: kai-db.{{ app_namespace }}.svc

# LLM Proxy configuration
kai_llm_proxy_enabled: false
kai_llm_proxy_image_fqin: "{{ lookup('env', 'RELATED_IMAGE_LLAMA_STACK') | default('docker.io/llamastack/distribution-starter:latest', true) }}"
kai_llm_proxy_image_fqin: "registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest"
Comment on lines 330 to +332
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Hardcoded image breaks the environment override pattern.

All other *_image_fqin variables in this file use the lookup('env', 'RELATED_IMAGE_*') pattern (e.g., lines 28, 84, 106, 136, 173, etc.), allowing OLM and custom deployments to override images via environment variables. This hardcoded value removes that flexibility.

🔧 Suggested fix to maintain consistency with other image variables
 # LLM Proxy configuration
 kai_llm_proxy_enabled: false
-kai_llm_proxy_image_fqin: "registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest"
+kai_llm_proxy_image_fqin: "{{ lookup('env', 'RELATED_IMAGE_LLM_PROXY') or 'registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest' }}"

This maintains consistency with the established pattern while still using the Red Hat registry image as the default.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# LLM Proxy configuration
kai_llm_proxy_enabled: false
kai_llm_proxy_image_fqin: "{{ lookup('env', 'RELATED_IMAGE_LLAMA_STACK') | default('docker.io/llamastack/distribution-starter:latest', true) }}"
kai_llm_proxy_image_fqin: "registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest"
# LLM Proxy configuration
kai_llm_proxy_enabled: false
kai_llm_proxy_image_fqin: "{{ lookup('env', 'RELATED_IMAGE_LLM_PROXY') or 'registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest' }}"
🤖 Prompt for AI Agents
In `@roles/tackle/defaults/main.yml` around lines 330 - 332, Replace the hardcoded
kai_llm_proxy_image_fqin value with the same env-lookup pattern used by other
image vars: set kai_llm_proxy_image_fqin to lookup('env',
'RELATED_IMAGE_KAI_LLM_PROXY',
'registry.redhat.io/lightspeed-core/lightspeed-stack-rhel9:latest') so
deployments can override via RELATED_IMAGE_KAI_LLM_PROXY while preserving the
Red Hat registry image as the default.


# Internal URL for the LLM proxy service (used by UI reverse proxy)
kai_llm_proxy_url: "http://llm-proxy.{{ app_namespace }}.svc.cluster.local:8321"
Expand Down
2 changes: 2 additions & 0 deletions roles/tackle/templates/kai/llm-proxy-deployment.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ spec:
# Force pod restart when ConfigMap changes
checksum/config: "{{ lookup('template', 'kai/llm-proxy-configmap.yaml.j2') | hash('sha256') }}"
spec:
imagePullSecrets:
- name: redhat-pull-secret
containers:
- name: llm-proxy
image: "{{ kai_llm_proxy_image_fqin }}"
Expand Down
Loading