Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
54a977a
Initial commit
GlacierWalrus Jan 22, 2025
9cb3999
wip
GlacierWalrus Jan 22, 2025
dffe11a
wip
GlacierWalrus Jan 22, 2025
364aaab
fix bs
GlacierWalrus Jan 23, 2025
dd32d92
Update schema for sercie
GlacierWalrus Jan 24, 2025
c655ad9
Update commit sha
GlacierWalrus Feb 2, 2025
081820f
add code changes
GlacierWalrus Feb 3, 2025
9aed186
add go mods/sums/work
GlacierWalrus Feb 3, 2025
1efa8dc
Add buildscript changes for k3d testing
GlacierWalrus Feb 3, 2025
6579efe
Add nix changes to make this work locally
GlacierWalrus Feb 3, 2025
577472b
Add k3d convenience script for myself
GlacierWalrus Feb 3, 2025
3bbb186
Remove broken linter step
GlacierWalrus Feb 3, 2025
0b8d63b
bump img version
GlacierWalrus Feb 7, 2025
f697499
working?
GlacierWalrus Feb 10, 2025
a88ea62
Update commit sha
GlacierWalrus Feb 11, 2025
1fe20aa
wip
GlacierWalrus Feb 12, 2025
cb597b2
wip: add overwhelming ingress config
GlacierWalrus Mar 2, 2025
a2b3a6d
wip
GlacierWalrus Mar 4, 2025
8527246
wip
GlacierWalrus Mar 4, 2025
c4dda2a
wip: circular import needs fixing
GlacierWalrus Mar 6, 2025
7beb116
various fixes to get imports working
GlacierWalrus Mar 17, 2025
6a19727
wip fixing import loop
GlacierWalrus Mar 17, 2025
14765d6
remove commented functions
GlacierWalrus Mar 17, 2025
e031f95
WIP Evicerate tests to get this to build
GlacierWalrus Mar 17, 2025
894a2b5
Add api changes
GlacierWalrus Mar 19, 2025
0234e57
Update commit sha
GlacierWalrus Mar 19, 2025
35fa9d8
Update commit sha
GlacierWalrus Mar 20, 2025
c9b6b29
Building and running, no ingress
GlacierWalrus Mar 20, 2025
1aeab44
change http rule to lis ttype
GlacierWalrus Mar 21, 2025
f606020
lots and lots and lots of type fixes
GlacierWalrus Mar 22, 2025
9bc4b5d
go mod changes (kill me)
GlacierWalrus Mar 22, 2025
a518de4
Add json type changes
GlacierWalrus Mar 22, 2025
25b08c1
remove accidently added binary
GlacierWalrus Mar 22, 2025
ec05a13
fix rebase goof
GlacierWalrus Mar 23, 2025
631f992
Seems to be working?
GlacierWalrus Mar 24, 2025
2985432
I think this will fix the exec issue...
GlacierWalrus Mar 25, 2025
394bcd1
Update CLI to factor in deployments
GlacierWalrus Mar 25, 2025
9a4313f
Add changes I forgot to add last commit
GlacierWalrus Mar 25, 2025
a0a1e37
Add availability check for deployment pods
GlacierWalrus Mar 25, 2025
a7b4482
Actually use the deployment check
GlacierWalrus Mar 25, 2025
574b8e0
Add debug logs
GlacierWalrus Mar 26, 2025
4c650b5
Add debug logs
GlacierWalrus Mar 26, 2025
de44782
Cleanup debug statements
GlacierWalrus Mar 26, 2025
67a59f0
Add go.sum
GlacierWalrus Mar 26, 2025
3db95c6
update port forwarding for deployments
GlacierWalrus Mar 26, 2025
54cc1cc
reset docker image names
GlacierWalrus Mar 26, 2025
944cae4
Remove development scripts
GlacierWalrus Mar 26, 2025
4453d86
Fix missing tls and annotations
GlacierWalrus Mar 27, 2025
b1e8418
Fix missing tls and annotations
GlacierWalrus Mar 27, 2025
94a7464
Fix annotation validation
GlacierWalrus Mar 27, 2025
538085b
Fix annotation validation
GlacierWalrus Mar 27, 2025
1fb71e8
Add debug logging
GlacierWalrus Apr 1, 2025
741c91b
more debugging
GlacierWalrus Apr 1, 2025
37a54aa
even more debug logs
GlacierWalrus Apr 1, 2025
9f8df96
Revert "even more debug logs"
GlacierWalrus Apr 1, 2025
766ae56
Revert "more debugging"
GlacierWalrus Apr 1, 2025
461571c
Revert "Add debug logging"
GlacierWalrus Apr 1, 2025
944e77e
Add log for case which caused me issues
GlacierWalrus Apr 1, 2025
47ff18c
Add wait for deployment deleteion
GlacierWalrus Apr 1, 2025
10f9cae
Cleanup ExtraIngresses on teardown
GlacierWalrus Apr 2, 2025
be22797
Fix bug where existing PVC is deleted during failed update
GlacierWalrus Apr 2, 2025
1454936
Add ingress, extra ingress, and service cleanup on stop
GlacierWalrus Apr 2, 2025
a6a2361
Merge branch 'feat/support-deployment-user-services' into feat/suppor…
GlacierWalrus Apr 20, 2025
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
6 changes: 5 additions & 1 deletion .envrc
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
use flake
#use flake
export GOPATH=$(asdf where golang)/packages
export GOROOT=$(asdf where golang)/go
export GOBIN=$(go env GOPATH)/bin
export PATH="${PATH}:$(go env GOPATH)/bin"
1 change: 0 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
linters:
enable:
- exhaustruct
- exportloopref
- gomnd
- staticcheck
Expand Down
89 changes: 89 additions & 0 deletions api/golang/core/lib/services/extra_ingress_config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package services

