Skip to content
This repository was archived by the owner on Dec 9, 2025. It is now read-only.
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
11 changes: 7 additions & 4 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ on:

env:
GO_VERSION: "1.24"
K8S_VERSION: "v1.33.1"
K8S_VERSION: "v1.34.0-beta.0.542+f9ed14bf9b1119"
KIND_VERSION: "v0.28.0"
IMAGE_NAME: ghcr.io/google/dranet
KIND_CLUSTER_NAME: kind
Expand Down Expand Up @@ -84,12 +84,12 @@ jobs:
run: |
TMP_DIR=$(mktemp -d)
# Test binaries
curl -L https://dl.k8s.io/${{ env.K8S_VERSION }}/kubernetes-test-linux-amd64.tar.gz -o ${TMP_DIR}/kubernetes-test-linux-amd64.tar.gz
curl -L https://dl.k8s.io/ci/fast/${{ env.K8S_VERSION }}/kubernetes-test-linux-amd64.tar.gz -o ${TMP_DIR}/kubernetes-test-linux-amd64.tar.gz
tar xvzf ${TMP_DIR}/kubernetes-test-linux-amd64.tar.gz \
--directory ${TMP_DIR} \
--strip-components=3 kubernetes/test/bin/ginkgo kubernetes/test/bin/e2e.test
# kubectl
curl -L https://dl.k8s.io/${{ env.K8S_VERSION }}/bin/linux/amd64/kubectl -o ${TMP_DIR}/kubectl
curl -L https://dl.k8s.io/ci/fast/${{ env.K8S_VERSION }}/bin/linux/amd64/kubectl -o ${TMP_DIR}/kubectl
# kind
curl -Lo ${TMP_DIR}/kind https://kind.sigs.k8s.io/dl/${{ env.KIND_VERSION }}/kind-linux-amd64
# Install
Expand All @@ -105,8 +105,11 @@ jobs:
run: |
# output_dir
mkdir -p _artifacts
# build kind
kind_node_source="https://dl.k8s.io/ci/fast/${{ env.K8S_VERSION }}/kubernetes-server-linux-amd64.tar.gz"
kind build node-image --image=dra/node:latest "${kind_node_source}"
# create cluster
kind create cluster --name ${{ env.KIND_CLUSTER_NAME}} --image kindest/node:${{ env.K8S_VERSION }} --config kind.yaml
kind create cluster --name ${{ env.KIND_CLUSTER_NAME}} --image dra/node:latest --config kind.yaml
# dump the kubeconfig for later
/usr/local/bin/kind get kubeconfig --name ${{ env.KIND_CLUSTER_NAME}} > _artifacts/kubeconfig.conf

