Hussein Galal
1ca9e7274c
Add server and worker resource request and limits ( #832 )
...
* Add server and worker resource request and limits
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2026-04-30 16:16:11 +03:00
Hussein Galal
28acb94d8a
Add hostUsers to cluster spec ( #787 )
...
* Add hostUsers to cluster spec
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix the do comment for hostusers
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix the do comment for hostusers
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2026-04-15 15:46:23 +02:00
Hussein Galal
96d812a3cb
Custom runtime class and security context ( #742 )
...
* Add experimental runtimeClass and securityContext to spec
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2026-04-09 10:22:46 +02:00
Gaurav Mehta
8add97934e
minor fix to translated ingress tls secrets in ingress object ( #672 )
...
* minor fix to translated ingress tls secrets in ingress object
updated cluster ingress sync options to include extra field for SyncTLSSecrets
Signed-off-by: Gaurav Mehta <gaurav.mehta@suse.com >
* rebase changes from main, include feedback for renaming ingress secret sync field to DisableTLSSecretTranslation, and add kubelet integration tests to verify secret name translation
Signed-off-by: Gaurav Mehta <gaurav.mehta@suse.com >
---------
Signed-off-by: Gaurav Mehta <gaurav.mehta@suse.com >
2026-04-08 11:39:23 +02:00
Enrico Candino
18889ba6b7
Removed Pod mutating Webhook (shared mode) ( #699 )
...
* removed all webhook references
* fix tests
* removal of webhook
* updated doc
* add downward API test
* small refactor of virtual-kubelet
* split tests
2026-03-31 10:29:22 +02:00
Jonathan Crowther
25e910ccaf
Add initial affinity to podspecs ( #696 )
...
* Add initial affinity to podspecs
* Fix go generate
* Add field to the policy and prioritize it over the cluster spec
* Fix linter issue
* Add docs
* Address comments
* Fix the tests and improve the field descriptions
* Fix formatter issues
* Change logs to info level
* run validation
* undo pandoc changes
2026-03-23 16:16:30 -04:00
Enrico Candino
7641a1c9c5
Add sync of Host StorageClasses ( #681 )
...
* initial impl
* wip test
* fix
* wip tests
* Refactor storage class sync logic and enhance test coverage
* fix test
* remove storageclass sync test
* removed commented code
* added sync to cluster status to apply policy configuration
* fix for storageClass policy indexes
* fix for missing indexed field, and label sync
* - update sync options descriptions for resource types
- added storage class tests sync with policy
- requested changes
* fix for nil map
2026-03-17 16:53:29 +01:00
Enrico Candino
9836f8376d
Added policy in Cluster Status ( #663 )
...
* initial implementation
restored policyName
* added test, fixed priority scheduling
* requested changes from review
- wrapped errors
- fixed some kube-api-linter issues to match k8s conventions
- moved policy namespace check in the same condition branch
2026-02-17 16:15:13 +01:00
Hussein Galal
c1b7da4c72
SecretMounts feature and private registries ( #570 )
...
* Add SecretMounts field
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2026-01-26 21:47:40 +02:00
Kevin McDermott
eaa20c16e7
Make the storageRequestSize immutable.
...
It can't be changed in the StatefulSet and modifying the value causes an
error.
2026-01-22 08:27:20 +00:00
Kevin McDermott
d12f3ea757
Fix lint issues and failing test.
...
golangci-lint was complaining about duplicate imports of corev1 and the
ordering of them in the files.
2026-01-21 14:50:30 +00:00
Kevin McDermott
9ea81c861b
Use resource.Quantity for storageRequestSize
...
Previously the resource.Quantity was stored as string which allowed
invalid values to be created.
This performs validation on the strings using the standard K8s resource
mechanism.
2026-01-21 14:50:28 +00:00
Enrico Candino
bf70e0d171
Updated Cluster and VirtualClusterPolicy spec for sync and loadbalancer ( #528 )
...
* add default false for ingress and priorityClass, cleanup tests and added new tests
* fix typo for loadBalancer
* fix test aligning VirtualClusterPolicy SyncConfig
* set required enabled field, revert pointer on optional SyncConfig
* update samples
2025-10-24 17:02:26 +02:00
Enrico Candino
075d72df5d
Cleanup of customCAs spec ( #527 )
...
* cleanup spec from customCAs when omitted
* add enabled default for customCAs
2025-10-23 22:11:44 +02:00
Enrico Candino
594c2571c3
promoted v1alpha1 resources to v1beta1 ( #505 )
2025-10-13 17:24:56 +02:00
jpgouin
6523b8339b
change the default storage request size request to 2Gi ( #490 )
...
* change the default storage request size request to 2Gi
2025-10-03 09:04:13 +02:00
Enrico Candino
04198652d5
check for single expose mode ( #466 )
2025-09-17 10:39:55 +02:00
Hussein Galal
aca01127f8
Fix PVC sync and sync defaults ( #458 )
...
* Fix PVC sync and sync defaults
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix PVC sync and sync defaults
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fixes to pvc sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* increase the timeout on the e2e test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* configure the syncConfig correctly in vcp
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* update docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix policy unit test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* revert timeout of the test to 20 second
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-09-16 13:01:12 +03:00
Hussein Galal
caf785f23b
Add resources sync configuration ( #431 )
...
* Add resources sync configuration
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* update docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* refactor cluster sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* more fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* more fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* simplify the syncerContext
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* simplify the syncerContext
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* drop the ClusterClient struct
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix updates to syncer
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* refactor secrets/configmaps sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* refactor secrets/configmaps sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add imagepullsecret translation
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* add exception for deleted resources
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* linting fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* remove the option to disable imagepullsecret translation
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-09-01 14:34:29 +03:00
Enrico Candino
98d17cdb50
Added new golangci-lint formatters ( #425 )
...
* add gci formatter
* gofmt and gofumpt
* rewrite rule
* added make fmt
2025-07-22 10:42:41 +02:00
Hussein Galal
a98c49b59a
Adding custom certificate to the virtual clusters ( #409 )
...
* Adding custom certificate to the virtual clusters
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs update
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* integrate cert-manager
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add individual cert tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-07-21 19:23:11 +03:00
Enrico Candino
2ab71df139
Add Conditions and current status to Cluster ( #408 )
...
* Added Cluster Conditions
* added e2e tests
* fix lint
* cli polling
* update tests
2025-07-14 15:53:37 +02:00
Enrico Candino
753b31b52a
Adding configurable maxConcurrentReconcilers and small CRD cleanup ( #410 )
...
* removed Persistence from Status, fixed default for StorageSize and StorageDefault
* added configurable maxConcurrentReconciles
* fix concurrent issues
* add validate as prereq for tests
2025-07-10 14:46:33 +02:00
Hussein Galal
fcc875ab85
Mirror host nodes ( #389 )
...
* mirror host nodes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* add mirror host nodes feature
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add controllername to secrets/configmap syncer
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* golint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* build docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* setting controller namespace env
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix typo
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add a controller_namespace env to the test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add mirrorHostNodes spec to conformance tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* change the ptr int to int
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix map key name
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-07-08 14:48:24 +03:00
Enrico Candino
f389a4e2be
Fix Network Policy reconciliation ( #388 )
...
* logs
* fix delete cleanup
* update spec
* added policyName to status, skip netpol for policy managed clusters
2025-06-20 16:10:47 +02:00
Enrico Candino
5758b880a5
Added k3kcli cluster list and k3kcli policy list commands ( #368 )
...
* list commands
* go mod tidy
* moved logic to separate file, small refactor
2025-05-30 15:35:31 +02:00
Enrico Candino
2655d792cc
Update allowedModeTypes field to allowedMode ( #367 )
...
* change allowedModeTypse to allowedMode
* added shortname "vcp" and additional mode column
2025-05-29 14:53:58 +02:00
Enrico Candino
8fbe4b93e8
Change VirtualClusterPolicy scope to Cluster ( #358 )
...
* rename clusterset to policy
* fixes
* rename clusterset to policy
* wip
* go mod
* cluster scoped
* gomod
* gomod
* fix lint
* wip
* moved logic to vcp controller
* update for clusters
* small fixes
* update cli
* fix docs, updated spec
* fix cleanup
* added missing owns for limitranges
2025-05-29 10:45:48 +02:00
Enrico Candino
cca3d0c309
Rename ClusterSet to VirtualClusterPolicy ( #349 )
...
* rename clusterset to policy
* fixes
2025-05-15 12:04:47 +02:00
Enrico Candino
6a22f6f704
fix build-crds, bump Go to 1.24.2, bump golangci-lint ( #344 )
2025-05-06 17:24:35 +02:00
Enrico Candino
96a4341dfb
Services updates (LoadBalancerConfig and NodePortConfig) ( #329 )
...
* updates to services
- added loadBalancerConfig
- removed service-port
- added logic to not expose services
* Refactor cluster tests to improve readability and maintainability
- Simplified service port expectations by directly accessing elements instead of using `ContainElement`.
- Enhanced clarity of test assertions for `k3s-server-port` and `k3s-etcd-port` attributes.
- Removed redundant code for checking service ports.
* fix ports for ingress expose, update kubeconfig generate
2025-04-22 11:52:18 +02:00
Hussein Galal
510ab4bb8a
Add extra env for servers/agents ( #324 )
...
* Add extra env for servers/agents
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* cli docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix container env
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-04-21 12:25:51 +02:00
Enrico Candino
7cb2399b89
Update and fix to k3kcli for new ClusterSet integration ( #321 )
...
* added clusterset flag to cluster creation and displayname to clusterset creation
* updated cli docs
2025-04-04 13:22:55 +02:00
Enrico Candino
90568f24b1
Added ClusterSet as singleton ( #316 )
...
* added ClusterSet as singleton
* fix tests
2025-04-03 16:26:25 +02:00
Hussein Galal
0843a9e313
Initial support for ResourceQuotas in clustersets ( #308 )
...
* Add ResourceQuota to clusterset
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Generate docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add a defualt limitRange for ClusterSets
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix linting
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add test for clusterset limitRange
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add server and worker limits
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* make charts
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* add default limits and fixes to resourcesquota
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* make docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* make build-crds
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* make build-crds
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* make spec as pointer
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* delete default limit
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Update tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Update tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* return on delete in limitrange
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-04-03 12:30:48 +02:00
Enrico Candino
3281d54c6c
fix typo ( #300 )
2025-03-24 10:48:42 +01:00
Enrico Candino
5e8bc0d3cd
Update CRDs documentation ( #279 )
...
* complete CRD documentation
* fix missing rebuild of CRDs
2025-03-03 11:47:53 +01:00
Enrico Candino
430e18bf30
Added wsl linter, and fixed related issues ( #275 )
...
* added wsl linter
* fixed issues
2025-02-27 10:59:02 +01:00
Hussein Galal
c2cde0c9ba
Fix the default CIDRs for both modes ( #271 )
...
* Fix the default CIDRs for both modes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix service/cluster cidr
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-02-26 11:32:17 +02:00
Hussein Galal
fa553d25d4
Default to dynamic persistence and fix HA restarts ( #250 )
...
* Default to dynamic persistence and fix HA restarts
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-02-14 14:26:10 +02:00
Enrico Candino
51a8fd8a8d
Fix and enhancements to IngressExposeConfig (annotations) ( #248 )
...
* ingress fixes
* added annotations to IngressConfig
* sync annotations with CR
* removed hosts
* small doc for ingress
2025-02-14 12:38:42 +01:00
Enrico Candino
fdb133ad4a
Added Ports to NodePortConfig and expose fixes ( #247 )
...
* fix NodePort service update
* updated crd docs
2025-02-11 14:47:01 +01:00
Enrico Candino
0aa60b7f3a
Update of some docs ( #231 )
...
* updated README, docs folder
* updated architecture doc
* shared and virtual architecture images
* advanced usage
* added crd-ref-docs tool for CRDs documentation
* small fixes
* requested changes
* full example in advanced usage
* removed security part
* Apply suggestions from code review
Co-authored-by: jpgouin <jp-gouin@hotmail.fr >
---------
Co-authored-by: jpgouin <jp-gouin@hotmail.fr >
2025-02-10 16:21:33 +01:00
Enrico Candino
72b5a98dff
Fix typos and adding spellcheck linter ( #215 )
...
* adding spellcheck linter
* fix typos
2025-01-28 17:47:45 +01:00
Enrico Candino
b0aa22b2f4
Simplify Cluster spec ( #193 )
...
* removed some required parameters, adding defaults
* add hostVersion in Status field
* fix tests
2025-01-21 21:19:44 +01:00
Enrico Candino
f9ddec53b7
Added priorityClass to Clusters and ClusterSets ( #180 )
...
* added priorityClass to Clusters and ClusterSets
* fixed comment
2025-01-14 11:05:48 +01:00
Enrico Candino
72b2a5f1d1
Added podSecurityAdmissionLevel to ClusterSet ( #145 )
...
* added Namespace reconciliation for PodSecurity labels
* added Namespace Watch
* added tests, and example
* bump deps
2024-12-04 21:38:02 +01:00
Enrico Candino
c561b033df
Added allowedNodeTypes to ClusterSet, and fixed NetworkPolicy reconciliation ( #144 )
...
* updated CRDs
* added Mode to ClusterSet, and enum to CRD
* fix typos
* fix mode type in cli
* deletion of second clusterset in same namespace
* removed focused test, added clusterset example
* renamed modes
* added allowedNodeTypes, fixed samples
* fixed network policy reconciliation
2024-11-27 23:00:39 +02:00
Enrico Candino
c9599963d1
added node selector to workloads ( #138 )
2024-11-06 21:50:51 +02:00
Hussein Galal
84f921641b
Token random generation ( #136 )
...
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2024-11-01 21:27:03 +02:00