knative-eventing-ContainerSource


 文档    https://knative.dev/docs/install/yaml-install/eventing/install-eventing-with-yaml/#prerequisites

 部署eventing

root@master02:/opt/knative-in-practise/knative-deploy-v1.2/eventing# kubectl apply -f eventing-crds.yaml

root@master02:/opt/knative-in-practise/knative-deploy-v1.2/eventing# kubectl apply -f eventing-core.yaml

root@master03:~# kubectl get po -nknative-eventing
knative-eventing       eventing-controller-85b648d8f8-tww8l              1/1     Running            0          8m13s
knative-eventing       eventing-webhook-7849bcf55c-tbvzt                 1/1     Running            0          7m33s

kn service create event-display --image ikubernetes/event_display --port 8080 --scale-min 1   #创建event-disolay

default                event-display-00001-deployment-5754688b84-6hm4n   3/3     Running            0          51m
root@client /#   测试
curl -v "http://event-display.default.svc.cluster.local" \ -X POST \ -H "Ce-Id: 0001" \ -H "Ce-Specversion: 1.0" \ -H "Ce-Type: com.magedu.file.image" \ -H "Ce-Source: Curl" \ -H "Content-Type: application/json" \ -d '{"msg":"An Event to kafkaChnel"}'

< HTTP/1.1 200 OK

Install a default Channel (messaging) layer

Install a Broker layer

结合

In-Memory (standalone)     in-memory-channel.yaml

MT-Channel-based             mt-channel-broker.yaml

root@master02:/opt/knative-in-practise/knative-deploy-v1.2/eventing# cat in-memory-channel.yaml |grep gcr
          image: gcr.io/knative-releases/knative.dev/eventing/cmd/in_memory/channel_controller:latest
              value: gcr.io/knative-releases/knative.dev/eventing/cmd/in_memory/channel_dispatcher:latest
          image: gcr.io/knative-releases/knative.dev/eventing/cmd/in_memory/channel_dispatcher:latest
root@master02:/opt/knative-in-practise/knative-deploy-v1.2/eventing# cat mt-channel-broker.yaml |grep gcr
          image: gcr.io/knative-releases/knative.dev/eventing/cmd/broker/filter:latest
          image: gcr.io/knative-releases/knative.dev/eventing/cmd/broker/ingress:latest
          image: gcr.io/knative-releases/knative.dev/eventing/cmd/mtchannel_broker:latest
knative-eventing       imc-controller                   1/1     1            1           2m35s
knative-eventing       imc-dispatcher                   1/1     1            1           2m35s
knative-eventing       mt-broker-controller             1/1     1            1           2m22s
knative-eventing       mt-broker-filter                 1/1     1            1           2m22s
knative-eventing       mt-broker-ingress                1/1     1            1           2m22s
root@master01:~# docker images |grep gcr|grep in_memory
gcr.io/knative-releases/knative.dev/eventing/cmd/in_memory/channel_controller   latest    3ead485a4bda   4 weeks ago     53.1MB
gcr.io/knative-releases/knative.dev/eventing/cmd/in_memory/channel_dispatcher   latest    037a839b523c   4 weeks ago     53.2MB
root@master01:~# docker images |grep gcr|grep broker
gcr.io/knative-releases/knative.dev/eventing/cmd/broker/ingress                 latest    342566a0f448   4 weeks ago     51.1MB
gcr.io/knative-releases/knative.dev/eventing/cmd/broker/filter                  latest    1ed97edaf933   4 weeks ago     51MB
gcr.io/knative-releases/knative.dev/eventing/cmd/mtchannel_broker               latest    e83894240df2   4 weeks ago     52.5MB
root@master01:~# kubectl api-resources --api-group=sources.knative.dev
NAME               SHORTNAMES   APIVERSION               NAMESPACED   KIND
apiserversources                sources.knative.dev/v1   true         ApiServerSource
containersources                sources.knative.dev/v1   true         ContainerSource
pingsources                     sources.knative.dev/v1   true         PingSource
sinkbindings                    sources.knative.dev/v1   true         SinkBinding
root@master01:~# kubectl explain pingsources.spec
root@master01:~# kubectl logs -f event-display-00001-deployment-5754688b84-6hm4n -c user-container  #查看事件
??  cloudevents.Event
Context Attributes,
  specversion: 1.0
  type: com.magedu.file.image
  source: Curl
  id: 0001
  datacontenttype: application/json
Data,
  {
    "msg": "An Event to kafkaChnel"
  }
??  cloudevents.Event
Context Attributes,
  specversion: 1.0
  type: com.magedu.file.image
  source: Curl
  id: 0001
  datacontenttype: application/json
Data,
  {
    "msg": "An Event to kafkaChnel"
  }
