apiVersion: v1 kind: Namespace metadata: name: sentryflow labels: app.kubernetes.io/part-of: sentryflow --- apiVersion: v1 kind: ServiceAccount metadata: name: sentryflow namespace: sentryflow labels: app.kubernetes.io/part-of: sentryflow --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: sentryflow labels: app.kubernetes.io/part-of: sentryflow rules: - apiGroups: - networking.istio.io verbs: - get - create - delete resources: - envoyfilters - apiGroups: - extensions.istio.io verbs: - get - create - delete resources: - wasmplugins - apiGroups: - "" verbs: - get resources: - configmaps - apiGroups: - apps verbs: - get resources: - deployments --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: sentryflow labels: app.kubernetes.io/part-of: sentryflow roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: sentryflow subjects: - kind: ServiceAccount name: sentryflow namespace: sentryflow --- # apiVersion: v1 # kind: ConfigMap # metadata: # name: sentryflow # namespace: sentryflow # labels: # app.kubernetes.io/part-of: sentryflow # data: # config.yaml: |2- # filters: # server: # port: 8081 # envoy: # uri: public.ecr.aws/k9v9d5v2/sentryflow-httpfilter:latest # receivers: # serviceMeshes: # - name: istio-sidecar # namespace: istio-system # exporter: # grpc: # port: 8080 # --- apiVersion: apps/v1 kind: Deployment metadata: name: sentryflow namespace: sentryflow labels: app.kubernetes.io/part-of: sentryflow spec: replicas: 1 selector: matchLabels: app: sentryflow template: metadata: labels: app: sentryflow spec: serviceAccountName: sentryflow containers: - name: sentryflow image: public.ecr.aws/k9v9d5v2/sentryflow:latest imagePullPolicy: Always args: - --config - /var/lib/sentryflow/config.yaml volumeMounts: - mountPath: /var/lib/sentryflow/ name: sentryflow ports: - containerPort: 8080 name: exporter protocol: TCP securityContext: capabilities: drop: - ALL readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1111 allowPrivilegeEscalation: false readinessProbe: httpGet: port: 8081 # Make sure to use the same port as `.filters.server.port` field in configMap path: /healthz httpHeaders: - name: status value: "200" initialDelaySeconds: 5 terminationGracePeriodSeconds: 30 volumes: - name: sentryflow configMap: name: sentryflow defaultMode: 420 --- apiVersion: v1 kind: Service metadata: namespace: sentryflow name: sentryflow labels: app.kubernetes.io/part-of: sentryflow spec: selector: app: sentryflow ports: - name: exporter port: 8080 targetPort: 8080 protocol: TCP - name: filter-server port: 8081 # Make sure to use the same port as `.filters.server.port` field in configMap targetPort: 8081 # Make sure to use the same port as `.filters.server.port` field in configMap protocol: TCP