Skip to content
Open
Show file tree
Hide file tree
Changes from 39 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
7ed3b49
Add kubectl-ai for debugging namespace issues
krishnaa05 Mar 24, 2026
4b13a59
Add OLLAMA_HOST and timeout
krishnaa05 Mar 24, 2026
d8eb9ab
Disable ollama uninstallation
krishnaa05 Mar 24, 2026
06e6d7d
Increase timeout
krishnaa05 Mar 24, 2026
93fc306
Install in kubectl-ai in ollama pod
krishnaa05 Mar 25, 2026
546f2e9
fix
krishnaa05 Mar 25, 2026
cdf4628
Fix sudo issue
krishnaa05 Mar 25, 2026
2013b96
Add kubectl access
krishnaa05 Mar 25, 2026
12dcfe6
Change name for serviceaccount
krishnaa05 Mar 25, 2026
09e200d
Update SA name
krishnaa05 Mar 25, 2026
66b8438
Fix
krishnaa05 Mar 25, 2026
a187210
Add pods/log rule
krishnaa05 Mar 26, 2026
cd4ede8
Add seconds echo
krishnaa05 Mar 26, 2026
8483225
Update command
krishnaa05 Mar 26, 2026
d0f10ae
Fix
krishnaa05 Mar 26, 2026
0cc9124
skip permission
krishnaa05 Mar 26, 2026
556b524
Add log
krishnaa05 Mar 26, 2026
83d6cd0
Quote fix
krishnaa05 Mar 26, 2026
0c13edd
print output
krishnaa05 Mar 26, 2026
e832671
Add OLLAMA_HOST env
krishnaa05 Mar 26, 2026
70acbfe
Increase resources
krishnaa05 Mar 29, 2026
ba80e0d
Add OLLAMA_KEEP_ALIVE
krishnaa05 Mar 30, 2026
bac4e13
fix
krishnaa05 Mar 30, 2026
6454f3c
Test with tools based model
krishnaa05 Mar 30, 2026
acc0f1f
Fix
krishnaa05 Mar 30, 2026
c7c9862
Test
krishnaa05 Mar 30, 2026
f41a534
revert model
krishnaa05 Mar 31, 2026
790615e
Switch to gemma4
krishnaa05 Apr 5, 2026
3bca56d
Merge branch 'master' into chore/add_kubectl_ai
krishnaa05 Apr 8, 2026
8fbed15
Merge branch 'master' into chore/add_kubectl_ai
krishnaa05 Apr 8, 2026
a50123a
switch to llama3.1:8b
krishnaa05 Apr 10, 2026
9fa92b7
Pull multiple models
krishnaa05 Apr 10, 2026
c1fc684
Use qwen3.5:9b model
krishnaa05 Apr 10, 2026
3075f3b
Update pullPolicy tp Always
krishnaa05 Apr 10, 2026
a529888
Add kubectl-ai pod
krishnaa05 Apr 10, 2026
23cd7bf
Add chart and tpl
krishnaa05 Apr 10, 2026
a1f600f
Use qwen3.5:2b
krishnaa05 Apr 10, 2026
786a9db
Use qwen3.5:2b
krishnaa05 Apr 10, 2026
0813a50
Add S3 bedrock SA
krishnaa05 Apr 14, 2026
e74c57d
Push ollama removal changes
krishnaa05 Apr 14, 2026
8cdf945
Test new changes
krishnaa05 Apr 14, 2026
a28f60f
add sleep in dockerfile
krishnaa05 Apr 14, 2026
73c88fe
Add annotations
krishnaa05 Apr 14, 2026
4276f1c
update
krishnaa05 Apr 14, 2026
21c2886
Update annotations
krishnaa05 Apr 14, 2026
f92feaf
Final annotation changes
krishnaa05 Apr 14, 2026
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
23 changes: 23 additions & 0 deletions .github/workflows/kubectl_ai_build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Kubeclt-ai Image Build on Push