...
root@master02:~# kn source ping create pingsource01 --schedule "* * * * *" --data '{"message": "Event from Ping}' --sink ksvc:event-display
Ping source 'pingsource01' created in namespace 'default'.
root@master02:~# kn source ping list
NAME           SCHEDULE    SINK                 AGE   CONDITIONS   READY   REASON
pingsource01   * * * * *   ksvc:event-display   21s   3 OK / 3     True 
root@master02:~# kubectl get pingsources pingsource01 -o yaml  #每分钟一次
apiVersion: sources.knative.dev/v1
kind: PingSource
metadata:
  annotations:
    sources.knative.dev/creator: admin
    sources.knative.dev/lastModifier: admin
  creationTimestamp: "2022-02-28T13:04:52Z"
  generation: 1
  name: pingsource01
  namespace: default
  resourceVersion: "127687"
  uid: c5042748-c500-418f-992e-ce73206fea58
spec:
  data: '{"message": "Event from Ping}'
  schedule: '* * * * *'
  sink:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: event-display
      namespace: default
status:
  ceAttributes:
  - source: /apis/v1/namespaces/default/pingsources/pingsource01
    type: dev.knative.sources.ping
  conditions:
  - lastTransitionTime: "2022-02-28T13:04:54Z"
    status: "True"
    type: Deployed
  - lastTransitionTime: "2022-02-28T13:04:54Z"
    status: "True"
    type: Ready
  - lastTransitionTime: "2022-02-28T13:04:53Z"
    status: "True"
    type: SinkProvided
  observedGeneration: 1
  sinkUri: http://event-display.default.svc.cluster.local