import (
"fmt"
"strings"

"github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_interface/objects/kubernetes"
)

// ToStarlark converts the ExtraIngressConfig to its Starlark representation
func ExtraIngressConfigToStarlark(e *kubernetes.ExtraIngressConfig) string {
if e == nil {
return "None"
}

ingressStrings := []string{}
for _, ingress := range e.IngressSpecs {
ingressStrings = append(ingressStrings, ingressToStarlark(ingress))
}

return fmt.Sprintf("ExtraIngressConfig(ingresses=[%s])", strings.Join(ingressStrings, ", "))
}

// ingressToStarlark converts an IngressSpec to its Starlark representation
func ingressToStarlark(i *kubernetes.IngressSpec) string {
if i == nil {
return "None"
}

starlarkFields := []string{}

if i.Host != "" {
starlarkFields = append(starlarkFields, fmt.Sprintf(`host=%q`, i.Host))
}

if i.IngressClassName != "" {
starlarkFields = append(starlarkFields, fmt.Sprintf(`ingress_class_name=%q`, i.IngressClassName))
}

if i.Annotations != nil && len(*i.Annotations) > 0 {
annotationStrings := []string{}
for key, value := range *i.Annotations {
annotationStrings = append(annotationStrings, fmt.Sprintf("%q:%q", key, value))
}
starlarkFields = append(starlarkFields, fmt.Sprintf(`annotations={%s}`, strings.Join(annotationStrings, ",")))
}

if i.TlsConfig != nil {
starlarkFields = append(starlarkFields, fmt.Sprintf(`tls=IngressTLSConfig(secret_name=%q)`, i.TlsConfig.SecretName))
}

if len(i.HttpRules) > 0 {
ruleStrings := []string{}
for _, rule := range i.HttpRules {
ruleStrings = append(ruleStrings, httpRuleToStarlark(rule))
}
starlarkFields = append(starlarkFields, fmt.Sprintf(`http_rules=[%s]`, strings.Join(ruleStrings, ", ")))
}

return fmt.Sprintf("IngressSpec(%s)", strings.Join(starlarkFields, ","))
}

// httpRuleToStarlark converts an HttpRule to its Starlark representation
func httpRuleToStarlark(r *kubernetes.HttpRule) string {
if r == nil {
return "None"
}

starlarkFields := []string{}

if r.Path != "" {
starlarkFields = append(starlarkFields, fmt.Sprintf(`path=%q`, r.Path))
}

if r.PathType != "" {
starlarkFields = append(starlarkFields, fmt.Sprintf(`path_type=%q`, r.PathType))
}

if r.PortConfig != nil {
if r.PortConfig.Name != "" {
starlarkFields = append(starlarkFields, fmt.Sprintf(`port_name=%q`, r.PortConfig.Name))
}
if r.PortConfig.Number != 0 {
starlarkFields = append(starlarkFields, fmt.Sprintf(`port=%d`, r.PortConfig.Number))
}
}

return fmt.Sprintf("IngressHttpRule(%s)", strings.Join(starlarkFields, ","))
}
38 changes: 38 additions & 0 deletions api/golang/core/lib/services/kubernetes_config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package services

import (
"fmt"
"strings"

"github.com/kurtosis-tech/kurtosis/container-engine-lib/lib/backend_interface/objects/kubernetes"
)

