Skip to content
Merged
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
1 change: 1 addition & 0 deletions .github/actions/install-prometheus/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ kubelet:
scrape: enabled
prometheus:
prometheusSpec:
maximumStartupDurationSeconds: 60
tolerations:
- key: CriticalAddonsOnly
operator: Exists
Expand Down
100 changes: 100 additions & 0 deletions .github/workflows/aws.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Build and Push AWS Karpenter Provider Image

on:
workflow_dispatch:
push:
branches:
- main
- release-*

jobs:
build:
runs-on: ubuntu-latest

env:
KO_DOCKER_REPO: docker.io/inftyai/karpenter-provider-aws

steps:
- name: Checkout forked karpenter
uses: actions/checkout@v4

- name: Set up Go 1.24
uses: actions/setup-go@v5
with:
go-version: "1.24"

- name: Generate commit info and image tag
id: tag
run: |
BRANCH="${GITHUB_REF##*/}"
COMMIT=$(git rev-parse HEAD)
TIMESTAMP=$(git show -s --format=%ct "$COMMIT")
VERSION_DATE=$(date -u -d "@$TIMESTAMP" +'%Y%m%d%H%M%S')
PSEUDO_VERSION="v0.0.0-${VERSION_DATE}-${COMMIT:0:12}"

if [[ "$BRANCH" == "main" ]]; then
TAG="latest"
IMAGE_TAG="latest"
elif [[ "$BRANCH" == release-* ]]; then
TAG="${BRANCH#release-}" # e.g. v0.36.2
IMAGE_TAG="${TAG#v}" # e.g. 0.36.2
else
TAG="fork-${PSEUDO_VERSION}"
IMAGE_TAG="${TAG}" # keep full tag
fi

{
echo "commit=$COMMIT"
echo "version=$PSEUDO_VERSION"
echo "tag=$TAG"
echo "image_tag=$IMAGE_TAG"
} >> "$GITHUB_OUTPUT"
echo "✅ Using image tag: $IMAGE_TAG"

- name: Clone karpenter-provider-aws
run: |
git clone https://github.com/aws/karpenter-provider-aws.git
cd karpenter-provider-aws

