1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/knative-docs

Клонировать/Скачать
README.md 7.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 27.05.2025 06:04 d330922

Мы собираемся создать следующую логическую конфигурацию. Мы создаем PingSource, который подаёт события в Broker, затем создаем Filter, который соединяет эти события в Sequence из 3 шагов. Затем мы подаём новые события в конце Sequence обратно в Broker и создаем еще один Trigger, который затем отображает эти события.

Предварительные требования

  • Knative Serving
  • 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

Создание Knative Services

Измените 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, указывающий на Broker

Это создаст 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

Создайте Service и Trigger для отображения событий, созданных Sequence

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/knative-docs.git
git@api.gitlife.ru:oschina-mirror/knative-docs.git
oschina-mirror
knative-docs
knative-docs
master