// KubernetesConfig represents the Kubernetes-specific configuration for a service
type KubernetesConfig struct {
// ExtraIngressConfigs allows setting up Kubernetes Ingress resources to expose ports to the public internet
ExtraIngressConfig *kubernetes.ExtraIngressConfig

// WorkloadType controls what type of Kubernetes resource to create for a service
// Valid values are "" (empty string, defaults to "pod"), "pod", or "deployment"
// When set to "deployment", creates a Deployment with a single replica for increased resilience
WorkloadType string
}

// ToStarlark converts the KubernetesConfig to its Starlark representation
func (k *KubernetesConfig) ToStarlark() string {
if k == nil {
return "None"
}

starlarkFields := []string{}

if k.ExtraIngressConfig != nil {
starlarkFields = append(starlarkFields, fmt.Sprintf(`extra_ingress_config=%s`, ExtraIngressConfigToStarlark(k.ExtraIngressConfig)))
}

if k.WorkloadType != "" {
starlarkFields = append(starlarkFields, fmt.Sprintf(`workload_type="%s"`, k.WorkloadType))
}

return fmt.Sprintf("KubernetesConfig(%s)", strings.Join(starlarkFields, ","))
}
8 changes: 7 additions & 1 deletion api/golang/core/lib/services/service_config_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ package services

import (
"fmt"
"github.com/kurtosis-tech/kurtosis/api/golang/core/kurtosis_core_rpc_api_bindings"
"strings"

"github.com/kurtosis-tech/kurtosis/api/golang/core/kurtosis_core_rpc_api_bindings"
)

type FilesArtifactUUID string
Expand Down Expand Up @@ -36,6 +37,7 @@ func GetServiceConfigStarlark(
memoryAllocationMegabytes int,
minCpuMilliCores int,
minMemoryMegaBytes int,
kubernetesConfig *KubernetesConfig,
) string {
starlarkFields := []string{}

Expand Down Expand Up @@ -87,5 +89,9 @@ func GetServiceConfigStarlark(
starlarkFields = append(starlarkFields, fmt.Sprintf(`min_memory=%d`, minMemoryMegaBytes))
}

if kubernetesConfig != nil {
starlarkFields = append(starlarkFields, fmt.Sprintf(`kubernetes_config=%s`, kubernetesConfig.ToStarlark()))
}

return fmt.Sprintf("ServiceConfig(%s)", strings.Join(starlarkFields, ","))
}
35 changes: 26 additions & 9 deletions api/golang/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ module github.com/kurtosis-tech/kurtosis/api/golang
go 1.20

replace (
github.com/kurtosis-tech/kurtosis/cloud/api/golang => ../../cloud/api/golang
github.com/kurtosis-tech/kurtosis/container-engine-lib => ../../container-engine-lib
github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang => ../../grpc-file-transfer/golang
github.com/kurtosis-tech/kurtosis/path-compression => ../../path-compression
)
Expand All @@ -15,52 +17,67 @@ require (
github.com/go-yaml/yaml v2.1.0+incompatible
github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20230818182330-1a86869414d2
github.com/kurtosis-tech/kurtosis/cloud/api/golang v0.0.0-20230803130419-099ee7a4e3dc
github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20230818184218-f4e3e773463b
github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20231024185242-de10c7bab36c
github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20230803130419-099ee7a4e3dc // needs to be pinned as the replace above won't work when importing the api standalone
github.com/kurtosis-tech/kurtosis/path-compression v0.0.0-20240307154559-64d2929cd265 // needs to be pinned as the replace above won't work when importing the api standalone
github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409
github.com/labstack/echo/v4 v4.11.3
github.com/oapi-codegen/runtime v1.1.0
github.com/sirupsen/logrus v1.9.3
github.com/stretchr/testify v1.8.4
github.com/stretchr/testify v1.10.0
google.golang.org/grpc v1.57.1
google.golang.org/protobuf v1.31.0
google.golang.org/protobuf v1.33.0
)

require github.com/kurtosis-tech/kurtosis/container-engine-lib v0.0.0

require (
github.com/adrg/xdg v0.4.0 // indirect
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/swag v0.22.4 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.4.0 // indirect
github.com/invopop/yaml v0.2.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/labstack/gommon v0.4.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mholt/archiver v3.1.1+incompatible // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/nwaples/rardecode v1.1.3 // indirect
github.com/perimeterx/marshmallow v1.1.5 // indirect
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/stretchr/objx v0.5.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/ulikunitz/xz v0.5.11 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.2.2 // indirect
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/text v0.15.0 // indirect
google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.27.2 // indirect
k8s.io/apimachinery v0.27.2 // indirect
k8s.io/klog/v2 v2.90.1 // indirect
k8s.io/utils v0.0.0-20230711102312-30195339c3c7 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
)
Loading
Loading