++
This commit is contained in:
parent
6a7944126c
commit
53f322fb30
262
apps/issues/brusnika-stage/backend.yaml
Normal file
262
apps/issues/brusnika-stage/backend.yaml
Normal file
@ -0,0 +1,262 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: issues
|
||||||
|
namespace: issues
|
||||||
|
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: universal-chart
|
||||||
|
version: "0.1.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
interval: 10m
|
||||||
|
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
env: _default
|
||||||
|
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
image:
|
||||||
|
name:
|
||||||
|
_default: cr.yandex/crp3ccidau046kdj8g9q/issues:production_f1b6c05c
|
||||||
|
pullPolicy:
|
||||||
|
_default: IfNotPresent
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
name:
|
||||||
|
_default: issues
|
||||||
|
|
||||||
|
replicaCount:
|
||||||
|
_default: 1
|
||||||
|
stage: 1
|
||||||
|
preprod: 3
|
||||||
|
production: 3
|
||||||
|
|
||||||
|
port:
|
||||||
|
_default: 8000
|
||||||
|
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
enabled: false
|
||||||
|
readiness:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
name:
|
||||||
|
_default: issues-service
|
||||||
|
|
||||||
|
type:
|
||||||
|
_default: ClusterIP
|
||||||
|
|
||||||
|
port:
|
||||||
|
_default: 80
|
||||||
|
|
||||||
|
targetPort:
|
||||||
|
_default: 8000
|
||||||
|
|
||||||
|
portName:
|
||||||
|
_default: http
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
enabled:
|
||||||
|
_default: true
|
||||||
|
name:
|
||||||
|
_default: regcred
|
||||||
|
volumes:
|
||||||
|
_default:
|
||||||
|
- name: uwsgi-configmap
|
||||||
|
mountPath:
|
||||||
|
_default: /opt/server/uwsgi.ini
|
||||||
|
subPath:
|
||||||
|
_default: uwsgi.ini
|
||||||
|
readOnly:
|
||||||
|
_default: true
|
||||||
|
configMap:
|
||||||
|
name:
|
||||||
|
_default: uwsgi-configmap
|
||||||
|
items:
|
||||||
|
- key: uwsgi.ini
|
||||||
|
path:
|
||||||
|
_default: uwsgi.ini
|
||||||
|
- name: production-configmap
|
||||||
|
mountPath:
|
||||||
|
_default: /src/config/settings/production.py
|
||||||
|
subPath:
|
||||||
|
_default: production.py
|
||||||
|
readOnly:
|
||||||
|
_default: true
|
||||||
|
configMap:
|
||||||
|
name:
|
||||||
|
_default: production-configmap
|
||||||
|
items:
|
||||||
|
- key: production.py
|
||||||
|
path:
|
||||||
|
_default: production.py
|
||||||
|
labels:
|
||||||
|
monitoring: prometheus
|
||||||
|
|
||||||
|
envs:
|
||||||
|
- name: ENVIRONMENT
|
||||||
|
value:
|
||||||
|
_default: "production"
|
||||||
|
|
||||||
|
- name: AERO_PUBLIC_HOST
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: AERO_HOST
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: BASE_AERO_URL
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: BASE_AUTH_URL
|
||||||
|
value:
|
||||||
|
_default: "http://backend.django.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: WORKFLOWS_HOST
|
||||||
|
value:
|
||||||
|
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: WORKFLOWS_URL
|
||||||
|
value:
|
||||||
|
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: RESOURCES_API_HOST
|
||||||
|
value:
|
||||||
|
_default: "http://resources-service.resources.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: EAV_HOST
|
||||||
|
value:
|
||||||
|
_default: "http://eav-service.eav.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: SAREX_API
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: DOCUMENTATIONS_URL
|
||||||
|
value:
|
||||||
|
_default: "http://documentations-api.documentations.svc.cluster.local:8080"
|
||||||
|
|
||||||
|
- name: DJANGO_SETTINGS_MODULE
|
||||||
|
value:
|
||||||
|
_default: "config.settings.production"
|
||||||
|
|
||||||
|
- name: DATABASE_HOST
|
||||||
|
value:
|
||||||
|
_default: "192.168.2.45"
|
||||||
|
|
||||||
|
- name: DATABASE_PORT
|
||||||
|
value:
|
||||||
|
_default: "5432"
|
||||||
|
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value:
|
||||||
|
_default: "8000"
|
||||||
|
|
||||||
|
- name: RABBITMQ_HOSTNAME
|
||||||
|
value:
|
||||||
|
_default: "rabbitmq-service:5672"
|
||||||
|
secretEnvs:
|
||||||
|
- name: YC_S3_ACCESS_KEY_ID
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "key_id"
|
||||||
|
|
||||||
|
- name: YC_S3_SECRET_ACCESS_KEY
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "access_key"
|
||||||
|
|
||||||
|
- name: YC_S3_BUCKET_NAME
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "storage_bucket_name"
|
||||||
|
|
||||||
|
- name: YC_S3_ENDPOINT_URL
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "endpoint_url"
|
||||||
|
|
||||||
|
- name: DJANGO_BASIC_AUTH
|
||||||
|
secretName:
|
||||||
|
_default: "django-auth"
|
||||||
|
secretKey: "key"
|
||||||
|
|
||||||
|
- name: SAREX_USERNAME
|
||||||
|
secretName:
|
||||||
|
_default: "sarex-auth"
|
||||||
|
secretKey: "username"
|
||||||
|
|
||||||
|
- name: SAREX_PASSWORD
|
||||||
|
secretName:
|
||||||
|
_default: "sarex-auth"
|
||||||
|
secretKey: "password"
|
||||||
|
|
||||||
|
- name: DATABASE_USER
|
||||||
|
secretName:
|
||||||
|
_default: "postgres-secret"
|
||||||
|
secretKey: "username"
|
||||||
|
|
||||||
|
- name: DATABASE_PASSWORD
|
||||||
|
secretName:
|
||||||
|
_default: "postgres-secret"
|
||||||
|
secretKey: "password"
|
||||||
|
|
||||||
|
- name: DATABASE_NAME
|
||||||
|
secretName:
|
||||||
|
_default: "postgres-secret"
|
||||||
|
secretKey: "database"
|
||||||
|
|
||||||
|
- name: RABBITMQ_VHOST
|
||||||
|
secretName:
|
||||||
|
_default: "rabbitmq-secret"
|
||||||
|
secretKey: "vhost"
|
||||||
|
|
||||||
|
- name: RABBITMQ_USERNAME
|
||||||
|
secretName:
|
||||||
|
_default: "rabbitmq-secret"
|
||||||
|
secretKey: "username"
|
||||||
|
|
||||||
|
- name: RABBITMQ_PASSWORD
|
||||||
|
secretName:
|
||||||
|
_default: "rabbitmq-secret"
|
||||||
|
secretKey: "password"
|
||||||
|
|
||||||
|
- name: JWT_PRIVATE_KEY
|
||||||
|
secretName:
|
||||||
|
_default: "backend-secret"
|
||||||
|
secretKey: "ssh_private.key"
|
||||||
|
|
||||||
|
- name: JWT_PUBLIC_KEY
|
||||||
|
secretName:
|
||||||
|
_default: "backend-secret"
|
||||||
|
secretKey: "ssh_public.key"
|
||||||
|
|
||||||
|
commitSha: ""
|
||||||
|
gitlabUri: ""
|
||||||
|
gitlabJobUrl: ""
|
||||||
|
owner: ""
|
||||||
273
apps/issues/brusnika-stage/celery.yaml
Normal file
273
apps/issues/brusnika-stage/celery.yaml
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: celery
|
||||||
|
namespace: issues
|
||||||
|
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: universal-chart
|
||||||
|
version: "0.1.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
interval: 10m
|
||||||
|
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
env: _default
|
||||||
|
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
image:
|
||||||
|
name:
|
||||||
|
_default: cr.yandex/crp3ccidau046kdj8g9q/issues:production_f1b6c05c
|
||||||
|
pullPolicy:
|
||||||
|
_default: IfNotPresent
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
name:
|
||||||
|
_default: celery
|
||||||
|
|
||||||
|
replicaCount:
|
||||||
|
_default: 1
|
||||||
|
stage: 1
|
||||||
|
preprod: 3
|
||||||
|
production: 3
|
||||||
|
|
||||||
|
port:
|
||||||
|
_default: 8000
|
||||||
|
|
||||||
|
command:
|
||||||
|
_default:
|
||||||
|
- celery
|
||||||
|
- '-A'
|
||||||
|
- config
|
||||||
|
- worker
|
||||||
|
- '-l'
|
||||||
|
- info
|
||||||
|
- '-E'
|
||||||
|
- '--concurrency=2'
|
||||||
|
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
enabled: false
|
||||||
|
readiness:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
service:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
name:
|
||||||
|
_default: celery-service
|
||||||
|
|
||||||
|
type:
|
||||||
|
_default: ClusterIP
|
||||||
|
|
||||||
|
port:
|
||||||
|
_default: 80
|
||||||
|
|
||||||
|
targetPort:
|
||||||
|
_default: 8000
|
||||||
|
|
||||||
|
portName:
|
||||||
|
_default: http
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
enabled:
|
||||||
|
_default: true
|
||||||
|
name:
|
||||||
|
_default: regcred
|
||||||
|
volumes:
|
||||||
|
_default:
|
||||||
|
- name: uwsgi-configmap
|
||||||
|
mountPath:
|
||||||
|
_default: /opt/server/uwsgi.ini
|
||||||
|
subPath:
|
||||||
|
_default: uwsgi.ini
|
||||||
|
readOnly:
|
||||||
|
_default: true
|
||||||
|
configMap:
|
||||||
|
name:
|
||||||
|
_default: uwsgi-configmap
|
||||||
|
items:
|
||||||
|
- key: uwsgi.ini
|
||||||
|
path:
|
||||||
|
_default: uwsgi.ini
|
||||||
|
- name: production-configmap
|
||||||
|
mountPath:
|
||||||
|
_default: /src/config/settings/production.py
|
||||||
|
subPath:
|
||||||
|
_default: production.py
|
||||||
|
readOnly:
|
||||||
|
_default: true
|
||||||
|
configMap:
|
||||||
|
name:
|
||||||
|
_default: production-configmap
|
||||||
|
items:
|
||||||
|
- key: production.py
|
||||||
|
path:
|
||||||
|
_default: production.py
|
||||||
|
labels:
|
||||||
|
monitoring: prometheus
|
||||||
|
|
||||||
|
envs:
|
||||||
|
- name: ENVIRONMENT
|
||||||
|
value:
|
||||||
|
_default: "production"
|
||||||
|
|
||||||
|
- name: AERO_PUBLIC_HOST
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: AERO_HOST
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: BASE_AERO_URL
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: BASE_AUTH_URL
|
||||||
|
value:
|
||||||
|
_default: "http://backend.django.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: WORKFLOWS_HOST
|
||||||
|
value:
|
||||||
|
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: WORKFLOWS_URL
|
||||||
|
value:
|
||||||
|
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: RESOURCES_API_HOST
|
||||||
|
value:
|
||||||
|
_default: "http://resources-service.resources.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: EAV_HOST
|
||||||
|
value:
|
||||||
|
_default: "http://eav-service.eav.svc.cluster.local:8000"
|
||||||
|
|
||||||
|
- name: SAREX_API
|
||||||
|
value:
|
||||||
|
_default: "https://test.sarex.brusnika.tech"
|
||||||
|
|
||||||
|
- name: DOCUMENTATIONS_URL
|
||||||
|
value:
|
||||||
|
_default: "http://documentations-api.documentations.svc.cluster.local:8080"
|
||||||
|
|
||||||
|
- name: DJANGO_SETTINGS_MODULE
|
||||||
|
value:
|
||||||
|
_default: "config.settings.production"
|
||||||
|
|
||||||
|
- name: DATABASE_HOST
|
||||||
|
value:
|
||||||
|
_default: "192.168.2.45"
|
||||||
|
|
||||||
|
- name: DATABASE_PORT
|
||||||
|
value:
|
||||||
|
_default: "5432"
|
||||||
|
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value:
|
||||||
|
_default: "8000"
|
||||||
|
|
||||||
|
- name: RABBITMQ_HOSTNAME
|
||||||
|
value:
|
||||||
|
_default: "rabbitmq-service:5672"
|
||||||
|
secretEnvs:
|
||||||
|
- name: YC_S3_ACCESS_KEY_ID
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "key_id"
|
||||||
|
|
||||||
|
- name: YC_S3_SECRET_ACCESS_KEY
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "access_key"
|
||||||
|
|
||||||
|
- name: YC_S3_BUCKET_NAME
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "storage_bucket_name"
|
||||||
|
|
||||||
|
- name: YC_S3_ENDPOINT_URL
|
||||||
|
secretName:
|
||||||
|
_default: "yc-s3-secret"
|
||||||
|
secretKey: "endpoint_url"
|
||||||
|
|
||||||
|
- name: DJANGO_BASIC_AUTH
|
||||||
|
secretName:
|
||||||
|
_default: "django-auth"
|
||||||
|
secretKey: "key"
|
||||||
|
|
||||||
|
- name: SAREX_USERNAME
|
||||||
|
secretName:
|
||||||
|
_default: "sarex-auth"
|
||||||
|
secretKey: "username"
|
||||||
|
|
||||||
|
- name: SAREX_PASSWORD
|
||||||
|
secretName:
|
||||||
|
_default: "sarex-auth"
|
||||||
|
secretKey: "password"
|
||||||
|
|
||||||
|
- name: DATABASE_USER
|
||||||
|
secretName:
|
||||||
|
_default: "postgres-secret"
|
||||||
|
secretKey: "username"
|
||||||
|
|
||||||
|
- name: DATABASE_PASSWORD
|
||||||
|
secretName:
|
||||||
|
_default: "postgres-secret"
|
||||||
|
secretKey: "password"
|
||||||
|
|
||||||
|
- name: DATABASE_NAME
|
||||||
|
secretName:
|
||||||
|
_default: "postgres-secret"
|
||||||
|
secretKey: "database"
|
||||||
|
|
||||||
|
- name: RABBITMQ_VHOST
|
||||||
|
secretName:
|
||||||
|
_default: "rabbitmq-secret"
|
||||||
|
secretKey: "vhost"
|
||||||
|
|
||||||
|
- name: RABBITMQ_USERNAME
|
||||||
|
secretName:
|
||||||
|
_default: "rabbitmq-secret"
|
||||||
|
secretKey: "username"
|
||||||
|
|
||||||
|
- name: RABBITMQ_PASSWORD
|
||||||
|
secretName:
|
||||||
|
_default: "rabbitmq-secret"
|
||||||
|
secretKey: "password"
|
||||||
|
|
||||||
|
- name: JWT_PRIVATE_KEY
|
||||||
|
secretName:
|
||||||
|
_default: "backend-secret"
|
||||||
|
secretKey: "ssh_private.key"
|
||||||
|
|
||||||
|
- name: JWT_PUBLIC_KEY
|
||||||
|
secretName:
|
||||||
|
_default: "backend-secret"
|
||||||
|
secretKey: "ssh_public.key"
|
||||||
|
|
||||||
|
commitSha: ""
|
||||||
|
gitlabUri: ""
|
||||||
|
gitlabJobUrl: ""
|
||||||
|
owner: ""
|
||||||
93
apps/issues/brusnika-stage/frontend.yaml
Normal file
93
apps/issues/brusnika-stage/frontend.yaml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: static
|
||||||
|
namespace: issues
|
||||||
|
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: universal-chart
|
||||||
|
version: "0.1.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
interval: 10m
|
||||||
|
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
env: _default
|
||||||
|
|
||||||
|
services:
|
||||||
|
frontend:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
image:
|
||||||
|
name:
|
||||||
|
_default: cr.yandex/crp3ccidau046kdj8g9q/contour_issues-frontend:893c9953
|
||||||
|
pullPolicy:
|
||||||
|
_default: IfNotPresent
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
name:
|
||||||
|
_default: static
|
||||||
|
|
||||||
|
replicaCount:
|
||||||
|
_default: 1
|
||||||
|
stage: 1
|
||||||
|
preprod: 3
|
||||||
|
production: 3
|
||||||
|
|
||||||
|
port:
|
||||||
|
_default: 80
|
||||||
|
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
enabled: false
|
||||||
|
readiness:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
name:
|
||||||
|
_default: static-service
|
||||||
|
|
||||||
|
|
||||||
|
type:
|
||||||
|
_default: ClusterIP
|
||||||
|
|
||||||
|
port:
|
||||||
|
_default: 80
|
||||||
|
|
||||||
|
targetPort:
|
||||||
|
_default: 80
|
||||||
|
|
||||||
|
portName:
|
||||||
|
_default: http
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
enabled:
|
||||||
|
_default: true
|
||||||
|
name:
|
||||||
|
_default: regcred
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
commitSha: ""
|
||||||
|
gitlabUri: ""
|
||||||
|
gitlabJobUrl: ""
|
||||||
|
owner: ""
|
||||||
8
apps/issues/brusnika-stage/kustomization.yaml
Normal file
8
apps/issues/brusnika-stage/kustomization.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: issues
|
||||||
|
resources:
|
||||||
|
- frontend.yaml
|
||||||
|
- backend.yaml
|
||||||
|
- celery.yaml
|
||||||
@ -14,3 +14,4 @@ resources:
|
|||||||
- ../../apps/documentations/brusnika-stage
|
- ../../apps/documentations/brusnika-stage
|
||||||
- ../../apps/flows/brusnika-stage
|
- ../../apps/flows/brusnika-stage
|
||||||
- ../../apps/reviews/brusnika-stage
|
- ../../apps/reviews/brusnika-stage
|
||||||
|
- ../../apps/issues/brusnika-stage
|
||||||
Loading…
Reference in New Issue
Block a user