on:
workflow_dispatch:
inputs:
tag:
description: "The tag to apply to this build. Defaults to 'latest'."
default: "latest"
required: false
push:
paths:
- gen3-integration-tests/gen3_ci/kubectl_ai/**

jobs:
AmazonLinuxBase2023:
name: Build Helm Cleanup Image
uses: uc-cdis/.github/.github/workflows/image_build_push.yaml@master
with:
DOCKERFILE_LOCATION: "./gen3-integration-tests/gen3_ci/kubectl_ai/Dockerfile"
OVERRIDE_REPO_NAME: "kubectl_ai"
OVERRIDE_TAG_NAME: "$(echo ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag || format('{0}', github.head_ref || github.ref_name) }} | tr / _)"
USE_QUAY_ONLY: true
secrets: inherit
24 changes: 24 additions & 0 deletions gen3-integration-tests/gen3_ci/kubectl_ai/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: v2
name: kubectl-ai
description: A Helm chart for kubeclt-ai

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "master"
23 changes: 23 additions & 0 deletions gen3-integration-tests/gen3_ci/kubectl_ai/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
ARG AZLINUX_BASE_VERSION=master

FROM quay.io/cdis/amazonlinux-base:${AZLINUX_BASE_VERSION} AS base

# Install curl
RUN dnf install -y --allowerasing \
curl \
findutils \
zstd \
tar \
gzip

# Create kubectl directory
WORKDIR /kubectl

# Install kubectl-ai
RUN curl -fsSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh -o install.sh \
&& sed -i 's/sudo //g' install.sh \
&& bash install.sh

# Install Kubectl
RUN curl -LO https://dl.k8s.io/release/v1.33.0/bin/linux/amd64/kubectl && \
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{{/*
Return the fully qualified app name
*/}}
{{- define "kubectl-ai.fullname" -}}
{{- printf "%s" .Release.Name -}}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubectl-ai
spec:
replicas: 1
selector:
matchLabels:
app: kubectl-ai
template:
metadata:
labels:
app: kubectl-ai
spec:
serviceAccountName: kubectl-access-kubectl-ai
containers:
- name: ollama
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
ports:
- containerPort: 11434
env:
- name: OLLAMA_LOG_LEVEL
value: "debug"
- name: OLLAMA_HOST
value: "0.0.0.0:11434"
- name: OLLAMA_KEEP_ALIVE
value: "-1"
- name: KUBECTL_AI_TIMEOUT
value: "300"
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{{- if .Values.pdb }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: kubectl-ai-pdb
spec:
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: "kubectl-ai"
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubectl-access-kubectl-ai
namespace: {{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: kubectl-access-role-kubectl-ai
namespace: {{ .Release.Namespace }}
rules:
- apiGroups: [""]
resources: ["pods", "pods/exec", "pods/log", "configmaps", "namespaces", "labels"]
verbs: ["get", "list", "create", "patch"]
- apiGroups: ["batch"]
resources: ["cronjobs", "jobs"]
verbs: ["get", "list", "create", "delete", "watch", "patch"]
- apiGroups: ["apps"]
resources: [deployments, deployments/scale]
verbs: ["get", "list", "create", "delete", "watch", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubectl-access-binding-kubectl-ai
namespace: {{ .Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: kubectl-access-role-kubectl-ai
subjects:
- kind: ServiceAccount
name: kubectl-access-kubectl-ai
namespace: {{ .Release.Namespace }}
---
{{- if .Values.serviceAccount.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Values.serviceAccount.name }}
namespace: {{ .Release.Namespace }}
annotations:
eks.amazonaws.com/role-arn: {{ .Values.serviceAccount.iamRoleArn }}
{{- end }}
11 changes: 11 additions & 0 deletions gen3-integration-tests/gen3_ci/kubectl_ai/templates/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: kubectl-ai
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: {{ .Values.service.port }}
selector:
app: kubectl-ai
24 changes: 24 additions & 0 deletions gen3-integration-tests/gen3_ci/kubectl_ai/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
image:
repository: quay.io/cdis/kubectl_ai
tag: chore_add_kubectl_ai
pullPolicy: Always

pdb: true

resources:
requests:
cpu: 2
memory: "2Gi"
limits:
cpu: 4
memory: "4Gi"

service:
type: ClusterIP
port: 11434

# Service account for accessing S3 bedrock access
serviceAccount:
create: true
name: s3-bedrock-access
iamRoleArn: arn:aws:iam::707767160287:role/kubectl-ai-irsa
4 changes: 3 additions & 1 deletion gen3-integration-tests/gen3_ci/ollama/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ RUN dnf install -y --allowerasing \
curl \
findutils \
zstd \
tar
tar \
gzip

# Create model directory
WORKDIR /models
Expand All @@ -22,6 +23,7 @@ RUN bash -c "\
ollama pull gemma4:e4b \
"


# List ollama model
RUN bash -c "\
ollama serve & \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ spec:
labels:
app: ollama
spec:
serviceAccountName: kubectl-access-ollama
containers:
- name: ollama
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
Expand All @@ -25,3 +26,7 @@ spec:
value: "debug"
- name: OLLAMA_HOST
value: "0.0.0.0:11434"
- name: OLLAMA_KEEP_ALIVE
value: "-1"
- name: KUBECTL_AI_TIMEOUT
value: "300"
6 changes: 3 additions & 3 deletions gen3-integration-tests/gen3_ci/ollama/values.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
image:
repository: quay.io/cdis/ollama
tag: master
pullPolicy: IfNotPresent
pullPolicy: Always

pdb: true

resources:
requests:
cpu: 4
memory: "10Gi"
memory: "8Gi"
limits:
cpu: 6
memory: "12Gi"
memory: "10Gi"

service:
type: ClusterIP
Expand Down
Loading
Loading