This is an automated email from the ASF dual-hosted git repository.

bvahdat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k-examples.git


The following commit(s) were added to refs/heads/main by this push:
     new aaf5b34  fix 02-serverless-api example to work on camel-k 2.2.0 (#94)
aaf5b34 is described below

commit aaf5b349c472759d0277c8504e6e637a4730b967
Author: Babak Vahdat <bvah...@apache.org>
AuthorDate: Fri Feb 9 15:55:34 2024 +0100

    fix 02-serverless-api example to work on camel-k 2.2.0 (#94)
    
    * fix 02-serverless-api example to work on kamel 2.2.0
    
    * polish
---
 02-serverless-api/readme.didact.md          | 31 +++++++++++++++++++++----
 02-serverless-api/s3.properties             |  6 +++--
 02-serverless-api/test/MinioCustomizer.java | 36 -----------------------------
 02-serverless-api/test/minio.properties     | 14 ++++++-----
 02-serverless-api/test/minio.yaml           |  6 ++---
 02-serverless-api/test/yaks-config.yaml     |  2 +-
 6 files changed, 42 insertions(+), 53 deletions(-)

diff --git a/02-serverless-api/readme.didact.md 
b/02-serverless-api/readme.didact.md
index 5f88f00..e92763f 100644
--- a/02-serverless-api/readme.didact.md
+++ b/02-serverless-api/readme.didact.md
@@ -161,23 +161,44 @@ The file can be edited manually or better using an online 
editor, such as [Apicu
 The endpoints defined in the API can be implemented in a Camel K integration 
using a `direct:<operationId>` endpoint.
 This has been implemented in the 
[API.java](didact://?commandId=vscode.open&projectFilePath=02-serverless-api/API.java
 "Opens the integration file"){.didact} file.
 
-To run the integration, you need to link it to the proper configuration, that 
depends on what configuration you've chosen.
+To run the integration, you need to link it to the proper configuration, that 
depends on what configuration you've chosen (either S3 or Minio). Additionally 
you need to expose the OpenAPI spec. as ConfigMap:
+
+```
+kubectl create configmap my-openapi --from-file=openapi.yaml
+```
 
 ### 4.1 [Alternative 1] Using the test Minio server
 
-As alternative, to connect the integration to the **test Minio server** 
deployed before using the 
[test/MinioCustomizer.java](didact://?commandId=vscode.open&projectFilePath=02-serverless-api/test/MinioCustomizer.java
 "Opens the customizer file"){.didact} class:
+As alternative, to connect the integration to the **test Minio server** 
deployed before:
+
+```
+kamel run API.java --open-api configmap:my-openapi --property 
file:test/minio.properties --dev
+```
+([^ 
execute](didact://?commandId=vscode.didact.sendNamedTerminalAString&text=camelTerm$$kamel%20run%20API.java%20--property%20file%3Atest%2Fminio.properties&completion=Integration%20run.
 "Opens a new terminal and sends the command above"){.didact})
+
+In case you run on Minikube then you can't use `http://minio:9000` as your S3 
endpoint in `minio.properties` because `EXTERNAL-IP` would be `<pending>` since 
Minikube doesn't support LoadBalancer services, so the service will never get 
an external IP. For this to work you can run Minikube service to get the URL 
for connection to use:
+
+```
+$> minikube service -n camel-api minio
+|-----------|-------|-------------|-----------------------------|
+| NAMESPACE | NAME  | TARGET PORT |             URL             |
+|-----------|-------|-------------|-----------------------------|
+| camel-api | minio |        9000 | http://192.168.105.26:32393 |
+|-----------|-------|-------------|-----------------------------|
+```
+
+Given the example above then use the following configuration in 
`minio.properties`:
 
 ```
-kamel run API.java --open-api file:openapi.yaml --source 
test/MinioCustomizer.java --property file:test/minio.properties
+camel.component.aws2-s3.uri-endpoint-override=http://192.168.105.26:32393
 ```
-([^ 
execute](didact://?commandId=vscode.didact.sendNamedTerminalAString&text=camelTerm$$kamel%20run%20API.java%20--source%20test%2FMinioCustomizer.java%20--property%20file%3Atest%2Fminio.properties&completion=Integration%20run.
 "Opens a new terminal and sends the command above"){.didact})
 
 ### 4.2 [Alternative 2] Using the S3 service
 
 To connect the integration to the **AWS S3 service**:
 
 ```
-kamel run API.java --open-api file:openapi.yaml --property file:s3.properties
+kamel run API.java --open-api configmap:my-openapi --property 
file:s3.properties --dev
 ```
 ([^ 
execute](didact://?commandId=vscode.didact.sendNamedTerminalAString&text=camelTerm$$kamel%20run%20API.java%20--property%20file%3As3.properties&completion=Integration%20run.
 "Opens a new terminal and sends the command above"){.didact})
 
diff --git a/02-serverless-api/s3.properties b/02-serverless-api/s3.properties
index 14ce141..7d8f9e0 100644
--- a/02-serverless-api/s3.properties
+++ b/02-serverless-api/s3.properties
@@ -5,11 +5,13 @@
 # Bucket (referenced in the routes)
 api.bucket=camel-k
 # Region of the buket
-camel.component.aws2-s3.region=EU_WEST_1
+camel.component.aws2-s3.region=eu-west-1
 # AWS Access Key ID
 camel.component.aws2-s3.access-key=<put-your-aws-access-key-id-here>
 # AWS Access Key Secret
 camel.component.aws2-s3.secret-key=<put-your-aws-access-key-secret-here>
+# Autocreate the bucket if it doesn't exist
+camel.component.aws2-s3.autoCreateBucket=true
 
 # General configuration
-camel.context.rest-configuration.api-context-path=/openapi.json
+camel.rest.api-context-path=/openapi.json
\ No newline at end of file
diff --git a/02-serverless-api/test/MinioCustomizer.java 
b/02-serverless-api/test/MinioCustomizer.java
deleted file mode 100644
index ff59716..0000000
--- a/02-serverless-api/test/MinioCustomizer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// camel-k: language=java
-package test;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.PropertyInject;
-
-import com.amazonaws.auth.AWSCredentials;
-import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.client.builder.AwsClientBuilder;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-
-public class MinioCustomizer {
-
-    @BindToRegistry
-    public static AmazonS3 minioClient(
-            @PropertyInject("minio.endpoint") String endpointAddress,
-            @PropertyInject("minio.access-key") String accessKey,
-            @PropertyInject("minio.secret-key") String secretKey) {
-
-        AwsClientBuilder.EndpointConfiguration endpoint = new 
AwsClientBuilder.EndpointConfiguration(endpointAddress, "US_EAST_1");
-        AWSCredentials credentials = new BasicAWSCredentials(accessKey, 
secretKey);
-        AWSCredentialsProvider credentialsProvider = new 
AWSStaticCredentialsProvider(credentials);
-
-        return AmazonS3ClientBuilder
-            .standard()
-            .withEndpointConfiguration(endpoint)
-            .withCredentials(credentialsProvider)
-            .withPathStyleAccessEnabled(true)
-            .build();
-
-    }
-
-}
diff --git a/02-serverless-api/test/minio.properties 
b/02-serverless-api/test/minio.properties
index 9d15b40..6bdde81 100644
--- a/02-serverless-api/test/minio.properties
+++ b/02-serverless-api/test/minio.properties
@@ -5,11 +5,13 @@
 # Bucket (referenced in the routes)
 api.bucket=camel-k
 
-# Minio information injected into the MinioCustomizer
-minio.endpoint=http://minio:9000
-minio.access-key=minio
-minio.secret-key=minio123
-
+# Camel AWS2 S3
+camel.component.aws2-s3.region=eu-west-1
+camel.component.aws2-s3.access-key=minio
+camel.component.aws2-s3.secret-key=minio123
+camel.component.aws2-s3.uri-endpoint-override=http://192.168.105.26:32393
+camel.component.aws2-s3.override-endpoint=true
+camel.component.aws2-s3.autoCreateBucket=true
 
 # General configuration
-camel.context.rest-configuration.api-context-path=/openapi.json
+camel.rest.api-context-path=/openapi.json
\ No newline at end of file
diff --git a/02-serverless-api/test/minio.yaml 
b/02-serverless-api/test/minio.yaml
index cd5f52d..eecfcad 100644
--- a/02-serverless-api/test/minio.yaml
+++ b/02-serverless-api/test/minio.yaml
@@ -20,16 +20,16 @@ spec:
       containers:
       - name: minio
         volumeMounts:
-        - name: data 
+        - name: data
           mountPath: "/data"
         image: minio/minio
         args:
         - server
         - /data
         env:
-        - name: MINIO_ACCESS_KEY
+        - name: MINIO_ROOT_USER
           value: minio
-        - name: MINIO_SECRET_KEY
+        - name: MINIO_ROOT_PASSWORD
           value: minio123
         ports:
         - containerPort: 9000
diff --git a/02-serverless-api/test/yaks-config.yaml 
b/02-serverless-api/test/yaks-config.yaml
index f9ad458..514cfe4 100644
--- a/02-serverless-api/test/yaks-config.yaml
+++ b/02-serverless-api/test/yaks-config.yaml
@@ -11,4 +11,4 @@ pre:
   run: |
     kamel install -w -n ${YAKS_NAMESPACE}
 
-    kamel run API.java --source test/MinioCustomizer.java --property 
file:test/minio.properties -w -n ${YAKS_NAMESPACE}
+    kamel run API.java --property file:test/minio.properties -w -n 
${YAKS_NAMESPACE}

Reply via email to