Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport - fix(olm): fix profile name: Openshift -> OpenShift in OLM sample (1.9.x) #3462

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions config/crd/bases/camel.apache.org_integrationplatforms.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ spec:
type: object
cluster:
description: what kind of cluster you're running (ie, plain Kubernetes
or Openshift)
or OpenShift)
type: string
configuration:
description: list of configuration properties to be attached to all
Expand Down Expand Up @@ -543,7 +543,7 @@ spec:
type: object
cluster:
description: what kind of cluster you're running (ie, plain Kubernetes
or Openshift)
or OpenShift)
type: string
conditions:
description: which are the conditions met (particularly useful when
Expand Down
2 changes: 1 addition & 1 deletion config/samples/patch-integration-platform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ spec:
# The profile to be implemented by default
# ie. OpenShift, Kubernetes, Knative
#
profile: Openshift
profile: OpenShift
#
#
# Options propagated to integrations
Expand Down
4 changes: 2 additions & 2 deletions docs/modules/ROOT/pages/architecture/traits.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ Traits are typically used to tune several aspects of an `Integration`. However,
Another important concept related to the trait lifecycle is the **trait profile**. At this time, Camel K is supporting the following profiles:

* Kubernetes
* Openshift
* OpenShift
* Knative

A profile is useful to identify on which kind of cluster a trait has to run: vanilla `Kubernetes`, `Openshift` or OpenShift/Kubernetes clusters powered by `Knative`. The default is to allow a trait on any profile; each trait can specify a different behavior (ie, running a trait only for a profile as it happens with `Knative`).
A profile is useful to identify on which kind of cluster a trait has to run: vanilla `Kubernetes`, `OpenShift` or OpenShift/Kubernetes clusters powered by `Knative`. The default is to allow a trait on any profile; each trait can specify a different behavior (ie, running a trait only for a profile as it happens with `Knative`).

[[traits-configuration]]
=== Trait configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The following steps assume that
- you've already built the camel-k image using `make images` and made it available in the cluster as an imagestream
- you've already built the bundle image using `make bundle` and have pushed it to some registry

To perform OLM (Operator Lifecycle Manager) based deployment of camel-k, built from source locally on an Openshift cluster, you can follow the steps below.
To perform OLM (Operator Lifecycle Manager) based deployment of camel-k, built from source locally on an OpenShift cluster, you can follow the steps below.

Login to the cluster using the standard "oc" tool, create new project, complete the basic setup process. Reference commands below

Expand Down
89 changes: 85 additions & 4 deletions docs/modules/ROOT/partials/apis/camel-k-crds.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1792,7 +1792,7 @@ IntegrationPlatformSpec defines the desired state of IntegrationPlatform
|


what kind of cluster you're running (ie, plain Kubernetes or Openshift)
what kind of cluster you're running (ie, plain Kubernetes or OpenShift)

|`profile` +
*xref:#_camel_apache_org_v1_TraitProfile[TraitProfile]*
Expand Down Expand Up @@ -2301,6 +2301,13 @@ base Maven specification

additional repositories

|`servers` +
*xref:#_camel_apache_org_v1_Server[[\]Server]*
|


Servers (auth)


|===

Expand Down Expand Up @@ -2346,13 +2353,26 @@ the Maven settings.
|


Deprecated: use CASecrets
The Secret name and key, containing the CA certificate(s) used to connect
to remote Maven repositories.
It can contain X.509 certificates, and PKCS#7 formatted certificate chains.
A JKS formatted keystore is automatically created to store the CA certificate(s),
and configured to be used as a trusted certificate(s) by the Maven commands.
Note that the root CA certificates are also imported into the created keystore.

|`caSecrets` +
*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#secretkeyselector-v1-core[[\]Kubernetes core/v1.SecretKeySelector]*
|


The Secrets name and key, containing the CA certificate(s) used to connect
to remote Maven repositories.
It can contain X.509 certificates, and PKCS#7 formatted certificate chains.
A JKS formatted keystore is automatically created to store the CA certificate(s),
and configured to be used as a trusted certificate(s) by the Maven commands.
Note that the root CA certificates are also imported into the created keystore.

|`extension` +
*xref:#_camel_apache_org_v1_MavenArtifact[[\]MavenArtifact]*
|
Expand Down Expand Up @@ -2457,9 +2477,8 @@ NodeSelector

TopologySpreadConstraints


|`securityContext` +
*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#podsecuritycontext-v1-core[[\]Kubernetes core/v1.PodSecurityContext]*
*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#podsecuritycontext-v1-core[Kubernetes core/v1.PodSecurityContext]*
|


Expand Down Expand Up @@ -2492,6 +2511,16 @@ the specification

|===

[#_camel_apache_org_v1_Properties]
=== Properties(`map[string]string` alias)

*Appears on:*

* <<#_camel_apache_org_v1_Server, Server>>




[#_camel_apache_org_v1_PublishTask]
=== PublishTask

Expand Down Expand Up @@ -2864,6 +2893,58 @@ string
used by the ImageStream


|===

[#_camel_apache_org_v1_Server]
=== Server

*Appears on:*

* <<#_camel_apache_org_v1_MavenBuildSpec, MavenBuildSpec>>



[cols="2,2a",options="header"]
|===
|Field
|Description

|`-` +
encoding/xml.Name
|




|`id` +
string
|




|`username` +
string
|




|`password` +
string
|




|`configuration` +
*xref:#_camel_apache_org_v1_Properties[Properties]*
|





|===

[#_camel_apache_org_v1_SourceSpec]
Expand Down Expand Up @@ -3114,4 +3195,4 @@ Selects a key of a ConfigMap.
Selects a key of a secret.


|===
|===
8 changes: 4 additions & 4 deletions docs/modules/traits/pages/route.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// Start of autogenerated code - DO NOT EDIT! (description)
The Route trait can be used to configure the creation of OpenShift routes for the integration.

The certificate and key contents may be sourced either from the local filesystem or in a Openshift `secret` object.
The certificate and key contents may be sourced either from the local filesystem or in a OpenShift `secret` object.
The user may use the parameters ending in `-secret` (example: `tls-certificate-secret`) to reference a certificate stored in a `secret`.
Parameters ending in `-secret` have higher priorities and in case the same route parameter is set, for example: `tls-key-secret` and `tls-key`,
then `tls-key-secret` is used.
Expand Down Expand Up @@ -107,7 +107,7 @@ Refer to the OpenShift route documentation for additional information.

== Examples

These examples uses *secrets* to store the certificates and keys to be referenced in the integrations. Read Openshift route documentation for detailed information about routes. The https://github.com/apache/camel-k/blob/main/examples/http/PlatformHttpServer.java[PlatformHttpServer.java] is the integration example.
These examples uses *secrets* to store the certificates and keys to be referenced in the integrations. Read OpenShift route documentation for detailed information about routes. The https://github.com/apache/camel-k/blob/main/examples/http/PlatformHttpServer.java[PlatformHttpServer.java] is the integration example.

As a requirement to run these examples, you should have a `secret` with a key and certificate.

Expand Down Expand Up @@ -141,12 +141,12 @@ kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc
[source,console]
kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=reencrypt -t route.tls-destination-ca-certificate-secret=my-combined-certs/tls.crt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443

* To add a *reencrypt* route using a specific certificate from a secret for the route and https://docs.openshift.com/container-platform/4.8/security/certificates/service-serving-certificate.html#add-service-certificate_service-serving-certificate[Openshift service serving certificates] for the integration endpoint. This way the Openshift service serving certificates is set up only in the integration pod. The keys and certificates should be visible in the running integration pod, to achieve this we are using the `--resource` kamel parameter to mount the secret in the integration pod, then we use some camel quarkus parameters to reference these certificate files in the running pod, they start with `-p quarkus.http.ssl.certificate`. This route example trait references a secret named `my-combined-certs` which contains two keys named `tls.key` and `tls.crt`.
* To add a *reencrypt* route using a specific certificate from a secret for the route and https://docs.openshift.com/container-platform/4.8/security/certificates/service-serving-certificate.html#add-service-certificate_service-serving-certificate[OpenShift service serving certificates] for the integration endpoint. This way the OpenShift service serving certificates is set up only in the integration pod. The keys and certificates should be visible in the running integration pod, to achieve this we are using the `--resource` kamel parameter to mount the secret in the integration pod, then we use some camel quarkus parameters to reference these certificate files in the running pod, they start with `-p quarkus.http.ssl.certificate`. This route example trait references a secret named `my-combined-certs` which contains two keys named `tls.key` and `tls.crt`.
+
[source,console]
kamel run --dev PlatformHttpServer.java --resource secret:cert-from-openshift@/etc/ssl/cert-from-openshift -p quarkus.http.ssl.certificate.file=/etc/ssl/cert-from-openshift/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/cert-from-openshift/tls.key -t route.tls-termination=reencrypt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
+
Then you should annotate the integration service to inject the Openshift service serving certificates
Then you should annotate the integration service to inject the OpenShift service serving certificates
+
[source,console]
oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
Expand Down
2 changes: 1 addition & 1 deletion e2e/yaks/openshift/monitoring/alerting.feature
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Feature: Alerts from Camel K are propagated to Openshift Prometheus
Feature: Alerts from Camel K are propagated to OpenShift Prometheus

Background: Prepare Thanos-ruler URL
Given URL: https://thanos-ruler.openshift-user-workload-monitoring:9091
Expand Down
4 changes: 2 additions & 2 deletions helm/camel-k/crds/crd-integration-platform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ spec:
type: object
cluster:
description: what kind of cluster you're running (ie, plain Kubernetes
or Openshift)
or OpenShift)
type: string
configuration:
description: list of configuration properties to be attached to all
Expand Down Expand Up @@ -543,7 +543,7 @@ spec:
type: object
cluster:
description: what kind of cluster you're running (ie, plain Kubernetes
or Openshift)
or OpenShift)
type: string
conditions:
description: which are the conditions met (particularly useful when
Expand Down
2 changes: 1 addition & 1 deletion install/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ endif
# Customizes the samples patches for openshift
#
.platform-openshift-patch:
@sed -i 's/.*profile:.*/ profile: Openshift/' $(SAMPLES)/$(INT_PLATFORM_PATCH).$(YAML)
@sed -i 's/.*profile:.*/ profile: OpenShift/' $(SAMPLES)/$(INT_PLATFORM_PATCH).$(YAML)

#
# Install the integration platform
Expand Down
17 changes: 17 additions & 0 deletions pkg/apis/camel/v1/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,23 @@ type FailureRecovery struct {
AttemptTime metav1.Time `json:"attemptTime"`
}

// TraitProfile represents lists of traits that are enabled for the specific installation/integration
type TraitProfile string

const (
// TraitProfileOpenShift is used by default on OpenShift clusters
TraitProfileOpenShift TraitProfile = "OpenShift"
// TraitProfileKubernetes is used by default on Kubernetes clusters
TraitProfileKubernetes TraitProfile = "Kubernetes"
// TraitProfileKnative is used by default on OpenShift/Kubernetes clusters powered by Knative
TraitProfileKnative TraitProfile = "Knative"
// DefaultTraitProfile is the trait profile used as default when no other profile is set
DefaultTraitProfile = TraitProfileKubernetes
)

// AllTraitProfiles contains all allowed profiles
var AllTraitProfiles = []TraitProfile{TraitProfileKubernetes, TraitProfileKnative, TraitProfileOpenShift}

// A TraitSpec contains the configuration of a trait
type TraitSpec struct {
// TraitConfiguration parameters configuration
Expand Down
25 changes: 16 additions & 9 deletions pkg/apis/camel/v1/common_types_support.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,13 @@ import (
"encoding/json"
"errors"
"fmt"
"strings"
)

func (in *Artifact) String() string {
return in.ID
}

func (in *MavenArtifact) GetDependencyID() string {
switch {
case in.Version == "":
return "mvn:" + in.GroupID + ":" + in.ArtifactID
default:
return "mvn:" + in.GroupID + ":" + in.ArtifactID + ":" + in.Version
}
}

func (in *ConfigurationSpec) String() string {
return fmt.Sprintf("%s=%s", in.Type, in.Value)
}
Expand All @@ -50,6 +42,21 @@ func (in *RuntimeSpec) CapabilityDependencies(capability string) []MavenArtifact
return deps
}

// TraitProfileByName returns the trait profile corresponding to the given name (case insensitive).
func TraitProfileByName(name string) TraitProfile {
for _, p := range AllTraitProfiles {
if strings.EqualFold(name, string(p)) {
return p
}
}
return ""
}

// Equal checks if the profile is equal to the given profile (case insensitive).
func (p TraitProfile) Equal(other TraitProfile) bool {
return strings.EqualFold(string(p), string(other))
}

// MarshalJSON returns m as the JSON encoding of m.
func (m RawMessage) MarshalJSON() ([]byte, error) {
if m == nil {
Expand Down
23 changes: 3 additions & 20 deletions pkg/apis/camel/v1/integrationplatform_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (

// IntegrationPlatformSpec defines the desired state of IntegrationPlatform
type IntegrationPlatformSpec struct {
// what kind of cluster you're running (ie, plain Kubernetes or Openshift)
// what kind of cluster you're running (ie, plain Kubernetes or OpenShift)
Cluster IntegrationPlatformCluster `json:"cluster,omitempty"`
// the profile you wish to use. It will apply certain traits which are required by the specific profile chosen.
// It usually relates the Cluster with the optional definition of special profiles (ie, Knative)
Expand Down Expand Up @@ -95,7 +95,7 @@ type IntegrationPlatformList struct {
type IntegrationPlatformCluster string

const (
// IntegrationPlatformClusterOpenShift is used when targeting a OpenShift cluster
// IntegrationPlatformClusterOpenShift is used when targeting an OpenShift cluster
IntegrationPlatformClusterOpenShift IntegrationPlatformCluster = "OpenShift"
// IntegrationPlatformClusterKubernetes is used when targeting a Kubernetes cluster
IntegrationPlatformClusterKubernetes IntegrationPlatformCluster = "Kubernetes"
Expand All @@ -104,23 +104,6 @@ const (
// AllIntegrationPlatformClusters --
var AllIntegrationPlatformClusters = []IntegrationPlatformCluster{IntegrationPlatformClusterOpenShift, IntegrationPlatformClusterKubernetes}

// TraitProfile represents lists of traits that are enabled for the specific installation/integration
type TraitProfile string

const (
// TraitProfileOpenShift is used by default on OpenShift clusters
TraitProfileOpenShift TraitProfile = "OpenShift"
// TraitProfileKubernetes is used by default on Kubernetes clusters
TraitProfileKubernetes TraitProfile = "Kubernetes"
// TraitProfileKnative is used by default on OpenShift/Kubernetes clusters powered by Knative
TraitProfileKnative TraitProfile = "Knative"
// DefaultTraitProfile is the trait profile used as default when no other profile is set
DefaultTraitProfile = TraitProfileKubernetes
)

// AllTraitProfiles contains all allowed profiles
var AllTraitProfiles = []TraitProfile{TraitProfileKubernetes, TraitProfileKnative, TraitProfileOpenShift}

// IntegrationPlatformBuildSpec contains platform related build information.
// This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
// You can define the build strategy, the image registry to use and the Maven configuration to adopt.
Expand Down Expand Up @@ -176,7 +159,7 @@ const (
IntegrationPlatformBuildPublishStrategyKaniko IntegrationPlatformBuildPublishStrategy = "Kaniko"
// IntegrationPlatformBuildPublishStrategyS2I uses the Source to Images (S2I) feature
// (https://docs.openshift.com/container-platform/4.9/openshift_images/create-images.html#images-create-s2i_create-images)
// provided by an Openshift cluster in order to create and push the images to the registry. It is the default choice on Openshift cluster
// provided by an OpenShift cluster in order to create and push the images to the registry. It is the default choice on OpenShift cluster
IntegrationPlatformBuildPublishStrategyS2I IntegrationPlatformBuildPublishStrategy = "S2I"
// IntegrationPlatformBuildPublishStrategySpectrum uses Spectrum project (https://github.com/container-tools/spectrum)
// in order to push the incremental images to the image repository. It is the default choice on vanilla Kubernetes cluster
Expand Down
Loading