diff --git a/api/v1alpha1/appservice_types.go b/api/v1alpha1/appservice_types.go index 8d9ba40..8d0596f 100644 --- a/api/v1alpha1/appservice_types.go +++ b/api/v1alpha1/appservice_types.go @@ -28,12 +28,11 @@ import ( // AppServiceSpec defines the desired state of AppService type AppServiceSpec struct { // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster - // Important: Run "make" to regenerate code after modifying this file - - // Foo is an example field of AppService. Edit appservice_types.go to remove/update + // Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file + // Add custom validation using kubebuilder tags: https://book.kubebuilder.io/beyond_basics/generating_crd.html Size *int32 `json:"size"` Image string `json:"image"` - Resources *Resources `json:"resource,omitempty"` + Resources *Resources `json:"resources,omitempty"` Envs []corev1.EnvVar `json:"envs,omitempty"` Ports []corev1.ServicePort `json:"ports,omitempty"` } diff --git a/config/crd/bases/app.treesir.pub.treesir.pub_appservices.yaml b/config/crd/bases/app.treesir.pub.treesir.pub_appservices.yaml index 9f31590..2a83e13 100644 --- a/config/crd/bases/app.treesir.pub.treesir.pub_appservices.yaml +++ b/config/crd/bases/app.treesir.pub.treesir.pub_appservices.yaml @@ -201,7 +201,7 @@ spec: - port type: object type: array - resource: + resources: properties: limits: additionalProperties: @@ -225,8 +225,10 @@ spec: type: object type: object size: - description: Foo is an example field of AppService. Edit appservice_types.go - to remove/update + description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + Important: Run "operator-sdk generate k8s" to regenerate code after + modifying this file Add custom validation using kubebuilder tags: + https://book.kubebuilder.io/beyond_basics/generating_crd.html' format: int32 type: integer required: diff --git a/controllers/appservice_controller.go b/controllers/appservice_controller.go index 77600d4..7d0f599 100644 --- a/controllers/appservice_controller.go +++ b/controllers/appservice_controller.go @@ -203,17 +203,25 @@ func newContainers(instance *apptreesirpubv1alpha1.AppService) []corev1.Containe cport.ContainerPort = svcPort.TargetPort.IntVal containerPorts = append(containerPorts, cport) } + + container := corev1.Container{ + Name: instance.Name, + Image: instance.Spec.Image, + Ports: containerPorts, + ImagePullPolicy: corev1.PullIfNotPresent, + Env: instance.Spec.Envs, + } + + if instance.Spec.Resources != nil { + if instance.Spec.Resources.Requests != nil { + container.Resources.Requests = instance.Spec.Resources.Requests + } + if instance.Spec.Resources.Limits != nil { + container.Resources.Limits = instance.Spec.Resources.Limits + } + } + return []corev1.Container{ - { - Name: instance.Name, - Image: instance.Spec.Image, - Resources: corev1.ResourceRequirements{ - Requests: instance.Spec.Resources.Requests, - Limits: instance.Spec.Resources.Limits, - }, - Ports: containerPorts, - ImagePullPolicy: corev1.PullIfNotPresent, - Env: instance.Spec.Envs, - }, + container, } } diff --git a/test.yaml b/test.yaml new file mode 100644 index 0000000..9580cb8 --- /dev/null +++ b/test.yaml @@ -0,0 +1,17 @@ +apiVersion: app.treesir.pub.treesir.pub/v1alpha1 +kind: AppService +metadata: + labels: + app.kubernetes.io/name: appservice + app.kubernetes.io/instance: appservice-sample + app.kubernetes.io/part-of: opdemo + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: opdemo + name: appservice-sample +spec: + size: 2 + image: nginx:1.7.9 + ports: + - port: 80 + targetPort: 80 + nodePort: 30002 \ No newline at end of file