root@master02:~# kn source ping describe pingsource01
Name:         pingsource01
Namespace:    default
Annotations:  sources.knative.dev/creator=admin, sources.knative.dev/lastModifier=admin
Age:          6m
Schedule:     * * * * *
Data:         {"message": "Event from Ping}

Sink:        
  Name:      event-display
  Resource:  Service (serving.knative.dev/v1)

Conditions:  
  OK TYPE            AGE REASON
  ++ Ready            6m 
  ++ Deployed         6m 
  ++ SinkProvided     6m 
root@master02:~# kn source ping delete pingsource01
Ping source 'pingsource01' deleted in namespace 'default'

部署03事件源到default名称空间下

root@master02:/opt/knative-in-practise/eventing/sources/03-containersource-to-knative-service# kubectl apply -f .
root@master02:/opt/knative-in-practise/eventing/sources/03-containersource-to-knative-service# cat 01-namespace.yaml 
kind: Namespace
apiVersion: v1
metadata:
  name: event-demo
---
root@master02:/opt/knative-in-practise/eventing/sources/03-containersource-to-knative-service# cat 03-containersource-to-event-display.yaml 
apiVersion: sources.knative.dev/v1
kind: ContainerSource
metadata:
  name: containersource-heartbeat
  #namespace: event-demo  #部署到当前名称空间下,每秒一个时间
spec:
  template:
    spec:
      containers:
        - image: ikubernetes/containersource-heartbeats:latest
          name: heartbeats
          env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
  sink:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: event-display
root@master02:/opt/knative-in-practise/eventing/sources/03-containersource-to-knative-service# cat 02-kservice-event-display.yaml 
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: event-display
  namespace: event-demo
spec:
  template:
    spec:
      containers:
        - image: ikubernetes/event_display
          ports:
            - containerPort: 8080
event-demo             containersource-heartbeat-deployment   1/1     1            1           8m35s  #查看
event-demo             event-display-00001-deployment         1/1     1            1           79s
root@master01:~# kn source container list -A
NAMESPACE    NAME                        IMAGE                                           SINK                 AGE   CONDITIONS   READY   REASON
event-demo   containersource-heartbeat   ikubernetes/containersource-heartbeats:latest   ksvc:event-display   25m   3 OK / 3     True    

root@master01:~# kn source container describe  containersource-heartbeat  -nevent-demo
Name:               containersource-heartbeat
Namespace:          event-demo
Annotations:        sources.knative.dev/creator=admin, sources.knative.dev/lastModifier=admin
Age:                25m
Container:          
  Image:            ikubernetes/containersource-heartbeats:latest
  Env:              
    POD_NAME:       [ref]
    POD_NAMESPACE:  [ref]

Sink:        
  Name:      event-display
  Resource:  Service (serving.knative.dev/v1)


Conditions:  
  OK TYPE                   AGE REASON
  ++ Ready                  17m 
  ++ ReceiveAdapterReady    17m 
  ++ SinkBindingReady       17m 


root@master02:/opt/knative-in-practise/eventing/sources/03-containersource-to-knative-service# kubectl get po
NAME                                                    READY   STATUS             RESTARTS   AGE
containersource-heartbeat-deployment-77589687bb-dwtkk   2/2     Running            0          4m42s 创建后
event-display-00001-deployment-5754688b84-6hm4n         3/3     Running            3          23h   查看每5秒一次


root@master01:~# kubectl logs -f event-display-00001-deployment-5754688b84-6hm4n -c user-container

?? cloudevents.Event Context Attributes, specversion:
1.0 type: dev.knative.eventing.samples.heartbeat source: https://knative.dev/eventing-contrib/cmd/heartbeats/#default/containersource-heartbeat-deployment-77589687bb-dwtkk id: d4d8f396-d3cf-486e-a52c-4c667493834d time: 2022-02-28T14:21:11.836136403Z datacontenttype: application/json Extensions, beats: true heart: yes the: 42 Data, { "id": 20, "label": "" } ?? cloudevents.Event Context Attributes, specversion: 1.0 type: dev.knative.eventing.samples.heartbeat source: https://knative.dev/eventing-contrib/cmd/heartbeats/#default/containersource-heartbeat-deployment-77589687bb-dwtkk id: fb35202f-aed5-4475-99d8-0095eebae138 time: 2022-02-28T14:21:16.837356497Z datacontenttype: application/json Extensions, beats: true heart: yes the: 42 Data, { "id": 21, "label": "" }
root@master01:~# root@master01:~# kn source container  list
vent-display   21m   3 OK / 3     Trueroot@master01:~#: command not found
root@master01:~# NAME                        IMAGE                                           SINK                 AGE   CONDITIONS   READY   REASON
NAME: command not found
root@master01:~# containersource-heartbeat   ikubernetes/containersource-heartbeats:latest   ksvc:event-display   21m   3 OK / 3     True^C
root@master01:~# kn source container  list
NAME                        IMAGE                                           SINK                 AGE   CONDITIONS   READY   REASON
containersource-heartbeat   ikubernetes/containersource-heartbeats:latest   ksvc:event-display   21m   3 OK / 3     True    
root@master01:~# kn source container  delete containersource-heartbeat
ContainerSourcd 'containersource-heartbeat' deleted in namespace 'default'.

apiserversource

root@master02:/opt/knative-in-practise/eventing/sources/04-apiserversource-to-knative-service# cat 01-namespace.yaml 
kind: Namespace
apiVersion: v1
metadata:
  name: event-demo
---
root@master02:/opt/knative-in-practise/eventing/sources/04-apiserversource-to-knative-service# cat 02-kservice-event-display.yaml 
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: event-display
  namespace: event-demo
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/min-scale: "1"
    spec:
      containers:
        - image: ikubernetes/event_display
          ports:
            - containerPort: 8080
root@master02:/opt/knative-in-practise/eventing/sources/04-apiserversource-to-knative-service# cat 03-serviceaccount-and-rbac.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: pod-watcher
  namespace: event-demo
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: event-demo
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: pod-reader
  namespace: event-demo
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pod-reader
subjects:
- kind: ServiceAccount
  name: pod-watcher
  namespace: event-demo
root@master02:/opt/knative-in-practise/eventing/sources/04-apiserversource-to-knative-service# cat 04-ApiServerSource-to-knative-service.yaml 
apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
  name: pods-event
  namespace: event-demo
spec:
  serviceAccountName: pod-watcher
  mode: Reference
  resources:
  - apiVersion: v1
    kind: Pod
    #selector:
    #  matchLabels:
    #    app: demoapp
  sink:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: event-display

root@master02:/opt/knative-in-practise/eventing/sources/04-apiserversource-to-knative-service# kubectl apply -f .

root@master02:/opt/knative-in-practise/eventing/sources/04-apiserversource-to-knative-service# kubectl get po -nevent-demo
NAME                                                              READY   STATUS              RESTARTS   AGEevent-display-00001-deployment-dccb48cd6-zclkq                    2/2     Running             0          13s
apiserversource-pods-event-03c9ab61-82ca-4836-b283-0bd4179b84xc   1/1     Running            0          52s
root@master01:~# kubectl logs -f event-display-00001-deployment-dccb48cd6-zclkq   -c user-container -nevent-demo
??  cloudevents.Event
Context Attributes,
  specversion: 1.0
  type: dev.knative.apiserver.ref.update
  source: https://10.100.0.1:443
  subject: /apis/v1/namespaces/event-demo/pods/apiserversource-pods-event-03c9ab61-82ca-4836-b283-0bd4179x2tcn
  id: 7a1700c7-6188-480e-bf03-548193940a26
  time: 2022-02-28T15:00:05.155810224Z
  datacontenttype: application/json
Extensions,
  kind: Pod
  name: apiserversource-pods-event-03c9ab61-82ca-4836-b283-0bd4179x2tcn
  namespace: event-demo
Data,
  {
    "kind": "Pod",
    "namespace": "event-demo",
    "name": "apiserversource-pods-event-03c9ab61-82ca-4836-b283-0bd4179x2tcn",
    "apiVersion": "v1"
  }

kubectl create deploy demoapp --image=ikubernetes/demoapp -nevent-demo 

??  cloudevents.Event  生成事件
Context Attributes,
  specversion: 1.0
  type: dev.knative.apiserver.ref.delete
  source: https://10.100.0.1:443
  subject: /apis/v1/namespaces/event-demo/pods/demoapp-745cfdd5c8-vhvrt
  id: aa2b206a-9a65-45f1-a2bb-56a7c0286db1
  time: 2022-02-28T15:09:41.642917393Z
  datacontenttype: application/json
Extensions,
  kind: Pod
  name: demoapp-745cfdd5c8-vhvrt
  namespace: event-demo
Data,
  {
    "kind": "Pod",
    "namespace": "event-demo",
    "name": "demoapp-745cfdd5c8-vhvrt",
    "apiVersion": "v1"
  }

相关