TAG="${{ steps.tag.outputs.tag }}"
if [[ "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "🔄 Attempting to checkout provider tag: $TAG"
if git rev-parse "refs/tags/$TAG" >/dev/null 2>&1; then
git checkout "tags/$TAG" -b "build-from-tag-$TAG"
else
echo "❌ Tag '$TAG' not found in karpenter-provider-aws repo."
exit 1
fi
else
echo "🔄 Checking out provider branch: main"
git checkout main
fi

- name: Replace karpenter module with forked commit version
run: |
cd karpenter-provider-aws
go mod edit -replace sigs.k8s.io/karpenter=github.com/InftyAI/karpenter@${{ steps.tag.outputs.version }}
go mod tidy

- name: Install build tools via make toolchain
run: |
cd karpenter-provider-aws
make toolchain

- name: Login to DockerHub
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 #v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
Copy link
Member

Choose a reason for hiding this comment

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

The secrets are added.

password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push image using ko
run: |
cd karpenter-provider-aws
ko build --bare \
--tags ${{ steps.tag.outputs.image_tag }} \
github.com/aws/karpenter-provider-aws/cmd/controller

- name: Show pushed image
run: |
echo "✅ Image pushed to:"
echo "${{ env.KO_DOCKER_REPO }}:${{ steps.tag.outputs.image_tag }}"
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ help: ## Display help
presubmit: verify test licenses vulncheck ## Run all steps required for code to be checked in

install-kwok: ## Install kwok provider
UNINSTALL_KWOK=false ./hack/install-kwok.sh
./hack/install-kwok.sh

uninstall-kwok: ## Uninstall kwok provider
UNINSTALL_KWOK=true ./hack/install-kwok.sh
UNINSTALL=true ./hack/install-kwok.sh

build-with-kind: # build with kind assumes the image will be uploaded directly onto the kind control plane, without an image repository
$(eval CONTROLLER_IMG=$(shell $(WITH_GOFLAGS) KO_DOCKER_REPO="$(KWOK_REPO)" ko build sigs.k8s.io/karpenter/kwok))
Expand All @@ -29,7 +29,7 @@ build: ## Build the Karpenter KWOK controller images using ko build
$(eval CONTROLLER_IMG=$(shell $(WITH_GOFLAGS) KO_DOCKER_REPO="$(KWOK_REPO)" ko build -B sigs.k8s.io/karpenter/kwok))
$(eval IMG_REPOSITORY=$(shell echo $(CONTROLLER_IMG) | cut -d "@" -f 1 | cut -d ":" -f 1))
$(eval IMG_TAG=$(shell echo $(CONTROLLER_IMG) | cut -d "@" -f 1 | cut -d ":" -f 2 -s))
$(eval IMG_DIGEST=$(shell echo $(CONTROLLER_IMG) | cut -d "@" -f 2))
$(eval IMG_DIGEST=$(shell echo $(CONTROLLER_IMG) | grep -q "@" && echo $(CONTROLLER_IMG) | cut -d "@" -f 2 || echo ""))

apply-with-kind: verify build-with-kind ## Deploy the kwok controller from the current state of your git repository into your ~/.kube/config cluster
kubectl apply -f kwok/charts/crds
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Karpenter is a multi-cloud project with implementations by the following cloud p
- [AWS](https://github.com/aws/karpenter-provider-aws)
- [Azure](https://github.com/Azure/karpenter-provider-azure)
- [AlibabaCloud](https://github.com/cloudpilot-ai/karpenter-provider-alibabacloud)
- [Bizfly Cloud](https://github.com/bizflycloud/karpenter-provider-bizflycloud)
- [Cluster API](https://github.com/kubernetes-sigs/karpenter-provider-cluster-api)
- [GCP](https://github.com/cloudpilot-ai/karpenter-provider-gcp)
- [Proxmox](https://github.com/sergelogvinov/karpenter-provider-proxmox)
Expand Down
24 changes: 13 additions & 11 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module sigs.k8s.io/karpenter

go 1.24.2
go 1.24.4

require (
github.com/Pallinder/go-randomdata v1.2.0
Expand All @@ -9,6 +9,7 @@ require (
github.com/docker/docker v28.2.2+incompatible
github.com/go-logr/logr v1.4.3
github.com/imdario/mergo v0.3.16
github.com/inftyai/llmaz v0.1.3
github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/gomega v1.37.0
Expand All @@ -18,8 +19,8 @@ require (
github.com/samber/lo v1.50.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.0
golang.org/x/text v0.25.0
golang.org/x/time v0.11.0
golang.org/x/text v0.26.0
golang.org/x/time v0.12.0
k8s.io/api v0.32.3
k8s.io/apiextensions-apiserver v0.32.3
k8s.io/apimachinery v0.32.3
Expand All @@ -36,12 +37,12 @@ require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/zapr v1.3.0
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
Expand All @@ -65,19 +66,19 @@ require (
github.com/spf13/cobra v1.8.1 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/x448/float16 v0.8.4 // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/net v0.40.0 // indirect
golang.org/x/oauth2 v0.24.0 // indirect
golang.org/x/sys v0.32.0 // indirect
golang.org/x/term v0.30.0 // indirect
golang.org/x/tools v0.31.0 // indirect
golang.org/x/sys v0.33.0 // indirect
golang.org/x/term v0.32.0 // indirect
golang.org/x/tools v0.33.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
sigs.k8s.io/yaml v1.4.0
)

Expand All @@ -86,7 +87,8 @@ require (
github.com/google/btree v1.1.3 // indirect
github.com/rogpeppe/go-internal v1.13.1 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
golang.org/x/sync v0.14.0 // indirect
golang.org/x/sync v0.15.0 // indirect
sigs.k8s.io/lws v0.5.1 // indirect
)

retract (
Expand Down
Loading
Loading