Expand Down
8 changes: 4 additions & 4 deletions cmd/dranet/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import (
"github.com/google/dranet/pkg/driver"
"github.com/prometheus/client_golang/prometheus/promhttp"

resourcev1beta1 "k8s.io/api/resource/v1beta1"
resourcev1 "k8s.io/api/resource/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
Expand All @@ -58,7 +58,7 @@ func init() {
flag.StringVar(&kubeconfig, "kubeconfig", "", "absolute path to the kubeconfig file")
flag.StringVar(&bindAddress, "bind-address", ":9177", "The IP address and port for the metrics and healthz server to serve on")
flag.StringVar(&hostnameOverride, "hostname-override", "", "If non-empty, will be used as the name of the Node that kube-network-policies is running on. If unset, the node name is assumed to be the same as the node's hostname.")
flag.StringVar(&celExpression, "filter", `attributes["dra.net/type"].StringValue != "veth"`, "CEL expression to filter network interface attributes (v1beta1.DeviceAttribute).")
flag.StringVar(&celExpression, "filter", `attributes["dra.net/type"].StringValue != "veth"`, "CEL expression to filter network interface attributes (v1.DeviceAttribute).")

flag.Usage = func() {
fmt.Fprint(os.Stderr, "Usage: dranet [options]\n\n")
Expand Down Expand Up @@ -128,9 +128,9 @@ func main() {
if celExpression != "" {
env, err := cel.NewEnv(
ext.NativeTypes(
reflect.ValueOf(resourcev1beta1.DeviceAttribute{}),
reflect.ValueOf(resourcev1.DeviceAttribute{}),
),
cel.Variable("attributes", cel.MapType(cel.StringType, cel.ObjectType("v1beta1.DeviceAttribute"))),
cel.Variable("attributes", cel.MapType(cel.StringType, cel.ObjectType("v1.DeviceAttribute"))),
)
if err != nil {
klog.Fatalf("error creating CEL environment: %v", err)
Expand Down
2 changes: 1 addition & 1 deletion examples/deviceclass.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: DeviceClass
metadata:
name: dra.net
Expand Down
13 changes: 7 additions & 6 deletions examples/repeatresourceclaimtemplate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: DeviceClass
metadata:
name: multinic
Expand All @@ -21,7 +21,7 @@ spec:
- cel:
expression: device.driver == "dra.net"
---
apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
name: reapply-interfaces-template
Expand All @@ -30,10 +30,11 @@ spec:
devices:
requests:
- name: reapply-interfaces-template
deviceClassName: multinic
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy8"
exactly:
deviceClassName: multinic
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy8"
---
apiVersion: apps/v1
kind: Deployment
Expand Down
11 changes: 6 additions & 5 deletions examples/resourceclaim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: dummy-interface-static-ip
spec:
devices:
requests:
- name: req-dummy
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].type == "dummy"
exactly:
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].type == "dummy"
config:
- opaque:
driver: dra.net
Expand Down
11 changes: 6 additions & 5 deletions examples/resourceclaim_advanced.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: dummy-interface-advanced
spec:
devices:
requests:
- name: req-dummy-advanced
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
exactly:
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
config:
- opaque:
driver: dra.net
Expand Down
11 changes: 6 additions & 5 deletions examples/resourceclaim_bigtcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: dummy-interface-bigtcp
spec:
devices:
requests:
- name: req-dummy-bigtcp
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
exactly:
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
config:
- opaque:
driver: dra.net
Expand Down
11 changes: 6 additions & 5 deletions examples/resourceclaim_disable_ebpf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: dummy-interface-disable-ebpf
spec:
devices:
requests:
- name: req-dummy
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
exactly:
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
config:
- opaque:
driver: dra.net
Expand Down
11 changes: 6 additions & 5 deletions examples/resourceclaim_route.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: dummy-interface-static-ip-route
spec:
devices:
requests:
- name: req-dummy
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].type == "dummy"
exactly:
deviceClassName: dra.net
selectors:
- cel:
expression: device.attributes["dra.net"].type == "dummy"
config:
- opaque:
driver: dra.net
Expand Down
13 changes: 7 additions & 6 deletions examples/resourceclaimtemplate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: DeviceClass
metadata:
name: multinic
Expand All @@ -21,7 +21,7 @@ spec:
- cel:
expression: device.driver == "dra.net"
---
apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
name: phy-interfaces-template
Expand All @@ -30,10 +30,11 @@ spec:
devices:
requests:
- name: phy-interfaces-template
deviceClassName: multinic
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
exactly:
deviceClassName: multinic
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0"
---
apiVersion: apps/v1
kind: Deployment
Expand Down
15 changes: 8 additions & 7 deletions examples/resourceclaimtemplate_double.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: DeviceClass
metadata:
name: multinic
Expand All @@ -21,7 +21,7 @@ spec:
- cel:
expression: device.driver == "dra.net"
---
apiVersion: resource.k8s.io/v1beta1
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
name: phy-interfaces-template
Expand All @@ -30,11 +30,12 @@ spec:
devices:
requests:
- name: phy-interfaces-template
count: 2
deviceClassName: multinic
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0" || device.attributes["dra.net"].ifName == "dummy1"
exactly:
count: 2
deviceClassName: multinic
selectors:
- cel:
expression: device.attributes["dra.net"].ifName == "dummy0" || device.attributes["dra.net"].ifName == "dummy1"
---
apiVersion: apps/v1
kind: Deployment
Expand Down
34 changes: 23 additions & 11 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ module github.com/google/dranet

go 1.24.0

replace (
k8s.io/api => github.com/kubernetes/kubernetes/staging/src/k8s.io/api v0.0.0-20250724145648-d21da29c9ec4
k8s.io/apimachinery => github.com/kubernetes/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20250724145648-d21da29c9ec4
k8s.io/client-go => github.com/kubernetes/kubernetes/staging/src/k8s.io/client-go v0.0.0-20250724145648-d21da29c9ec4
k8s.io/component-base => github.com/kubernetes/kubernetes/staging/src/k8s.io/component-base v0.0.0-20250724145648-d21da29c9ec4
k8s.io/dynamic-resource-allocation => github.com/kubernetes/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20250724145648-d21da29c9ec4
k8s.io/kubelet => github.com/kubernetes/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20250724145648-d21da29c9ec4
)

require (
cloud.google.com/go/compute v1.41.0
cloud.google.com/go/compute/metadata v0.7.0
Expand All @@ -23,12 +32,12 @@ require (
golang.org/x/time v0.12.0
google.golang.org/api v0.243.0
google.golang.org/protobuf v1.36.6
k8s.io/api v0.33.3
k8s.io/apimachinery v0.33.3
k8s.io/client-go v0.33.3
k8s.io/api v0.34.0-beta.0
k8s.io/apimachinery v0.34.0-beta.0
k8s.io/client-go v0.34.0-beta.0
k8s.io/cloud-provider-gcp v0.0.0-20250326051131-7056e3facd39
k8s.io/component-helpers v0.33.3
k8s.io/dynamic-resource-allocation v0.33.3
k8s.io/component-helpers v0.34.0-beta.0
k8s.io/dynamic-resource-allocation v0.0.0
k8s.io/klog/v2 v2.130.1
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8
Expand All @@ -53,7 +62,7 @@ require (
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/s2a-go v0.1.9 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
Expand All @@ -67,12 +76,13 @@ require (
github.com/mdlayher/packet v1.1.2 // indirect
github.com/mdlayher/socket v0.5.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/onsi/ginkgo/v2 v2.22.1 // indirect
github.com/opencontainers/runtime-spec v1.2.1 // indirect
github.com/pierrec/lz4/v4 v4.1.22 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.65.0 // indirect
github.com/prometheus/procfs v0.16.1 // indirect
Expand All @@ -90,6 +100,8 @@ require (
go.opentelemetry.io/otel/trace v1.36.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
go.yaml.in/yaml/v2 v2.4.2 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.40.0 // indirect
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect
golang.org/x/net v0.42.0 // indirect
Expand All @@ -104,10 +116,10 @@ require (
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/cri-api v0.33.3 // indirect
k8s.io/kube-openapi v0.0.0-20250610211856-8b98d1ed966a // indirect
k8s.io/cri-api v0.34.0-beta.0 // indirect
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
k8s.io/kubelet v0.33.3 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
sigs.k8s.io/yaml v1.5.0 // indirect
)
Loading
Loading