You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2019/10/01 07:48:14 UTC
[camel-k] branch master updated (82cff0a -> 2a922d8)
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git.
from 82cff0a fix: Kaniko publisher step fails with IncrementalPackager
new bcba05f fix(trait): Directly configure container env in Jolokia trait
new e0a141f fix(trait): Directly configure container env in Prometheus trait
new 64553ae fix(prometheus): Create a service if no one exists already
new d433821 fix(prometheus): Fix Prometheus service condition message
new 2a922d8 fix(knative): Add Jolokia and Prometheus traits so that they are disabled by default
The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
pkg/trait/jolokia.go | 41 ++++++++--------
pkg/trait/jolokia_test.go | 16 ++++---
pkg/trait/prometheus.go | 113 ++++++++++++++++++++++++---------------------
pkg/trait/service.go | 61 +++++++++++++-----------
pkg/trait/trait_catalog.go | 2 +
5 files changed, 127 insertions(+), 106 deletions(-)
[camel-k] 02/05: fix(trait): Directly configure container env in
Prometheus trait
Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit e0a141f703591b8a72b1d145f74886a586844736
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 16:04:37 2019 +0200
fix(trait): Directly configure container env in Prometheus trait
---
pkg/trait/prometheus.go | 78 +++++++++++++++++++++++--------------------------
1 file changed, 37 insertions(+), 41 deletions(-)
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index f52ad54..7ff1db4 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -56,39 +56,53 @@ func (t *prometheusTrait) Configure(e *Environment) (bool, error) {
}
func (t *prometheusTrait) Apply(e *Environment) (err error) {
+ containerName := defaultContainerName
+ dt := e.Catalog.GetTrait(containerTraitID)
+ if dt != nil {
+ containerName = dt.(*containerTrait).Name
+ }
+
+ container := e.Resources.GetContainerByName(containerName)
+ if container == nil {
+ e.Integration.Status.SetCondition(
+ v1alpha1.IntegrationConditionPrometheusAvailable,
+ corev1.ConditionFalse,
+ v1alpha1.IntegrationConditionContainerNotAvailableReason,
+ "",
+ )
+ return nil
+ }
+
if t.Enabled == nil || !*t.Enabled {
// Deactivate the Prometheus Java agent
// Note: the AB_PROMETHEUS_OFF environment variable acts as an option flag
- envvar.SetVal(&e.EnvVars, "AB_PROMETHEUS_OFF", "true")
+ envvar.SetVal(&container.Env, "AB_PROMETHEUS_OFF", "true")
return nil
}
- // Configure the Prometheus Java agent
- envvar.SetVal(&e.EnvVars, "AB_PROMETHEUS_PORT", strconv.Itoa(t.Port))
-
- service, servicePort := t.configureServicePort(e)
- container, containerPort := t.configureContainerPort(e)
-
condition := v1alpha1.IntegrationCondition{
Type: v1alpha1.IntegrationConditionPrometheusAvailable,
Status: corev1.ConditionTrue,
Reason: v1alpha1.IntegrationConditionPrometheusAvailableReason,
}
- if servicePort != nil {
- service.Spec.Ports = append(service.Spec.Ports, *servicePort)
- condition.Message = fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port)
- } else {
+ // Configure the Prometheus Java agent
+ envvar.SetVal(&container.Env, "AB_PROMETHEUS_PORT", strconv.Itoa(t.Port))
+
+ // Add the container port
+ containerPort := t.getContainerPort()
+ container.Ports = append(container.Ports, *containerPort)
+ condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
+
+ // Add the service port
+ service := e.Resources.GetServiceForIntegration(e.Integration)
+ if service == nil {
condition.Status = corev1.ConditionFalse
condition.Reason = v1alpha1.IntegrationConditionServiceNotAvailableReason
- }
-
- if containerPort != nil {
- container.Ports = append(container.Ports, *containerPort)
- condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
} else {
- condition.Status = corev1.ConditionFalse
- condition.Reason = v1alpha1.IntegrationConditionContainerNotAvailableReason
+ servicePort := t.getServicePort()
+ service.Spec.Ports = append(service.Spec.Ports, *servicePort)
+ condition.Message += fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port)
}
e.Integration.Status.SetConditions(condition)
@@ -97,8 +111,8 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
return nil
}
+ // Add the ServiceMonitor resource
if t.ServiceMonitor {
- // Add the ServiceMonitor resource
smt, err := t.getServiceMonitorFor(e)
if err != nil {
return err
@@ -109,41 +123,23 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
return nil
}
-func (t *prometheusTrait) configureContainerPort(e *Environment) (*corev1.Container, *corev1.ContainerPort) {
- containerName := defaultContainerName
- dt := e.Catalog.GetTrait(containerTraitID)
- if dt != nil {
- containerName = dt.(*containerTrait).Name
- }
-
- container := e.Resources.GetContainerByName(containerName)
- if container == nil {
- return nil, nil
- }
-
+func (t *prometheusTrait) getContainerPort() *corev1.ContainerPort {
containerPort := corev1.ContainerPort{
Name: prometheusPortName,
ContainerPort: int32(t.Port),
Protocol: corev1.ProtocolTCP,
}
-
- return container, &containerPort
+ return &containerPort
}
-func (t *prometheusTrait) configureServicePort(e *Environment) (*corev1.Service, *corev1.ServicePort) {
- service := e.Resources.GetServiceForIntegration(e.Integration)
- if service == nil {
- return nil, nil
- }
-
+func (t *prometheusTrait) getServicePort() *corev1.ServicePort {
servicePort := corev1.ServicePort{
Name: prometheusPortName,
Port: int32(t.Port),
Protocol: corev1.ProtocolTCP,
TargetPort: intstr.FromString(prometheusPortName),
}
-
- return service, &servicePort
+ return &servicePort
}
func (t *prometheusTrait) getServiceMonitorFor(e *Environment) (*monitoringv1.ServiceMonitor, error) {
[camel-k] 01/05: fix(trait): Directly configure container env in
Jolokia trait
Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit bcba05fbcf3049148aa5157024523b75b87cd980
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 16:03:57 2019 +0200
fix(trait): Directly configure container env in Jolokia trait
---
pkg/trait/jolokia.go | 41 ++++++++++++++++++++---------------------
pkg/trait/jolokia_test.go | 16 ++++++++++------
2 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/pkg/trait/jolokia.go b/pkg/trait/jolokia.go
index bfe6174..37721ba 100644
--- a/pkg/trait/jolokia.go
+++ b/pkg/trait/jolokia.go
@@ -79,15 +79,32 @@ func (t *jolokiaTrait) Configure(e *Environment) (bool, error) {
}
func (t *jolokiaTrait) Apply(e *Environment) (err error) {
+ containerName := defaultContainerName
+ dt := e.Catalog.GetTrait(containerTraitID)
+ if dt != nil {
+ containerName = dt.(*containerTrait).Name
+ }
+
+ container := e.Resources.GetContainerByName(containerName)
+ if container == nil {
+ e.Integration.Status.SetCondition(
+ v1alpha1.IntegrationConditionJolokiaAvailable,
+ corev1.ConditionFalse,
+ v1alpha1.IntegrationConditionContainerNotAvailableReason,
+ "",
+ )
+ return nil
+ }
+
if t.Enabled == nil || !*t.Enabled {
// Deactivate the Jolokia Java agent
// Note: the AB_JOLOKIA_OFF environment variable acts as an option flag
- envvar.SetVal(&e.EnvVars, "AB_JOLOKIA_OFF", "true")
+ envvar.SetVal(&container.Env, "AB_JOLOKIA_OFF", "true")
return nil
}
// Need to set it explicitly as it default to true
- envvar.SetVal(&e.EnvVars, "AB_JOLOKIA_AUTH_OPENSHIFT", "false")
+ envvar.SetVal(&container.Env, "AB_JOLOKIA_AUTH_OPENSHIFT", "false")
// Configure the Jolokia Java agent
// Populate first with the extra options
@@ -113,25 +130,7 @@ func (t *jolokiaTrait) Apply(e *Environment) (err error) {
for k, v := range options {
optionValues = append(optionValues, k+"="+v)
}
- envvar.SetVal(&e.EnvVars, "AB_JOLOKIA_OPTS", strings.Join(optionValues, ","))
-
- containerName := defaultContainerName
- dt := e.Catalog.GetTrait(containerTraitID)
- if dt != nil {
- containerName = dt.(*containerTrait).Name
- }
-
- container := e.Resources.GetContainerByName(containerName)
- if container == nil {
- e.Integration.Status.SetCondition(
- v1alpha1.IntegrationConditionJolokiaAvailable,
- corev1.ConditionFalse,
- v1alpha1.IntegrationConditionContainerNotAvailableReason,
- "",
- )
-
- return nil
- }
+ envvar.SetVal(&container.Env, "AB_JOLOKIA_OPTS", strings.Join(optionValues, ","))
containerPort := corev1.ContainerPort{
Name: "jolokia",
diff --git a/pkg/trait/jolokia_test.go b/pkg/trait/jolokia_test.go
index 30381f6..5474fde 100644
--- a/pkg/trait/jolokia_test.go
+++ b/pkg/trait/jolokia_test.go
@@ -113,12 +113,13 @@ func TestApplyJolokiaTraitNominalShouldSucceed(t *testing.T) {
err := trait.Apply(environment)
+ container := environment.Resources.GetContainerByName(defaultContainerName)
+
assert.Nil(t, err)
- test.EnvVarHasValue(t, environment.EnvVars, "AB_JOLOKIA_AUTH_OPENSHIFT", "false")
- test.EnvVarHasValue(t, environment.EnvVars, "AB_JOLOKIA_OPTS", "port=8778")
+ test.EnvVarHasValue(t, container.Env, "AB_JOLOKIA_AUTH_OPENSHIFT", "false")
+ test.EnvVarHasValue(t, container.Env, "AB_JOLOKIA_OPTS", "port=8778")
assert.Len(t, environment.Integration.Status.Conditions, 1)
- container := environment.Resources.GetContainerByName("integration")
assert.NotNil(t, container)
assert.Len(t, container.Ports, 1)
containerPort := container.Ports[0]
@@ -158,8 +159,10 @@ func TestApplyJolokiaTraitWithOptionShouldOverrideDefault(t *testing.T) {
err := trait.Apply(environment)
+ container := environment.Resources.GetContainerByName(defaultContainerName)
+
assert.Nil(t, err)
- ev := envvar.Get(environment.EnvVars, "AB_JOLOKIA_OPTS")
+ ev := envvar.Get(container.Env, "AB_JOLOKIA_OPTS")
assert.NotNil(t, ev)
assert.Contains(t, ev.Value, "port=8778", "host=explicit-host", "discoveryEnabled=true", "protocol=http", "caCert=.cacert")
assert.Contains(t, ev.Value, "extendedClientCheck=false", "clientPrincipal=cn:any", "useSslClientAuthentication=false")
@@ -181,8 +184,10 @@ func TestApplyDisabledJolokiaTraitShouldNotSucceed(t *testing.T) {
err := trait.Apply(environment)
+ container := environment.Resources.GetContainerByName(defaultContainerName)
+
assert.Nil(t, err)
- test.EnvVarHasValue(t, environment.EnvVars, "AB_JOLOKIA_OFF", "true")
+ test.EnvVarHasValue(t, container.Env, "AB_JOLOKIA_OFF", "true")
}
func TestSetDefaultJolokiaOptionShoudlNotOverrideOptionsMap(t *testing.T) {
@@ -283,7 +288,6 @@ func TestAddWrongTypeOptionToJolokiaOptionsDoesNothing(t *testing.T) {
}
func createNominalJolokiaTest() (*jolokiaTrait, *Environment) {
-
trait := newJolokiaTrait()
enabled := true
trait.Enabled = &enabled
[camel-k] 04/05: fix(prometheus): Fix Prometheus service condition
message
Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit d433821d2766e56a31e8f0d8f41c7bad76edcadc
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 18:32:17 2019 +0200
fix(prometheus): Fix Prometheus service condition message
---
pkg/trait/prometheus.go | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index bbef5b8..b5dd77d 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -92,7 +92,7 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
// Add the container port
containerPort := t.getContainerPort()
container.Ports = append(container.Ports, *containerPort)
- condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
+ condition.Message = fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
// Retrieve the service or create a new one if the service trait is enabled
serviceEnabled := false
@@ -114,7 +114,7 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
if serviceEnabled {
servicePort := t.getServicePort()
service.Spec.Ports = append(service.Spec.Ports, *servicePort)
- condition.Message += fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port)
+ condition.Message = fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port) + condition.Message
// Add the ServiceMonitor resource
if t.ServiceMonitor {
[camel-k] 05/05: fix(knative): Add Jolokia and Prometheus traits so
that they are disabled by default
Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 2a922d82351d9ded3122528c9bb5d7fdb6ff3d1d
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 18:32:53 2019 +0200
fix(knative): Add Jolokia and Prometheus traits so that they are disabled by default
---
pkg/trait/trait_catalog.go | 2 ++
1 file changed, 2 insertions(+)
diff --git a/pkg/trait/trait_catalog.go b/pkg/trait/trait_catalog.go
index 5dfacab..b682314 100644
--- a/pkg/trait/trait_catalog.go
+++ b/pkg/trait/trait_catalog.go
@@ -184,6 +184,8 @@ func (c *Catalog) traitsFor(environment *Environment) []Trait {
c.tAffinity,
c.tKnativeService,
c.tContainer,
+ c.tJolokia,
+ c.tPrometheus,
c.tClasspath,
c.tProbes,
c.tIstio,
[camel-k] 03/05: fix(prometheus): Create a service if no one exists
already
Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 64553ae05309806ebbdf999179a3edc4bcc425ee
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 18:28:09 2019 +0200
fix(prometheus): Create a service if no one exists already
---
pkg/trait/prometheus.go | 47 ++++++++++++++++++++++---------------
pkg/trait/service.go | 61 ++++++++++++++++++++++++++++---------------------
2 files changed, 64 insertions(+), 44 deletions(-)
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index 7ff1db4..bbef5b8 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -94,32 +94,43 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
container.Ports = append(container.Ports, *containerPort)
condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
- // Add the service port
+ // Retrieve the service or create a new one if the service trait is enabled
+ serviceEnabled := false
service := e.Resources.GetServiceForIntegration(e.Integration)
if service == nil {
- condition.Status = corev1.ConditionFalse
- condition.Reason = v1alpha1.IntegrationConditionServiceNotAvailableReason
- } else {
+ trait := e.Catalog.GetTrait(serviceTraitID)
+ if serviceTrait, ok := trait.(*serviceTrait); ok {
+ serviceEnabled = serviceTrait.isEnabled()
+ }
+ if serviceEnabled {
+ // add a new service if not already created
+ service = getServiceFor(e)
+ e.Resources.Add(service)
+ }
+ }
+
+ // Add the service port and service monitor resource
+ // A better strategy may be needed when the Knative profile is active
+ if serviceEnabled {
servicePort := t.getServicePort()
service.Spec.Ports = append(service.Spec.Ports, *servicePort)
condition.Message += fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port)
- }
-
- e.Integration.Status.SetConditions(condition)
- if condition.Status == corev1.ConditionFalse {
- return nil
- }
-
- // Add the ServiceMonitor resource
- if t.ServiceMonitor {
- smt, err := t.getServiceMonitorFor(e)
- if err != nil {
- return err
+ // Add the ServiceMonitor resource
+ if t.ServiceMonitor {
+ smt, err := t.getServiceMonitorFor(e)
+ if err != nil {
+ return err
+ }
+ e.Resources.Add(smt)
}
- e.Resources.Add(smt)
+ } else {
+ condition.Status = corev1.ConditionFalse
+ condition.Reason = v1alpha1.IntegrationConditionServiceNotAvailableReason
}
+ e.Integration.Status.SetConditions(condition)
+
return nil
}
@@ -167,7 +178,7 @@ func (t *prometheusTrait) getServiceMonitorFor(e *Environment) (*monitoringv1.Se
},
Endpoints: []monitoringv1.Endpoint{
{
- Port: "prometheus",
+ Port: prometheusPortName,
},
},
},
diff --git a/pkg/trait/service.go b/pkg/trait/service.go
index ae204c0..3efb446 100644
--- a/pkg/trait/service.go
+++ b/pkg/trait/service.go
@@ -30,16 +30,23 @@ type serviceTrait struct {
Auto *bool `property:"auto"`
}
-const httpPortName = "http"
+const (
+ serviceTraitID = "service"
+ httpPortName = "http"
+)
func newServiceTrait() *serviceTrait {
return &serviceTrait{
- BaseTrait: newBaseTrait("service"),
+ BaseTrait: newBaseTrait(serviceTraitID),
}
}
+func (t *serviceTrait) isEnabled() bool {
+ return t.Enabled == nil || *t.Enabled
+}
+
func (t *serviceTrait) Configure(e *Environment) (bool, error) {
- if t.Enabled != nil && !*t.Enabled {
+ if !t.isEnabled() {
e.Integration.Status.SetCondition(
v1alpha1.IntegrationConditionServiceAvailable,
corev1.ConditionFalse,
@@ -83,32 +90,34 @@ func (t *serviceTrait) Configure(e *Environment) (bool, error) {
return true, nil
}
-func (t *serviceTrait) Apply(e *Environment) (err error) {
+func (t *serviceTrait) Apply(e *Environment) error {
svc := e.Resources.GetServiceForIntegration(e.Integration)
+ // add a new service if not already created
if svc == nil {
- svc := corev1.Service{
- TypeMeta: metav1.TypeMeta{
- Kind: "Service",
- APIVersion: "v1",
- },
- ObjectMeta: metav1.ObjectMeta{
- Name: e.Integration.Name,
- Namespace: e.Integration.Namespace,
- Labels: map[string]string{
- "camel.apache.org/integration": e.Integration.Name,
- },
+ svc = getServiceFor(e)
+ e.Resources.Add(svc)
+ }
+ return nil
+}
+
+func getServiceFor(e *Environment) *corev1.Service {
+ return &corev1.Service{
+ TypeMeta: metav1.TypeMeta{
+ Kind: "Service",
+ APIVersion: "v1",
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Name: e.Integration.Name,
+ Namespace: e.Integration.Namespace,
+ Labels: map[string]string{
+ "camel.apache.org/integration": e.Integration.Name,
},
- Spec: corev1.ServiceSpec{
- Ports: []corev1.ServicePort{},
- Selector: map[string]string{
- "camel.apache.org/integration": e.Integration.Name,
- },
+ },
+ Spec: corev1.ServiceSpec{
+ Ports: []corev1.ServicePort{},
+ Selector: map[string]string{
+ "camel.apache.org/integration": e.Integration.Name,
},
- }
-
- // add a new service if not already created
- e.Resources.Add(&svc)
+ },
}
-
- return nil
}