# Specify which Kong image to run x-kong-image: &kong-image image: ${KONG_IMAGE_REGISTRY}/${KONG_IMAGE_NAME}:${KONG_IMAGE_TAG} # Kong license configuration x-kong-license: &kong-license KONG_LICENSE_DATA: ${KONG_LICENSE_DATA:?err} # Common config values x-kong-common-config: &kong-common-config KONG_PREFIX: "/tmp/kong" KONG_VITALS: "off" KONG_LOG_LEVEL: "notice" KONG_PLUGINS: "bundled" # Common configuration for Kong containers x-kong-container-common: &kong-container-common <<: *kong-image healthcheck: test: ["CMD", "kong", "health"] interval: 3s timeout: 3s retries: 10 start_period: 3s restart: on-failure tmpfs: - /tmp networks: kong-net: driver: bridge services: kong-data-plane: <<: *kong-container-common deploy: replicas: 1 mem_limit: 2g cpus: 4 container_name: ${KONG_DP_CONTAINER_NAME} networks: - kong-net volumes: - ./certs/:/etc/secrets/kong-cluster/ user: "${KONG_USER:-kong}" ports: - "8000:8000" - "8100:8100" environment: <<: [ *kong-license, *kong-common-config ] KONG_ROLE: "data_plane" KONG_PROXY_LISTEN: "0.0.0.0:8000" KONG_DATABASE: "off" KONG_CLUSTER_MTLS: "pki" KONG_CLUSTER_CONTROL_PLANE: "${CONTROL_PLANE_GROUP_ENDPOINT}:443" KONG_CLUSTER_SERVER_NAME: "${CONTROL_PLANE_GROUP_ENDPOINT}" KONG_CLUSTER_TELEMETRY_ENDPOINT: "${TELEMETRY_ENDPOINT}:443" KONG_CLUSTER_TELEMETRY_SERVER_NAME: "${TELEMETRY_ENDPOINT}" KONG_LUA_SSL_TRUSTED_CERTIFICATE: "system" KONG_KONNECT_MODE: "on" KONG_CLUSTER_CERT: "/etc/secrets/kong-cluster/tls.crt" KONG_CLUSTER_CERT_KEY: "/etc/secrets/kong-cluster/tls.key" KONG_STATUS_LISTEN: "0.0.0.0:8100" KONG_PLUGINS: bundled,chaos-experiments KONG_TRACING_INSTRUMENTATIONS: "all" KONG_TRACING_SAMPLING_RATE: "1.0" kongair-routes: container_name: ${KONG_MS_CONTAINER_NAME} hostname: routes.kongair restart: on-failure image: ${KONG_MS_IMAGE_REGISTRY}/${KONG_MS_IMAGE_NAME}:${KONG_MS_IMAGE_TAG} networks: - kong-net ports: - "5053:8080" fluentbit: image: fluent/fluent-bit:3.1.2 container_name: fluentbit command: - --config=/fluent-bit/etc/fluent-bit.yaml networks: - kong-net volumes: - ./fluent-bit/fluent-bit.yaml:/fluent-bit/etc/fluent-bit.yaml otel-collector: image: otel/opentelemetry-collector-contrib:0.101.0 container_name: otel-collector networks: - kong-net volumes: - ./otel-collector/config.yaml:/etc/otelcol-contrib/config.yaml prometheus: image: prom/prometheus:latest container_name: prometheus command: - --config.file=/etc/prometheus/prometheus.yaml - --enable-feature=otlp-write-receiver ports: - "9090:9090" hostname: prometheus networks: - kong-net volumes: - ./prometheus/:/etc/prometheus/ loki: image: grafana/loki:3.0.0 container_name: loki command: ["-config.file=/mnt/config/loki-config.yaml"] volumes: - ./loki/config.yaml:/mnt/config/loki-config.yaml networks: - kong-net grafana: image: grafana/grafana-oss:12.0.1 container_name: grafana environment: - GF_AUTH_ANONYMOUS_ENABLED=false - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_AUTH_DISABLE_LOGIN_FORM=false volumes: - ./grafana/datasources:/etc/grafana/provisioning/datasources/ - ./grafana/dashboards:/etc/grafana/provisioning/dashboards/ ports: - "3000:3000" networks: - kong-net jaeger: image: jaegertracing/all-in-one:1.57 container_name: jaeger ports: - "16686:16686" environment: - COLLECTOR_OTLP_ENABLED=true networks: - kong-net deck: networks: - kong-net image: kong/deck:v1.45.0 user: root volumes: - ./deck:/tmp/deck - ./kong-air:/tmp/kong-air - ./platform:/tmp/platform - ./deck-init-apply.sh:/tmp/deck-init-apply.sh environment: DECK_ANALYTICS: "off" DECK_ADDR: "https://us.api.konghq.com" DECK_KONNECT_CONTROL_PLANE_NAME: "resiliency" DECK_KONNECT_TOKEN: "${AUTH_TOKEN}" entrypoint: ["/bin/sh", "-c", "/tmp/deck-init-apply.sh"]