mirror of
https://github.com/YuzuZensai/netbird-kubernetes-operator.git
synced 2026-09-13 10:49:15 +00:00
This change adds a new import resource which enables exposing Netbird resources as Kubernetes services. This remove the need to add sidecars to every pod. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a new `NetworkEgress` custom resource (`netbird.io/v1alpha1`) with CRD, schema validation, and status/conditions. * Extended controller functionality to create egress services and translate egress rules into import `EndpointSlice` resources; egress pods now include a kube-egress-forwarder sidecar. * **Bug Fixes** * Added missing deep-copy and declarative apply support for the new `NetworkEgress` API types. * **Documentation** * Updated README/API reference and added example manifests for `NetworkEgress` (including IP/FQDN target usage). <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Philip Laine <philip.laine@gmail.com>
277 lines
4.5 KiB
YAML
277 lines
4.5 KiB
YAML
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: {{ include "netbird-operator.fullname" . }}
|
|
labels:
|
|
{{- include "netbird-operator.labels" . | nindent 4 }}
|
|
rules:
|
|
- apiGroups:
|
|
- netbird.io
|
|
resources:
|
|
- nbsetupkeys
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- netbird.io
|
|
resources:
|
|
- nbsetupkeys/finalizers
|
|
verbs:
|
|
- update
|
|
- apiGroups:
|
|
- netbird.io
|
|
resources:
|
|
- nbsetupkeys/status
|
|
verbs:
|
|
- get
|
|
- patch
|
|
- update
|
|
- apiGroups:
|
|
- netbird.io
|
|
resources:
|
|
- nbgroups
|
|
- nbresources
|
|
- nbroutingpeers
|
|
- nbpolicies
|
|
- setupkeys
|
|
- groups
|
|
- networkrouters
|
|
- networkresources
|
|
- networkegresses
|
|
- sidecarprofiles
|
|
- clusterproxies
|
|
verbs:
|
|
- get
|
|
- patch
|
|
- update
|
|
- list
|
|
- watch
|
|
- create
|
|
- delete
|
|
- apiGroups:
|
|
- netbird.io
|
|
resources:
|
|
- nbgroups/status
|
|
- nbresources/status
|
|
- nbroutingpeers/status
|
|
- nbpolicies/status
|
|
- setupkeys/status
|
|
- groups/status
|
|
- networkrouters/status
|
|
- networkresources/status
|
|
- networkregresses/status
|
|
- sidecarprofiles/status
|
|
- clusterproxies/status
|
|
verbs:
|
|
- get
|
|
- patch
|
|
- update
|
|
- apiGroups:
|
|
- netbird.io
|
|
resources:
|
|
- nbgroups/finalizers
|
|
- nbresources/finalizers
|
|
- nbroutingpeers/finalizers
|
|
- nbpolicies/finalizers
|
|
- setupkeys/finalizers
|
|
- groups/finalizers
|
|
- networkrouters/finalizers
|
|
- networkresources/finalizers
|
|
- networkegresses/finalizers
|
|
- sidecarprofiles/finalizers
|
|
verbs:
|
|
- update
|
|
- apiGroups:
|
|
- "discovery.k8s.io"
|
|
resources:
|
|
- endpointslices
|
|
verbs:
|
|
- get
|
|
- patch
|
|
- update
|
|
- list
|
|
- watch
|
|
- create
|
|
- delete
|
|
- apiGroups:
|
|
- "rbac.authorization.k8s.io"
|
|
resources:
|
|
- roles
|
|
- rolebindings
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- create
|
|
- update
|
|
- patch
|
|
- delete
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- configmaps
|
|
- serviceaccounts
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- create
|
|
- update
|
|
- patch
|
|
- delete
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- services
|
|
verbs:
|
|
- get
|
|
- patch
|
|
- update
|
|
- list
|
|
- watch
|
|
- create
|
|
- delete
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- namespaces
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- services/finalizers
|
|
verbs:
|
|
- update
|
|
- apiGroups:
|
|
- apps
|
|
resources:
|
|
- deployments
|
|
verbs:
|
|
- get
|
|
- patch
|
|
- update
|
|
- list
|
|
- watch
|
|
- create
|
|
- delete
|
|
- apiGroups:
|
|
- policy
|
|
resources:
|
|
- poddisruptionbudgets
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- create
|
|
- update
|
|
- patch
|
|
- delete
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- pods
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
{{- if or .Values.netbirdAPI.keyFromSecret .Values.clusterSecretsPermissions.allowAllSecrets }}
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- secrets
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
{{- if .Values.netbirdAPI.keyFromSecret }}
|
|
- patch
|
|
- update
|
|
- create
|
|
- delete
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if .Values.gatewayAPI.enabled }}
|
|
- apiGroups: ["gateway.networking.k8s.io"]
|
|
resources:
|
|
- gatewayclasses
|
|
- gateways
|
|
- httproutes
|
|
- tcproutes
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- update
|
|
- patch
|
|
- apiGroups: ["gateway.networking.k8s.io"]
|
|
resources:
|
|
- gatewayclasses/status
|
|
- gateways/status
|
|
- httproutes/status
|
|
- tcproutes/status
|
|
verbs:
|
|
- update
|
|
- patch
|
|
{{- end }}
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: {{ include "netbird-operator.fullname" . }}
|
|
labels:
|
|
{{- include "netbird-operator.labels" . | nindent 4 }}
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: {{ include "netbird-operator.fullname" . }}
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: {{ include "netbird-operator.serviceAccountName" . }}
|
|
namespace: {{ .Release.Namespace }}
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: Role
|
|
metadata:
|
|
name: {{ include "netbird-operator.fullname" . }}
|
|
labels:
|
|
{{- include "netbird-operator.labels" . | nindent 4 }}
|
|
rules:
|
|
- apiGroups:
|
|
- coordination.k8s.io
|
|
resources:
|
|
- leases
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- create
|
|
- update
|
|
- patch
|
|
- delete
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- events
|
|
verbs:
|
|
- create
|
|
- patch
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: RoleBinding
|
|
metadata:
|
|
name: {{ include "netbird-operator.fullname" . }}
|
|
labels:
|
|
{{- include "netbird-operator.labels" . | nindent 4 }}
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: Role
|
|
name: {{ include "netbird-operator.fullname" . }}
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: {{ include "netbird-operator.serviceAccountName" . }}
|
|
namespace: {{ .Release.Namespace }}
|