Closed cmoulliard closed 4 years ago
we use this Application custom resource to install/configure
Installation configuration is part of the container build. On the runtime, the initialization and execution of the container are already declared in the workload object (Deployment, DaemonSet, Job...). The scope of the Application is to aggregate kubernetes resources associated with one application, what's going on inside the container and how it's built is not part of the proposal.
The scope of the Application is to aggregate kubernetes
This is also the goal of my proposition excepted that I suggest to have a dedicated custom resource describing using a more human/readible resource, what are the components composing my application.
When you design/develop a microservices's application as an architect, you will then describe what are the different systems, part of your application that ultimately we have to install deploy on kubernetes/openshift.
By adopting this component
custom resource, we can then decouple the technical k8s resources (pod, service, serviceaccount, configmap, secret, replicaset,...) to be created from the definition of the application itself and delegate to a controller/operator, the responsibility to translate the info provided such as runtime, cpu, memory, port, ... into the final k8s resource to be created.
Example :
High Level definition
Application
component1 : spring boot, port 9090, env : SPRING_PROFILES_ACTIVE=my-cool-db
component2 : nodejs, port 8080
service1 : postgresqldb (from service catalog)
Converted by the controller/operator into
Application AND resources associated (for garbage collection) :
component1
deployment, replicaset, pod where port = 9090, service where port = HTTP and 9090, pod including env var with value SPRING_PROFILES_ACTIVE=my-cool-db ...
component2
deployment, replicaset, pod where port = 8080, service where port = HTTP and 8080, ...
service1
serviceInstance, secret, serviceInstance, updating the deployment to add EnvFrom
@mattfarina @kow3ns @prydonius WDYT about my proposition ?
To support the Component CRD
's approach, I have created this demo project where we install 2 microservices or components and consume a service
https://github.com/snowdrop/component-operator-demo#introduction
WDYT @mattfarina @kow3ns @prydonius
I like to keep a separation of concerns.
Information about how an image was built would be better placed on the image itself. Maybe as an annotation. No matter where that image is run this information would be available.
If something should be exported this will show up in a Service. The space needed will be in an existing object. Why would we add a component to record it a second time?
Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale
.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close
.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale
Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten
.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close
.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle rotten
Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen
.
Mark the issue as fresh with /remove-lifecycle rotten
.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /close
@fejta-bot: Closing this issue.
/reopen
@cmoulliard: Reopened this issue.
/remove-lifecycle rotten
FYI: The Component API Spec has been moved to this project : https://github.com/halkyonio/api/blob/master/component/v1beta1/types.go#L50-L74 and is currently supported by this operator : https://github.com/halkyonio/operator
Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale
.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close
.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale
Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten
.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close
.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle rotten
Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen
.
Mark the issue as fresh with /remove-lifecycle rotten
.
Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /close
@fejta-bot: Closing this issue.
The ApplicationSpec type includes the field
spec.componentKinds
to group under a name, related kubernetes resources such as Service, StatefulSet, ConfigMap, Secret ... describing globally what the application is composedIf we use this Application custom resource to install/configure the environment on kubernetes to deploy the resources needed using a controller or operator, then it is important to have also a specialised type able to :
Example: As a user, I would like to install a Spring Boot application using the version 1.5.15 of the framework and would like to access it externally using a route. The default port of the service is 8080. To convert this requirement into a component's type, then the following object could be created
The advantage to have such
component
custom resource is that we could be able with a UI or CLI to display the information in a more readable wayComponent's type proposition