Мы собираемся создать следующую логическую конфигурацию. Мы создаем PingSource
, который подаёт события в Broker
, затем создаем Filter
, который соединяет эти события в Sequence
из 3 шагов. Затем мы подаём новые события в конце Sequence
обратно в Broker
и создаем еще один Trigger
, который затем отображает эти события.
InMemoryChannel
ЗАМЕЧАНИЕ: Примеры используют пространство имен default
.
Если вы хотите использовать другой тип Channel
, вам нужно будет изменить Sequence.Spec.ChannelTemplate
, чтобы создать соответствующие ресурсы Channel
.
Функции, используемые в этих примерах, находятся в https://github.com/knative/eventing-contrib/blob/master/cmd/appender/main.go.
Broker
Чтобы создать тип Broker
по умолчанию для кластера, выполните следующую команду:
kubectl create -f - <<EOF
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
name: default
EOF
Измените default
ниже, чтобы создать шаги в пространстве имен, где вы настроили свой Broker
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: first
spec:
template:
spec:
containers:
- image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/appender
env:
- name: MESSAGE
value: " - Handled by 0"
```---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: second
spec:
template:
spec:
containers:
- image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/appender
env:
- name: MESSAGE
value: " - Обработано 1"
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: third
spec:
template:
spec:
containers:
- image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/appender
env:
- name: MESSAGE
value: " - Обработано 2"---
```shell
kubectl -n default create -f ./steps.yaml
Sequence
Файл sequence.yaml
содержит спецификации для создания Sequence
. Если вы используете другой тип Channel
, вам нужно изменить spec.channelTemplate
, чтобы указать на ваш желаемый Channel
. Также измените spec.reply.name
, чтобы он указывал на ваш Broker
.
apiVersion: flows.knative.dev/v1
kind: Sequence
metadata:
name: sequence
spec:
channelTemplate:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
steps:
- ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: first
- ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: second
- ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: third
reply:
ref:
kind: Broker
apiVersion: eventing.knative.dev/v1
name: default
Измените default
ниже, чтобы создать Sequence
в Namespace, где вы настроили ваш Broker
.
kubectl -n default create -f ./sequence.yaml
Это создаст PingSource, который будет отправлять CloudEvent с данными {"message": "Hello world!"} каждые tworаза в минуту.
apiVersion: sources.knative.dev/v1beta1
kind: PingSource
metadata:
name: ping-source
spec:
schedule: "*/2 * * * *"
jsonData: '{"message": "Hello world!"}'
sink:
ref:
apiVersion: eventing.knative.dev/v1
kind: Broker
name: default
Здесь, если вы используете другой тип Channel, вам нужно изменить spec.channelTemplate
, чтобы он указывал на ваш желаемый Channel. Также измените spec.reply.name
, чтобы он указывал на ваш Broker
.
Измените default
ниже, чтобы создать Sequence
в Namespace, где вы настроили ваш Broker
.
kubectl -n default create -f ./ping-source.yaml
```### Создайте Trigger, указывающий на Sequence
```yaml
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: sequence-trigger
spec:
broker: default
filter:
attributes:
type: dev.knative.sources.ping
subscriber:
ref:
apiVersion: flows.knative.dev/v1
kind: Sequence
name: sequence
Измените default
ниже, чтобы создать Sequence
в Namespace, где вы настроили ваш Broker
.
kubectl -n default create -f ./trigger.yaml
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: sequence-display
spec:
template:
spec:
containers:
- image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/appender
---
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: display-trigger
spec:
broker: default
filter:
attributes:
type: samples.http.mod3
subscriber:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: sequence-display
---
Измените default
ниже, чтобы создать Service
и Trigger
в Namespace, где вы настроили ваш Broker
.
kubectl -n default create -f ./display-trigger.yaml
Теперь вы можете увидеть окончательный вывод, проверив журналы подов event-display
.
kubectl -n default get pods
Затем проверьте журналы для пода event-display
:shell kubectl -n default logs -l serving.knative.dev/service=sequence-display -c user-container --tail=-1 ☁️ cloudevents.Event Validation: валидно Контекстные атрибуты, specversion: 1.0 type: samples.http.mod3 source: /apis/v1/namespaces/default/pingsources/ping-source id: 159bba01-054a-4ae7-b7be-d4e7c5f773d2 time: 2020-03-03T14:56:00.000652027Z datacontenttype: application/json Расширения, knativearrivaltime: 2020-03-03T14:56:00.018390608Z knativehistory: default-kne-trigger-kn-channel.default.svc.cluster.local; sequence-kn-sequence-0-kn-channel.default.svc.cluster.local; sequence-kn-sequence-1-kn-channel.default.svc.cluster.local; sequence-kn-sequence-2-kn-channel.default.svc.cluster.local; default-kne-trigger-kn-channel.default.svc.cluster.local traceparent: 00-e893412106ff417a90a5695e53ffd9cc-5829ae45a14ed462-00 Данные, { "id": 0, "message": "Hello world! - Handled by 0 - Handled by 1 - Handled by 2" }
И вы можете видеть, что исходное сообщение PingSource {"Привет, мир!"}
было
добавлено к нему каждым из шагов в последовательности.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )