Skip to content

Commit c4ebce6

Browse files
yuval-kEItanyapeterj
committed
feat: allow running with vanilla k8s (#3)
* enable websockets (#4) Signed-off-by: Peter Jausovec <peter.jausovec@solo.io> Co-authored-by: Peter Jausovec <peter.jausovec@solo.io> * feat: allow running with vanilla k8s - add a helm chart - allow JWT auth instead of mTLS * update helm chart images * fix rbac. note that JWT verification is not cached and might not work on some k8s distributions that not expose the JWKS * fix: add chart boilerplate headers * fix: support jwt helm install on plain kind * feat: add substrate crds helm chart * feat: make jwt helm installs standalone * fix: make helm defaults cloud-neutral * fix: sync crd chart templates * fix: use agentgateway in helm chart * fix: update agentgateway install overlays * fix: project agentgateway tls key separately --------- Signed-off-by: Peter Jausovec <peter.jausovec@solo.io> Co-authored-by: Eitan Yarmush <eitan.yarmush@solo.io> Co-authored-by: Peter Jausovec <peter.jausovec@solo.io>
1 parent fa623c6 commit c4ebce6

49 files changed

Lines changed: 4299 additions & 261 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yaml

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ jobs:
6767
- name: Install ko
6868
uses: ko-build/setup-ko@v0.7
6969

70+
- name: Install Helm
71+
uses: azure/setup-helm@v4
72+
7073
- name: Log in to GHCR
7174
uses: docker/login-action@v3
7275
with:
@@ -85,7 +88,7 @@ jobs:
8588
run: |
8689
set -o errexit -o nounset -o pipefail
8790
88-
for component in ateapi atelet ateom-gvisor podcertcontroller atenet; do
91+
for component in ateapi atecontroller atelet ateom-gvisor podcertcontroller atenet; do
8992
KO_DOCKER_REPO="${IMAGE_REPOSITORY}/${component}" \
9093
./hack/run-tool.sh ko build \
9194
--tags "${IMAGE_TAGS}" \
@@ -94,6 +97,36 @@ jobs:
9497
"./cmd/${component}"
9598
done
9699
100+
- name: Package and push Helm charts
101+
if: inputs.create_release
102+
env:
103+
HELM_EXPERIMENTAL_OCI: "1"
104+
CHART_REPOSITORY: oci://ghcr.io/kagent-dev/substrate/helm
105+
run: |
106+
set -o errexit -o nounset -o pipefail
107+
108+
tag="${{ steps.tag.outputs.value }}"
109+
chart_version="${tag#v}"
110+
package_dir="${RUNNER_TEMP}/helm-packages"
111+
mkdir -p "${package_dir}"
112+
113+
echo "${{ secrets.GITHUB_TOKEN }}" \
114+
| helm registry login ghcr.io \
115+
--username "${{ github.actor }}" \
116+
--password-stdin
117+
118+
helm package charts/substrate-crds \
119+
--destination "${package_dir}" \
120+
--version "${chart_version}" \
121+
--app-version "${tag}"
122+
helm package charts/substrate \
123+
--destination "${package_dir}" \
124+
--version "${chart_version}" \
125+
--app-version "${tag}"
126+
127+
helm push "${package_dir}/substrate-crds-${chart_version}.tgz" "${CHART_REPOSITORY}"
128+
helm push "${package_dir}/substrate-${chart_version}.tgz" "${CHART_REPOSITORY}"
129+
97130
- name: Create GitHub Release
98131
if: inputs.create_release
99132
uses: softprops/action-gh-release@v2

Makefile

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,10 @@ build: build-images build-atectl
4040

4141
.PHONY: build-images
4242
build-images:
43-
$(KO) build \
43+
$(KO) build --base-import-paths \
4444
--ldflags="$(LDFLAGS)" \
4545
./cmd/ateapi \
46+
./cmd/atecontroller \
4647
./cmd/atelet \
4748
./cmd/podcertcontroller \
4849
./cmd/atenet
@@ -96,3 +97,19 @@ verify: test
9697
.PHONY: clean
9798
clean:
9899
rm -rf $(BINDIR)
100+
101+
# Render the substrate Helm chart into manifests/ate-install/ (mTLS mode,
102+
# the historical default install). Run this whenever charts/substrate/ changes.
103+
.PHONY: helm-template
104+
helm-template:
105+
@./hack/render-manifests.sh
106+
107+
# Verify that manifests/ate-install/ matches the chart output. Used in CI.
108+
.PHONY: verify-helm-template
109+
verify-helm-template:
110+
@./hack/render-manifests.sh --check
111+
112+
# Verify that the CRD chart mirrors the generated CRDs.
113+
.PHONY: verify-crd-chart
114+
verify-crd-chart:
115+
@./hack/verify/crd-chart.sh

README.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ To quickly set up the complete environment:
8989
2. Run the following steps:
9090
```shell
9191
# create cluster and local registry
92-
hack/create-kind-cluster.sh
92+
KIND_ENABLE_PODCERT=false hack/create-kind-cluster.sh
9393

94-
# install ate, valkey, rustfs
95-
hack/install-ate-kind.sh --deploy-ate-system
94+
# install ate, valkey, rustfs using Helm in JWT mode
95+
hack/install-ate-kind-jwt.sh
9696

9797
# install counter demo
9898
hack/install-ate-kind.sh --deploy-demo-counter
@@ -113,6 +113,21 @@ kubectl port-forward -n ate-system svc/atenet-router 8000:80
113113
curl -X POST -H "Host: my-counter-1.demo.actors.resources.substrate.ate.dev" -i http://localhost:8000/
114114
```
115115

116+
#### mTLS mode
117+
118+
JWT mode is the default install path and does not require pod certificate
119+
feature gates. To test the older mTLS path, create kind with the
120+
`ClusterTrustBundle` / `PodCertificateRequest` feature gates enabled and use the
121+
mTLS install helper.
122+
123+
```shell
124+
# create cluster WITH podcert feature gates
125+
hack/create-kind-cluster.sh
126+
127+
# install ate using the mTLS manifests path
128+
hack/install-ate-kind.sh --deploy-ate-system
129+
```
130+
116131
### GKE Quickstart (Development)
117132

118133
1. Create and configure your environment file:

charts/substrate-crds/Chart.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
apiVersion: v2
16+
name: substrate-crds
17+
description: Agent Substrate CustomResourceDefinitions.
18+
type: application
19+
version: 0.1.0
20+
appVersion: "0.1.0"
21+
home: https://github.com/agent-substrate/substrate
22+
sources:
23+
- https://github.com/agent-substrate/substrate
24+
keywords:
25+
- agent
26+
- actor
27+
- substrate
28+
- crds

charts/substrate-crds/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# substrate-crds
2+
3+
Helm chart for installing the Agent Substrate CRDs.
4+
5+
Install this chart before installing the main `substrate` chart:
6+
7+
```bash
8+
helm upgrade --install substrate-crds ./charts/substrate-crds
9+
helm upgrade --install substrate ./charts/substrate --namespace ate-system --create-namespace
10+
```
11+
12+
The CRD YAMLs in `templates/` mirror `manifests/ate-install/generated/`.
13+
Run `hack/verify/crd-chart.sh` to verify they are in sync.

0 commit comments

Comments
 (0)