This commit is contained in:
2024-02-20 17:15:27 +08:00
committed by huty
parent 6706e1a633
commit 34158042ad
1529 changed files with 177765 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
package io.kubeless;
import io.kubeless.Event;
import io.kubeless.Context;
public class Kiamol {
public String hello(io.kubeless.Event event, io.kubeless.Context context) {
return "Hello from chapter 21!";
}
}

View File

@@ -0,0 +1,20 @@
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: todo-api
labels:
kiamol: ch21
spec:
rules:
- host: api.todo.kiamol.local
http:
paths:
- path: /todos
backend:
serviceName: todo-api
servicePort: 8080
# this spec is equivalent to running
# kubeless trigger http create todo-api --function-name todo-api --path todos --hostname api.todo.kiamol.local
# but that fails with Kubeless 1.0.7 running on Kubernetes 1.18 - see
# https://github.com/kubeless/kubeless/issues/1130

View File

@@ -0,0 +1,11 @@
{
"name": "todo-api",
"version": "0.1.0",
"main": "server.js",
"author": "kiamol",
"dependencies": {
"nats" : "1.4.9",
"uuid" : "8.2.0"
}
}

View File

@@ -0,0 +1,21 @@
const NATS = require('nats')
const nc = NATS.connect({url: 'nats://message-queue:4222', json: true})
const { v4: uuidv4 } = require('uuid');
function handler(event, context) {
console.log('** todo-api handler called');
var newItemEvent = {
Subject: "events.todo.newitem",
Item: {
Item: event.data,
DateAdded: new Date().toISOString()
},
CorrelationId: uuidv4()
}
nc.publish('events.todo.newitem', newItemEvent)
console.log(`** New item published, event ID: ${newItemEvent.CorrelationId}`);
}
module.exports = { handler }

View File

@@ -0,0 +1,3 @@
def handler(event, context):
print(f"AUDIT @ {event['data']['Item']['DateAdded']}: {event['data']['Item']['Item']}")

View File

@@ -0,0 +1,15 @@
apiVersion: kubeless.io/v1beta1
kind: CronJobTrigger
metadata:
finalizers:
- kubeless.io/cronjobtrigger
labels:
created-by: kubeless
name: todo-mutating-handler
namespace: default
spec:
function-name: todo-mutating-handler
schedule: '*/1 * * * *'
# finalizers help with clean-up tasks - see
# https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#finalizers

View File

@@ -0,0 +1,28 @@
apiVersion: kubeless.io/v1beta1
kind: Function
metadata:
name: todo-mutating-handler
namespace: default
label:
created-by: kubeless
spec:
runtime: php7.3
timeout: "10"
handler: todo-mutating-handler.mutate
deps: ""
function-content-type: text
function: |
<?php
function mutate($event, $context) {
fwrite(STDOUT, '* Mutating handler called.');
$conn = pg_connect('host=todo-db dbname=todo user=postgres password=kiamol-2*2*');
if (!$conn) {
echo 'Connection failed';
exit;
}
$sql = 'UPDATE "public"."ToDos" SET "Item"=\'Leave a nice review for KIAMOL :)\'';
$result = pg_query($conn, $sql);
fwrite(STDOUT, '* Mutation complete.');
return "* Mutated...";
}