support/manifests/suggested_reviewer/recommender-bot.yaml (238 lines of code) (raw):

--- apiVersion: v1 kind: Secret metadata: name: gcp-credentials type: Opaque data: gcp_json: "ewogICJjbGllbnRfaWQiOiAiMTIzNDU2Nzg5YWJjZGVmZy5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsCiAgImNsaWVudF9zZWNyZXQiOiAiZC1GTHlld3VxeWV1cXciLAogICJxdW90YV9wcm9qZWN0X2lkIjogInN1Z2dlc3RlZC1yZXZpZXdlci0xNTA0MDBlNiIsCiAgInJlZnJlc2hfdG9rZW4iOiAiMS8vMTIzNDU2NzhhYmNkZWZnIiwKICAidHlwZSI6ICJhdXRob3JpemVkX3VzZXIiCn0K" --- apiVersion: v1 kind: ConfigMap metadata: name: recommender-bot-envoy-sidecar-config labels: app: recommender-bot data: envoy.yaml: | static_resources: listeners: - name: "recommender-bot-http-listener" address: socket_address: { address: "0.0.0.0", port_value: 8282 } filter_chains: - filters: - name: "envoy.filters.network.http_connection_manager" typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: "grpc_json" codec_type: "AUTO" route_config: name: "local_route" virtual_hosts: - name: "local_service" domains: [ "*" ] routes: - match: { prefix: "/", grpc: {} } route: { cluster: "recommender-bot", timeout: 60s } http_filters: - name: "envoy.filters.http.grpc_json_transcoder" typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder proto_descriptor: "/data/protos/recommender-bot.protoset.pb" services: [ "bot.RecommenderService" ] print_options: add_whitespace: true always_print_primitive_fields: true always_print_enums_as_ints: false preserve_proto_field_names: false convert_grpc_status: true request_validation_options: reject_unknown_method: true reject_unknown_query_parameters: true - name: "envoy.filters.http.router" - name: "recommender-bot-http-auth-listener" address: socket_address: { address: "0.0.0.0", port_value: 8484 } filter_chains: - filters: - name: "envoy.filters.network.http_connection_manager" typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: "grpc_json" codec_type: "AUTO" route_config: name: "local_route" virtual_hosts: - name: "local_service" domains: [ "*" ] routes: - match: { prefix: "/", grpc: {} } route: { cluster: "recommender-bot", timeout: 60s } http_filters: - name: "envoy.filters.http.grpc_json_transcoder" typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder proto_descriptor: "/data/protos/recommender-bot.protoset.pb" services: [ "bot.RecommenderService" ] print_options: add_whitespace: true always_print_primitive_fields: true always_print_enums_as_ints: false preserve_proto_field_names: false convert_grpc_status: true request_validation_options: reject_unknown_method: true reject_unknown_query_parameters: true - name: "envoy.filters.http.ext_authz" typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz http_service: server_uri: uri: "http://authenticator-service:8080" cluster: "ext-auth" timeout: 60s authorization_request: allowed_headers: patterns: - { exact: "Job-Token", ignore_case: true } - { exact: "Project-Id", ignore_case: true } failure_mode_allow: false - name: "envoy.filters.http.router" clusters: - name: "recommender-bot" connect_timeout: "1.25s" type: "STATIC" lb_policy: "ROUND_ROBIN" dns_lookup_family: V4_ONLY typed_extension_protocol_options: envoy.extensions.upstreams.http.v3.HttpProtocolOptions: "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions explicit_http_config: http2_protocol_options: { } load_assignment: cluster_name: "recommender-bot" endpoints: - lb_endpoints: - endpoint: address: socket_address: address: "127.0.0.1" port_value: 8080 - name: "ext-auth" connect_timeout: "1.25s" type: "LOGICAL_DNS" lb_policy: "ROUND_ROBIN" load_assignment: cluster_name: "ext-auth" endpoints: - lb_endpoints: - endpoint: address: socket_address: address: "authenticator-service" port_value: 8080 --- apiVersion: apps/v1 kind: Deployment metadata: name: recommender-bot-deployment labels: app: recommender-bot spec: replicas: 1 selector: matchLabels: app: recommender-bot template: metadata: labels: app: recommender-bot spec: initContainers: - name: protosets image: recommender-bot-service:dev imagePullPolicy: Never command: [sh, -c] args: [cp /app/recommender-bot.protoset.pb /data/protos] volumeMounts: - name: grpc-protosets mountPath: /data/protos containers: - name: recommender-bot-envoy-sidecar image: envoyproxy/envoy-alpine:v1.19-latest imagePullPolicy: IfNotPresent ports: - containerPort: 8282 - containerPort: 8484 volumeMounts: - name: recommender-bot-envoy-sidecar-config mountPath: /etc/envoy - name: grpc-protosets mountPath: /data/protos readOnly: true - name: recommender-bot image: recommender-bot-service:dev imagePullPolicy: Never ports: - containerPort: 8080 env: - name: RECOMMENDER_BOT_SERVICE_PORT value: "8080" - name: RECOMMENDER_BOT_GITLAB_TOKEN valueFrom: secretKeyRef: name: recommender-bot-gitlab-token key: token - name: RECOMMENDER_BOT_GRPC_SERVICE_URL value: recommender-service:8080 - name: RECOMMENDER_BOT_PG_CONN_STRING valueFrom: secretKeyRef: name: recommender-bot-pg-conn-string key: pg-conn - name: PUBSUB_EMULATOR_HOST value: pubsub:8432 - name: GOOGLE_APPLICATION_CREDENTIALS value: /data/gcp/gcp_credentials.json - name: RECOMMENDER_BOT_PUBSUB_PROJECT_ID value: project-test - name: RECOMMENDER_BOT_PUBSUB_TOPIC_RECOMMENDATIONS value: gitlab.merge-request-recommendations-test.1 volumeMounts: - name: gcp-secrets mountPath: /data/gcp readOnly: true volumes: - name: grpc-protosets emptyDir: {} - name: recommender-bot-envoy-sidecar-config configMap: name: recommender-bot-envoy-sidecar-config - name: gcp-secrets secret: secretName: gcp-credentials items: - key: gcp_json path: gcp_credentials.json --- apiVersion: v1 kind: Service metadata: name: recommender-bot-service labels: app: recommender-bot spec: type: NodePort ports: - name: http-plain port: 8282 targetPort: 8282 - name: http-auth port: 8484 targetPort: 8484 - name: grpc port: 8080 targetPort: 8080 selector: app: recommender-bot