Commit Graph
36 Commits
Author SHA1 Message Date
Wang Zhihao ac946629fe fix(costcenter): show complete quota resources (#7041)
* fix(costcenter): show complete quota resources

* fix(costcenter): shorten quota pie labels

* fix(costcenter): sync resource analysis filters

* chore(lifecycle): add missing license headers
2026-07-09 17:54:18 +08:00
4cf5233f6a fix(lifecycle): support Kubernetes 1.33 upgrade flow (#6993)
fix(lifecycle): support Kubernetes 1.33 upgrade flow (#6929)

* fix: wait for registry before pulling kubeadm images

* fix: support kubeadm upgrade to newer minors

* fix: recover kubelet config during upgrades

* fix: handle kubelet upgrade recovery edge cases

* fix: refresh rootfs sealctl before use

* fix: tolerate existing temporary registry

* fix: ignore kubeadm upgrade health check job

* fix(kubernetes): align cert identity handling with kubeadm v1.29+ (#83)

* build(lifecycle): auto-detect C compiler and CC

Add CC and CC_<platform> Makefile options and implement compiler
resolution for CGO-enabled sealos/sealctl builds. Update DEVELOPGUIDE
with usage and a cross-compile example.



* fix(kubernetes): align cert identity handling with kubeadm v1.29+

- migrate remote control-plane certs across the v1.29 identity boundary
- repair remote admin.conf on all masters during upgrade
- keep local sealos PKI and kubeconfigs aligned with the v1.29+ model
- keep super-admin.conf local-only during renew and upgrade flows
- preserve pre-v1.31 long-lived cert policy and use v1beta4 fields on
  v1.31+
- fix v1.31 remote admin.conf migration config distribution across
  masters



---------



* fix(lifecycle): sync and upgrade codex

* fix: cert and add timeout for cluster role binding create

---------

Signed-off-by: Yun Pan <dinoallo@netc.it>
Co-authored-by: yy <56745951+lingdie@users.noreply.github.com>
Co-authored-by: Yun Pan <dinoallo@netc.it>
2026-06-10 16:49:44 +08:00
cuisongliu a6f9f3640e fix(service): remove unused project dependencies from workspace (#6870) (#6873) 2026-04-08 14:50:59 +08:00
github-actions[bot]andJiahui aba80d1db2 fix(lifecycle): fallback registry sync for oci media type (#6842)
fix(lifecycle): fallback registry sync for oci media type (#6841)

fix: fallback registry sync for oci media type

Co-authored-by: Jiahui <4543bxy@gmail.com>
2026-03-26 16:39:06 +08:00
github-actions[bot]andzijiren db86bd5b20 fix(lifecycle): clear stale registry auth when saving public images (#6810)
fix(lifecycle): clear stale registry auth when saving public images (#6808)

* fix(lifecycle): clear stale registry auth when saving public images

* fix: license

Co-authored-by: zijiren <84728412+zijiren233@users.noreply.github.com>
2026-03-18 15:40:55 +08:00
github-actions[bot]andzijiren c0f383689f feat(lifecycle): sealos registry support image filter and --all flags to image save (#6805)
feat(lifecycle): sealos registry support image filter and --all flags to image save (#6796)

* feat: sealos registry support image filter

* feat: add --all flags to image save

* fix: verify-license

* feat: move sreg to sealos lifecycle

* fix: sreg missing storage images

* fix: gorelease docker context

* fix: sreg full move to sealos

* fix: sreg version cmd

* fix: license

* fix: nosemgrep

* fix: missing sealos root sretlog config

* chore: bump upstream sreg-storage.sh

Co-authored-by: zijiren <84728412+zijiren233@users.noreply.github.com>
2026-03-18 14:13:29 +08:00
github-actions[bot]andcuisongliu b1eb4ca0b2 fix(dependencies): replace gcc-aarch64-linux-gnu with binutils-aarch6… (#6772)
fix(dependencies): replace gcc-aarch64-linux-gnu with binutils-aarch6… (#6766)

* fix(dependencies): replace gcc-aarch64-linux-gnu with binutils-aarch64-linux-gnu in Dockerfile and YAML files



* fix(ci): update runs-on configuration for arm64 architecture in CI scripts



* fix(ci): update runs-on configuration for arm64 architecture in CI scripts



---------

Signed-off-by: cuisongliu <cuisongliu@qq.com>
Co-authored-by: cuisongliu <cuisongliu@qq.com>
2026-03-05 20:03:27 +08:00
ee8f9951f6 fix(image-cri-shim): handle missing HOME env in systemd environments (#6621)
fix(image-cri-shim): handle missing HOME env in systemd environments (#6620)

Fix kubeconfig lookup in buildKubeClient to properly handle systemd
environments where HOME environment variable may not be set.

Changes:
- Add fallback to /root as default home directory when HOME is empty
- This ensures kubeconfig can be found at /root/.kube/config in systemd services

Resolves issue where image-cri-shim managed by systemd could not locate
kubeconfig file due to missing HOME environment variable.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Jiahui <4543bxy@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-29 11:40:37 +08:00
26d1031f88 feat(image-cri-shim): add registry priority support for intelligent image matching (#6515)
feat(image-cri-shim): add registry priority support for intelligent image matching (#6503)

* feat(image-cri-shim): add registry priority support for intelligent image matching

Implemented priority-based registry selection to optimize image pull performance
by prioritizing faster registries like sealos.hub while supporting custom
priority configuration for user-defined registries.

## Key Features

- **Priority System**:
  - sealos.hub defaults to highest priority (1000)
  - User registries default to priority 500
  - Configurable priority range: 0-1000
  - Auto-clamping for out-of-range values

- **Smart Matching**:
  - Checks registries in priority order (highest first)
  - Tries sealos.hub first, then user registries by priority
  - Caches match results to avoid redundant manifest checks
  - Falls back to original image if no registry has it

- **Backward Compatible**:
  - Existing configs work without modification
  - Priority field is optional
  - Default values ensure reasonable behavior

## Changes

### Configuration (pkg/types/config.go)
- Added Priority field to Registry struct
- Added priority constants (SealosHubDefaultPriority=1000, RegistryDefaultPriority=500)
- Extended ShimAuthConfig with CRIPriorities and OfflinePriority
- Auto-clamping and default value assignment in PreProcess()

### Auth Store (pkg/server/auth_store.go)
- Added GetSortedRegistries() for priority-based ordering
- Added GetCRIPriorities() and GetOfflinePriority() accessors
- Introduced RegistryEntry type for registry metadata
- Implemented sortRegistriesByPriority() with tie-breaking rules

### Image Matching (pkg/server/utils.go)
- Added RegistryWithPriority type
- Implemented ReplaceImageWithPriority() for sequential registry attempts
- Enhanced logging for priority-based matching

### CRI Service (pkg/server/cri_server_v1.go)
- Refactored rewriteImage() to use priority-based selection
- Simplified PullImage() by removing complex fallback logic
- Added domain miss tracking for cache statistics

### Testing (pkg/server/priority_test.go)
- Comprehensive tests for priority sorting and ordering
- Config processing tests with boundary value validation
- 100% coverage of new functionality

### Documentation
- Updated README.md with priority configuration guide
- Added priority-example.yaml with detailed examples
- Documented priority rules, behavior, and use cases

## Example Configuration

```yaml
address: http://sealos.hub:5000
auth: admin:passw0rd
registries:
  - address: docker.io
    auth: user:pass
    # priority: 500 (default)
  - address: registry.example.com
    auth: user:pass
    priority: 800  # higher than docker.io
```

## Testing

All tests pass including:
- Priority ordering and sorting
- Config parsing with boundary values
- Cache statistics tracking
- Backward compatibility with existing tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* feat(image-cri-shim): add customizable offlinePriority for sealos.hub

Added support for customizing sealos.hub priority through the optional
`offlinePriority` configuration field while maintaining full backward
compatibility with existing configurations.

## Key Features

- **Optional Configuration**: New `offlinePriority` field in Config struct
- **Smart Defaults**:
  - Unconfigured or set to 0: uses default 1000 (highest priority)
  - Allows lowering sealos.hub priority to favor other registries
- **Boundary Safety**: Auto-clamps to [0, 10000] range with warnings
- **Fully Backward Compatible**: Existing configs work unchanged

## Use Cases

1. **Default Behavior** (backward compatible):
   - sealos.hub priority = 1000 (highest)
   - Tried before all user registries

2. **Custom Lower Priority**:
   - Set `offlinePriority: 700` to try fast-registry (900) first
   - Useful when external registries are faster than sealos.hub

3. **Flexible Control**:
   - Fine-tune registry selection order per deployment
   - Adapt to different network environments

## Changes

### Configuration (pkg/types/config.go)
- Added `OfflinePriority int` field to Config struct
- Extended PreProcess() to handle custom offlinePriority:
  - 0 or unset: use SealosHubDefaultPriority (1000)
  - < 0: clamp to MinPriority (0) with warning
  - > 10000: clamp to MaxPriority (10000) with warning

### Testing (pkg/server/priority_test.go)
- Added TestOfflinePriorityConfig:
  - Tests default, custom, and boundary values
  - Validates clamping behavior
- Added TestOfflinePriorityWithRegistries:
  - Tests sealos.hub priority relative to other registries
  - Verifies correct sorting order

### Documentation
- Updated README.md with offlinePriority field documentation
- Added examples showing how to customize sealos.hub priority
- Documented backward compatibility guarantees
- Updated priority-example.yaml with offlinePriority usage

## Example Configuration

```yaml
address: http://sealos.hub:5000
auth: admin:passw0rd

# Lower sealos.hub priority to try other registries first
offlinePriority: 700

registries:
  - address: fast-registry.io
    auth: user:pass
    priority: 900  # Will be tried before sealos.hub
```

## Testing

All tests pass including:
- Default offlinePriority behavior
- Custom priority configuration
- Boundary value handling
- Priority ordering with multiple registries
- Backward compatibility (existing tests)

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* feat(image-cri-shim): add ConfigMap priority sync support and comprehensive documentation

Enable ConfigMap to fully support priority field synchronization for registries.

### Code Changes

1. **pkg/types/configmap_sync.go**: Add priority sync from ConfigMap
   - Extend registryEntry struct with Priority field
   - Extend registryConfigSpec struct with OfflinePriority field
   - Update mergeShimConfig() to sync priority values
   - Add detailed logging for debugging sync process

2. **pkg/types/configmap_sync_test.go**: Add comprehensive tests
   - TestConfigMapPrioritySync: Verify priority and offlinePriority sync
   - Test edge cases (zero priority, custom priorities)
   - All tests passing

3. **pkg/server/cri_server_v1.go**: Add priority-aware logging
   - Log sorted registry list with priorities
   - Show priority order before image pull
   - Indicate offline registry in logs

4. **pkg/server/utils.go**: Enhance priority matching logs
   - Log each registry attempt with priority
   - Show success/failure status for each attempt
   - Display final image rewrite result

### Documentation

5. **CONFIGMAP_GUIDE.md**: Comprehensive ConfigMap guide (550+ lines)
   - Feature overview and core capabilities
   - Complete ConfigMap configuration specification
   - Field-by-field documentation
   - Usage scenarios and examples
   - Troubleshooting guide
   - Best practices
   - Updated to reflect priority support

### Features

✅ ConfigMap fully supports priority field for registries
✅ ConfigMap fully supports offlinePriority for sealos.hub
✅ Detailed debug logging for troubleshooting
✅ Comprehensive documentation with examples
✅ All tests passing

### Technical Details

- Priority values are synced as-is from ConfigMap (including 0)
- Priority boundary validation (0-10000) happens in PreProcess
- ConfigMap registries completely replace local config (existing behavior)
- YAML serialization correctly includes priority fields
- Debug logs help verify sync process and priority order

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* add license

---------

Co-authored-by: Jiahui <4543bxy@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-12 16:18:08 +08:00
github-actions[bot]andcuisongliu 0f486fe5a1 refactor(login): remove kubeconfig handling from login command (#6486)
refactor(login): remove kubeconfig handling from login command (#6200)

Signed-off-by: cuisongliu <cuisongliu@qq.com>
Co-authored-by: cuisongliu <cuisongliu@qq.com>
2026-01-06 10:57:00 +08:00
af2bcef54c fix(lifecycle): enable configurable execution timeout for all commands (#6466)
fix(lifecycle): enable configurable execution timeout for all commands (#6442)

* fix: enable configurable execution timeout for all commands

The ssh.RegisterFlags() function exists to expose execution timeout
configuration, but was never called in the command initialization flow.
This caused all script executions to be subject to a hardcoded 5-minute
timeout that users could not override.

Changes:
- Call ssh.RegisterFlags() in root command initialization
- Make --execution-timeout and --max-retry available as global flags
- Users can now configure timeout via: sealos run --execution-timeout 1h

This fix allows users to run long-running scripts in container images
without hitting the 5-minute timeout limit.

Related to #6441

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* test: add automated tests for execution timeout configuration

This commit adds comprehensive E2E and unit tests to validate the
execution timeout configuration feature (issue #6441).

Changes:
- Add E2E test suite with 6 comprehensive test cases
- Add unit tests for command options (4 test suites)
- Create dedicated GitHub workflow for timeout tests
- Integrate timeout tests into core E2E test matrix

Test Coverage:
- Custom execution timeout for long-running scripts (600s)
- Default timeout behavior verification (300s)
- Unlimited timeout configuration (0)
- Multiple timeout format validation (s, m, h, mixed)
- Apply/Run command integration tests
- Max-retry flag functionality
- SSH + timeout combination scenarios

New Files:
- lifecycle/test/e2e/execution_timeout_test.go
- lifecycle/test/e2e/testhelper/cmd/sealosCmdOpts_timeout_test.go
- .github/workflows/e2e_execution_timeout.yml

Modified Files:
- lifecycle/test/e2e/testhelper/cmd/sealosCmdOpts.go
  - Add ExecutionTimeout and MaxRetry fields to RunOptions
  - Add ExecutionTimeout field to ApplyOptions
  - Update Args() methods to include new flags
- lifecycle/test/e2e/suites/operators/interface.go
  - Add RunWithOpts() and ApplyOpts() to FakeClusterInterface
- lifecycle/test/e2e/suites/operators/cluster.go
  - Implement RunWithOpts() and ApplyOpts() methods
- .github/workflows/e2e_test_core.yml
  - Add E2E_sealos_execution_timeout_test to test matrix

Features:
- Automated CI/CD testing on push/PR
- Manual workflow dispatch support
- Test result artifact uploads
- Timeout flag availability verification

Related to #6441

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* refactor: migrate execution timeout from CLI flags to environment variables

Replace command-line flags (--execution-timeout, --max-retry) with global
environment variables (SEALOS_EXECUTION_TIMEOUT, SEALOS_MAX_RETRY) for
consistent configuration management across sealos.

Changes:
- Add EXECUTION_TIMEOUT and MAX_RETRY to sealos env configuration system
- Refactor ssh package to read timeout/retry from system config instead of global vars
- Remove RegisterFlags() function and CLI flag registration from root command
- Update SSH operations (connect, scp) to use GetMaxRetry() and GetExecutionTimeout()
- Support multiple timeout formats: 300s, 5m, 1h, 1h30m, and 0 (unlimited)
- Rewrite E2E tests to use environment variables instead of command flags
- Update GitHub workflow to set environment variables for testing

Usage Changes:
- OLD: sealos run --execution-timeout 1h --max-retry 10 myimage
- NEW: export SEALOS_EXECUTION_TIMEOUT=1h SEALOS_MAX_RETRY=10
       sealos run myimage

This is a breaking change. Users need to migrate from CLI flags to
environment variables. Default values remain unchanged (300s, 5 retries).

Related to #6441

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* fix: correct execution timeout test to use proper cluster images

Replace incorrect container image usage (nginx:alpine) with proper
Sealos cluster images (labring/kubernetes, labring/helm, labring/calico)
in execution timeout tests.

Changes:
- Remove PatchDockerfile and custom image building
- Use standard cluster images directly for timeout testing
- Focus on testing environment variable timeout configuration
- Simplify test cases to validate timeout behavior without complex image setup

Error Fixed:
- "can't apply application type images only since RootFS type image is not applied yet"

The tests now correctly use cluster images that are compatible with Sealos
cluster deployment while validating the SEALOS_EXECUTION_TIMEOUT and
SEALOS_MAX_RETRY environment variable configurations.

Related to #6441

🤖 Generated with [Claude Code](https://claude.com/claude-code)



* fix: separate timeout format validation test to avoid cluster reset failure

Move the timeout format validation test to a separate context that doesn't
require cluster reset. The previous implementation tried to reset a cluster
that was never created, causing AfterEach to fail.

Changes:
- Create separate "timeout format validation" context
- Remove cluster reset from format validation test's AfterEach
- Only clean up environment variables in format validation tests

Error Fixed:
- "failed to reset cluster: exit status 1" in format validation test

This ensures that tests which only validate environment variable formats
don't trigger unnecessary cluster operations.

Related to #6441

🤖 Generated with [Claude Code](https://claude.com/claude-code)



---------

Co-authored-by: Jiahui <4543bxy@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-31 17:03:37 +08:00
github-actions[bot]andcuisongliu ebb6d6d3d4 fix(ssh): increase default execution timeout from 300s to 2h (#6463)
fix(ssh): increase default execution timeout from 300s to 2h (#6456)

Signed-off-by: cuisongliu <cuisongliu@qq.com>
Co-authored-by: cuisongliu <cuisongliu@qq.com>
2025-12-30 15:03:25 +08:00
f06e61266d fix(image): implement caching and domain matching for image rewriting (#6269)
fix(image): implement caching and domain matching for image rewriting (#6180)

* fix(image): implement caching and domain matching for image rewriting



* fix(image): optimize image rewriting with LRU caching and domain matching



* fix(cache): add cache configuration and metrics for image rewriting



* fix(image): enhance logging for image rewriting process and cache hits



* fix(config): add cache configuration for image rewriting with hot reload support



* fix(config): add cache configuration for image rewriting with hot reload support



* fix(license): add Apache 2.0 license header to test files



* fix(docs): add example configurations for cache settings in USAGE.md



* fix(image): simplify cache access and improve thread safety in image service



* fix(image): enhance cache configuration with detailed comments for clarity



* fix(image): improve authentication handling and cache management in image service



* fix(image): refine registry matching logic to enforce exact matches and improve case sensitivity



* fix(image-cri-shim): prefer original registry; fallback offline only on failure; exact domain matching with caching (#900)

* fix(image-cri-shim): prefer original registry; fallback offline only on failure; exact domain matching with caching

* lifecycle: remove staging entrypoint for image-cri-shim and unify to CLI build; no functional change.

---------

Signed-off-by: cuisongliu <cuisongliu@qq.com>
Co-authored-by: cuisongliu <cuisongliu@qq.com>
Co-authored-by: xzy <nowinkey@tom.com>
2025-12-01 19:05:25 +08:00
cuisongliu f3eaedf92d fix(license): update CRD version and add additional printer columns f… (#6212)
* fix(license): update CRD version and add additional printer columns for license status (#6207)

* feat(license): implement license controller with Helm chart and RBAC configuration

* fix(license): correct logic for extending default license for devbox users

* fix(license): update license validation to use context for improved handling

* fix(license): change EncryptionKey to encryptionKey and add getter function

* fix(license): extend default license expiration for devbox users to 50 years

(cherry picked from commit 2df0bdf854)
2025-11-18 23:25:57 +08:00
cuisongliu 7233e0d743 fix(docker): install uidmap and fuse-overlayfs in Dockerfiles (#6195) (#6199)
* fix(docker): install uidmap and fuse-overlayfs in Dockerfiles



* fix(docker): streamline installation of uidmap and fuse-overlayfs in Dockerfiles



* fix(docker): remove redundant apt update in Dockerfiles



* fix(docker): reorder COPY command in Dockerfile.release



---------


(cherry picked from commit 531406eabb)

Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-11-17 10:28:34 +08:00
cuisongliu fc94072c93 fix(build): enable static linking for Go binaries (#6189) (#6190)
* fix(build): enable static linking for Go binaries



* fix(build): correct extldflags syntax for static linking in Go binaries



---------


(cherry picked from commit 09d305e426)

Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-11-14 17:13:12 +08:00
cuisongliu a0d90436d9 feat(docs): update usage guide for image-cri-shim binary service with English translations (#6118)
* feat(docs): add usage guide for image-cri-shim binary service

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* feat(docs): update usage guide for image-cri-shim binary service with English translations

Signed-off-by: cuisongliu <cuisongliu@qq.com>

---------

Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-10-24 17:59:56 +08:00
cuisongliu bda950306c feat(image-cri-shim): implement synchronization of image-cri-shim config from ConfigMap (#6091)
* feat(configmap): enhance logging for image-cri-shim config synchronization

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* feat(configmap): refactor kube client creation and add tests for config synchronization

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* feat(configmap): add test for syncing registry config from ConfigMap

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* chore: add license header to configmap_sync.go and configmap_sync_test.go; log shim config in image_cri_shim_test.go

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* refactor(configmap): remove redundant warning log for no updates in image-cri-shim config

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* refactor(configmap): reduce wait time for shim log checks in tests

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* refactor(configmap): remove duplicate import of sigs.k8s.io/yaml

Signed-off-by: cuisongliu <cuisongliu@qq.com>

---------

Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-10-16 16:40:38 +08:00
cuisongliu 178c4be92c refactor(image-cri-shim): remove registry.d support (#6089) 2025-10-15 12:33:02 +08:00
cuisongliu ad7010d297 feat(image-cri-shim): sync inline registries to registry.d (#6075)
feat: sync inline registries to registry.d
2025-10-13 15:27:44 +08:00
cuisongliuandcuisongliu 76f6677495 feat(image-cri-shim): Dynamic Configuration Reloading (#6067)
* chore(image-cri-shim): align replacements and add license headers

* chore(fmt): format code

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore(default.yaml): add license headers to the configuration file

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* feat(image-cri-shim): make reload heartbeat configurable

* test(image-cri-shim): verify mirror config sync

* feat(config): add name field to Registry and improve domain matching logic

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* refactor(auth): remove unused skip login logic and simplify config retrieval

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* feat(image-cri-shim): update registry mirror test with new image and address

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* refactor(image-cri-shim): remove deferred cleanup for image service client

Signed-off-by: cuisongliu <cuisongliu@qq.com>

---------

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: cuisongliu <cuisongliu@qq.com>
Co-authored-by: cuisongliu <cuisongliu@users.noreply.github.com>
2025-10-10 16:48:45 +08:00
szediktamandszediktam c74dc8b8c7 fix(lifecycle): Avoid map data races for env cache when getHostEnvInCache (#6049)
Avoid map data races for env cache when getHostEnvInCache

Co-authored-by: szediktam <lianjianyong@cestc.cn>
2025-09-27 15:44:54 +08:00
cuisongliu ec80671fb0 fix(checker): update time synchronization check and add CockroachDB max offset configuration (#5981)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-09-15 16:01:42 +08:00
cuisongliu d6983bd9c2 fix(config): use local variable for registry domain normalization (#5980)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-09-14 19:57:16 +08:00
cuisongliu dd23022091 feat(kubeadm): refactor kubeadm config merging and improve node handling (#5908)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-09-01 19:03:03 +08:00
cuisongliu a422aa696c feat(apply): conditionally append components based on distribution type (#5909)
* feat(apply): conditionally append components based on distribution type

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* fix(cluster): return nil for rootfs image if image spec is empty

Signed-off-by: cuisongliu <cuisongliu@qq.com>

---------

Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-09-01 13:05:33 +08:00
cuisongliu bd5c285c50 feat(kubeadm): increase event burst and QPS limits, adjust image GC thresholds (#5889)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-08-28 17:02:55 +08:00
cuisongliu aa6547bf6b chore: remove CONTRIBUTORS file references from CI configuration (#5845) 2025-08-20 20:56:29 +08:00
cuisongliu c4eb60be44 fix(security): add non-root user to Dockerfile and update TLS configuration in req.go (#5818)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-08-13 11:00:47 +08:00
cuisongliu 652bea5279 fix: upgrade Go version to 1.23 and update kubeadm API versions to v1beta4 (#5718)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-08-01 23:10:01 +08:00
cuisongliu 5773752bea docs: update contribution policy and guidelines in README (#5741)
Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-07-31 17:17:56 +08:00
cuisongliu b459a0de62 fix(main): validate kubeadm config files before pulling images (#5715)
* fix(main): validate kubeadm config files before pulling images

* test(e2e): add end-to-end tests for Kubernetes and Docker versions 1.29.0 to 1.32.0

Signed-off-by: cuisongliu <cuisongliu@qq.com>

* fix(main): update image pulling logic and refactor string utilities

Signed-off-by: cuisongliu <cuisongliu@qq.com>

---------

Signed-off-by: cuisongliu <cuisongliu@qq.com>
2025-07-24 14:47:26 +08:00
Jiahui 8c2db08fd4 Support subscriptions, atom payments, credits, and optimize debt systems (#5545)
* add credits

* create table

* change name & add table name

* optimize interface

* print result err log

* fix

* add credits for debt

* creditsTransaction add region

* refactor debt status:
Normal\LowBalance\CriticalBalance\Debt\DebtDeletion\Final Period.

* refactor debt status:
Normal\LowBalance\CriticalBalance\Debt\DebtDeletion\Final Period.

* add retry transaction

* optimize determine status

* support card pay & subscription plan & operator service

* add pay notify & redirect url

* fix

* optimize

* add error test log

* fix req time

* fix

* fix

* add subscription payment api

* only processes the `CAPTURE_RESULT` notify type

* fix

* fix

* fixed notify structure parsing

* fix

* fix

* init a Free initial subscription plan √/ Initialize credits Create √

* init resourcequota wiht subscription

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix card type

* fix

* Subscribe controller: real-time monitoring subscriptionTransaction processing created/upgrade/downgrade

* fix

* fix

* fix

* determine current debt status with subscription

* optimize pay api resp

* process subscription auto renewal

* optimize log

* fix

* fix

* add GetAppResourceCosts api

* fix

* add GetLastSubscriptionTransaction api

* add GetSubscriptionUpgradeAmount api

* add /subscription/flush-quota api

* fix

* add remote flush subscription quota

* go mod tidy

* fix

* add retry flush subscription quota

* add custom debt status send email body

* fix

* fix

* fix

* fix

* fix

* add free process subscription

* fix

* add default pay expire time

* optimize

* support kyc & optimize

* optimiz

* add descributed lock with gorm db

* optimize debt reconcile

* optimize send email

* optimize split sms vms code map; handler failure reflush debt status.

* optimize

* add email username

* optimize

* skip zero user

* optimize flush svc

* add convert test func

* fix

* optimize log

* use the k8s client with cache

* fix golang ci lint
2025-05-06 16:56:25 +08:00
榴莲榴莲 f90c8b6911 add readme (#5454)
Signed-off-by: ghostloda <78798447@qq.com>
2025-03-13 11:05:47 +08:00
zzjin ea71f32607 Fix doc links. (#5453)
Signed-off-by: zzjin <tczzjin@gmail.com>
2025-03-10 15:29:50 +08:00
榴莲榴莲 af9b5abdf1 mv lifecycle to stand-alone directory (#5425)
* mv lifecycle to stand-alone directory

* fix workflows

* fix workflows

Signed-off-by: ghostloda <78798447@qq.com>

fix workflows

* fix e2e workflows

Signed-off-by: ghostloda <78798447@qq.com>

* fix e2e workflows

Signed-off-by: ghostloda <78798447@qq.com>

* mv to lifecycle from root dir

Signed-off-by: ghostloda <78798447@qq.com>

* fix release workflows

Signed-off-by: ghostloda <78798447@qq.com>

* Move lifecycle-related script files to lifecycle

Signed-off-by: ghostloda <78798447@qq.com>

* Move to lifecycle

Signed-off-by: ghostloda <78798447@qq.com>

* fix lifecycle project ptah

Signed-off-by: ghostloda <78798447@qq.com>

* fix path ptah

Signed-off-by: ghostloda <78798447@qq.com>

* add lifecycle modules

Signed-off-by: ghostloda <78798447@qq.com>

* fix format

Signed-off-by: ghostloda <78798447@qq.com>

* fix format

Signed-off-by: ghostloda <78798447@qq.com>

---------

Signed-off-by: ghostloda <78798447@qq.com>
2025-03-10 10:15:22 +08:00