Skip to content

Commit

Permalink
Merge branch 'labring:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
lingdie authored Jan 14, 2025
2 parents b13c971 + 21e0b36 commit 46305f7
Show file tree
Hide file tree
Showing 150 changed files with 3,404 additions and 10,759 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Sealos['siːləs] is a cloud operating system distribution based on the Kubernet

+ 🌐 Visit the [Sealos website](https://sealos.io/) for full documentation and useful links.
+ 💬 Join our [Discord server](https://discord.gg/qzBmGGZGk7) is to chat with Sealos developers and other Sealos users. This is a good place to learn about Sealos and Kubernetes, ask questions, and share your experiences.
+ 🐦 Tweet at @sealosio on [Twitter](https://twitter.com/sealosio) and follow us.
+ 🐦 Tweet at @Sailos_io on [Twitter](https://twitter.com/Sailos_io) and follow us.
+ 🐞 Create [GitHub Issues](https://github.com/labring/sealos/issues/new/choose) for bug reports and feature requests.

## 🚧 Roadmap
Expand Down
2 changes: 1 addition & 1 deletion README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Sealos 是一款以 Kubernetes 为内核的**云操作系统发行版**。它以

- 💬 加入我们的 [Discord服务器](https://discord.gg/qzBmGGZGk7),与 Sealos 开发者和终端用户进行交流。这是了解 Sealos 和 Kubernetes 以及提问和分享经验的理想之地。

- 🐦 在 [Twitter](https://twitter.com/sealosio) 上关注我们。
- 🐦 在 [Twitter](https://twitter.com/Sailos_io) 上关注我们。

- 🐞 请将任何 Sealos 的 Bug、问题和需求提交到 [GitHub Issue](https://github.com/labring/sealos/issues/new/choose)

Expand Down
84 changes: 51 additions & 33 deletions controllers/devbox/api/v1alpha1/devbox_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,10 @@ package v1alpha1

import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type ResourceName string

const (
// ResourceCPU CPU, in cores. (500m = .5 cores)
ResourceCPU ResourceName = "cpu"
// ResourceMemory Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
ResourceMemory ResourceName = "memory"
// FinalizerName is the finalizer for Devbox
FinalizerName = "devbox.sealos.io/finalizer"
DevBoxPartOf = "devbox"
Expand All @@ -52,8 +45,6 @@ const (
NetworkTypeTailnet NetworkType = "Tailnet"
)

type ResourceList map[ResourceName]resource.Quantity

type RuntimeRef struct {
// +kubebuilder:validation:Required
Name string `json:"name"`
Expand All @@ -69,46 +60,75 @@ type NetworkSpec struct {
ExtraPorts []corev1.ContainerPort `json:"extraPorts"`
}

type Config struct {
// +kubebuilder:validation:Optional
// +kubebuilder:default=devbox
User string `json:"user"`

// +kubebuilder:validation:Optional
Labels map[string]string `json:"labels,omitempty"`
// +kubebuilder:validation:Optional
Annotations map[string]string `json:"annotations,omitempty"`

// +kubebuilder:validation:Optional
Command []string `json:"command,omitempty"`
// kubebuilder:validation:Optional
Args []string `json:"args,omitempty"`
// +kubebuilder:validation:Optional
// +kubebuilder:default=/home/devbox/project
WorkingDir string `json:"workingDir,omitempty"`
// +kubebuilder:validation:Optional
Env []corev1.EnvVar `json:"env,omitempty"`

// +kubebuilder:validation:Optional
// +kubebuilder:default={/bin/bash,-c}
ReleaseCommand []string `json:"releaseCommand,omitempty"`
// +kubebuilder:validation:Optional
// +kubebuilder:default={/home/devbox/project/entrypoint.sh}
ReleaseArgs []string `json:"releaseArgs,omitempty"`

// TODO: in v1alpha2 api we need fix the port and app port into one field and create a new type for it.
// +kubebuilder:validation:Optional
// +kubebuilder:default={{name:"devbox-ssh-port",containerPort:22,protocol:TCP}}
Ports []corev1.ContainerPort `json:"ports,omitempty"`
// +kubebuilder:validation:Optional
// +kubebuilder:default={{name:"devbox-app-port",port:8080,protocol:TCP}}
AppPorts []corev1.ServicePort `json:"appPorts,omitempty"`

// +kubebuilder:validation:Optional
VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
// +kubebuilder:validation:Optional
Volumes []corev1.Volume `json:"volumes,omitempty"`
}

// DevboxSpec defines the desired state of Devbox
type DevboxSpec struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=Running;Stopped
State DevboxState `json:"state"`
// +kubebuilder:validation:Required
Resource ResourceList `json:"resource"`
Resource corev1.ResourceList `json:"resource"`

// +kubebuilder:validation:Optional
// +kubebuilder:default=false
Squash bool `json:"squash"`

// +kubebuilder:validation:Required
RuntimeRef RuntimeRef `json:"runtimeRef"`

// +kubebuilder:validation:Required
NetworkSpec NetworkSpec `json:"network,omitempty"`
Image string `json:"image"`

// todo add rewrite labels and annotations...
// +kubebuilder:validation:Optional
ExtraLabels map[string]string `json:"extraLabels,omitempty"`
// +kubebuilder:validation:Optional
ExtraAnnotations map[string]string `json:"extraAnnotations,omitempty"`
TemplateID string `json:"templateID"`

// +kubebuilder:validation:Optional
Command []string `json:"command,omitempty"`
// +kubebuilder:validation:Optional
Args []string `json:"args,omitempty"`
// +kubebuilder:validation:Optional
WorkingDir string `json:"workingDir,omitempty"`
// todo add rewrite env...
// +kubebuilder:validation:Optional
ExtraEnvs []corev1.EnvVar `json:"extraEnvs"`
// +kubebuilder:validation:Required
Config Config `json:"config"`

// +kubebuilder:validation:Required
NetworkSpec NetworkSpec `json:"network,omitempty"`

// todo add rewrite volumes and volume mounts..
// +kubebuilder:validation:Optional
ExtraVolumes []corev1.Volume `json:"extraVolumes,omitempty"`
RuntimeClassName string `json:"runtimeClassName,omitempty"`
// +kubebuilder:validation:Optional
ExtraVolumeMounts []corev1.VolumeMount `json:"extraVolumeMounts,omitempty"`

NodeSelector map[string]string `json:"nodeSelector,omitempty"`
// +kubebuilder:validation:Optional
Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
// +kubebuilder:validation:Optional
Expand Down Expand Up @@ -189,8 +209,6 @@ type DevboxStatus struct {
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="State",type="string",JSONPath=".spec.state"
// +kubebuilder:printcolumn:name="RuntimeRef",type="string",JSONPath=".spec.runtimeRef.name"
// +kubebuilder:printcolumn:name="PodPhase",type="string",JSONPath=".status.podPhase"
// +kubebuilder:printcolumn:name="NetworkType",type="string",JSONPath=".status.network.type"
// +kubebuilder:printcolumn:name="NodePort",type="integer",JSONPath=".status.network.nodePort"
// +kubebuilder:printcolumn:name="Phase",type="string",JSONPath=".status.phase"
Expand Down
140 changes: 0 additions & 140 deletions controllers/devbox/api/v1alpha1/runtime_types.go

This file was deleted.

71 changes: 0 additions & 71 deletions controllers/devbox/api/v1alpha1/runtimeclass_types.go

This file was deleted.

Loading

0 comments on commit 46305f7

Please sign in to comment.