Chapter 15. Using ContainerSource with Service Mesh
You can use ContainerSource with Service Mesh.
15.1. Configuring ContainerSource with Service Mesh Copy linkLink copied to clipboard!
This procedure describes how to configure container source with Service Mesh.
Prerequisites
- You have set up integration of Service Mesh and Serverless.
Procedure
Create a
Servicein a namespace that is member of theServiceMeshMemberRoll:Example
event-display-service.yamlconfiguration fileapiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: <namespace>1 spec: template: metadata: annotations: sidecar.istio.io/inject: "true"2 sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: containers: - image: quay.io/openshift-knative/knative-eventing-sources-event-display:latest-
namespace: <namespace>: A namespace that is a member of theServiceMeshMemberRoll. -
sidecar.istio.io/inject: "true": This annotation injects Service Mesh sidecars into the Knative service pods.
-
Apply the
Serviceresource by running the following command:$ oc apply -f event-display-service.yamlCreate a
ContainerSourceobject in a namespace that is member of theServiceMeshMemberRolland sink set to theevent-display:The following example displayes
test-heartbeats-containersource.yamlconfiguration file:apiVersion: sources.knative.dev/v1 kind: ContainerSource metadata: name: test-heartbeats namespace: <namespace> spec: template: metadata: annotations: sidecar.istio.io/inject": "true" sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: containers: # This corresponds to a heartbeats image URI that you have built and published - image: quay.io/openshift-knative/heartbeats name: heartbeats args: - --period=1s env: - name: POD_NAME value: "example-pod" - name: POD_NAMESPACE value: "event-test" sink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: event-display-service-
namespace: <namespace>: A namespace that is part of theServiceMeshMemberRoll. -
metadata: These annotations enable Service Mesh integration with theContainerSourceobject.
-
Apply the
ContainerSourceresource by running the following command:$ oc apply -f test-heartbeats-containersource.yamlOptional: Verify that events reach the Knative event sink by checking the message dumper function logs:
You get an output similar to the following example command:
$ oc logs $(oc get pod -o name | grep event-display) -c user-containerYou get an output similar to the following example:
☁️ cloudevents.Event Validation: valid Context Attributes, specversion: 1.0 type: dev.knative.eventing.samples.heartbeat source: https://knative.dev/eventing-contrib/cmd/heartbeats/#event-test/mypod id: 2b72d7bf-c38f-4a98-a433-608fbcdd2596 time: 2019-10-18T15:23:20.809775386Z contenttype: application/json Extensions, beats: true heart: yes the: 42 Data, { "id": 1, "label": "" }