doorboy-direct #115
@@ -1,8 +1,20 @@
 | 
			
		||||
## inventory.k-space.ee
 | 
			
		||||
Reads-writes to mongo.
 | 
			
		||||
 | 
			
		||||
## hackerspace / inventory
 | 
			
		||||
<!-- Referenced/linked by https://wiki.k-space.ee/en/hosting/doors -->
 | 
			
		||||
A component of inventory is 'doorboy' (https://wiki.k-space.ee/en/hosting/doors)
 | 
			
		||||
 | 
			
		||||
## k6.ee
 | 
			
		||||
## [doorboy-proxy](https://github.com/k-space/doorboy-proxy)
 | 
			
		||||
- Dispatches open events (from mongodb) to door controllers.
 | 
			
		||||
- Handles Slack open events (to mongodb).
 | 
			
		||||
- Forwards logs from door controllers to mongodb.
 | 
			
		||||
- Broadcasts mongodb logs to Slack.
 | 
			
		||||
 | 
			
		||||
See also:
 | 
			
		||||
- inventory-app door components
 | 
			
		||||
- https://wiki.k-space.ee/en/hosting/doors
 | 
			
		||||
 | 
			
		||||
## [inventory-app](https://github.com/k-space/inventory-app) (inventory.k-space.ee)
 | 
			
		||||
- Inventory
 | 
			
		||||
- Manages door keycards.
 | 
			
		||||
- Forwards door opens from website to mongodb (what are picked up by doorboy-proxy).
 | 
			
		||||
 | 
			
		||||
## [goredirect](https://github.com/k-space/goredirect) (k6.ee)
 | 
			
		||||
Reads from mongo, HTTP redirect to //inventory.k-space.ee/m/inventory/{uuid}/view
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,7 @@ spec:
 | 
			
		||||
                      - doorboy-proxy
 | 
			
		||||
                topologyKey: topology.kubernetes.io/zone
 | 
			
		||||
              weight: 100
 | 
			
		||||
      serviceAccountName: inventory-svcacc
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: doorboy-proxy
 | 
			
		||||
          image: harbor.k-space.ee/k-space/doorboy-proxy:latest
 | 
			
		||||
@@ -33,21 +34,14 @@ spec:
 | 
			
		||||
            - secretRef:
 | 
			
		||||
                name: inventory-mongodb
 | 
			
		||||
            - secretRef:
 | 
			
		||||
                name: doorboy-api
 | 
			
		||||
                name: doorboy-godoor
 | 
			
		||||
            - secretRef:
 | 
			
		||||
                name: doorboy-slack
 | 
			
		||||
          env:
 | 
			
		||||
            - name: FLOOR_ACCESS_GROUP
 | 
			
		||||
              value: 'k-space:floor'
 | 
			
		||||
            - name: WORKSHOP_ACCESS_GROUP
 | 
			
		||||
              value: 'k-space:workshop'
 | 
			
		||||
            - name: CARD_URI
 | 
			
		||||
              value: 'https://inventory.k-space.ee/cards'
 | 
			
		||||
            - name: SWIPE_URI
 | 
			
		||||
              value: 'https://inventory.k-space.ee/m/doorboy/swipe'
 | 
			
		||||
            - name: INVENTORY_API_KEY
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: inventory-api-key
 | 
			
		||||
                  key: INVENTORY_API_KEY
 | 
			
		||||
            - name: OIDC_USERS_NAMESPACE
 | 
			
		||||
              value: passmower
 | 
			
		||||
            - name: SLACK_CHANNEL_ID
 | 
			
		||||
              value: CDL9H8Q9W
 | 
			
		||||
          securityContext:
 | 
			
		||||
            readOnlyRootFilesystem: true
 | 
			
		||||
            runAsNonRoot: true
 | 
			
		||||
@@ -1,37 +1,24 @@
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: Middleware
 | 
			
		||||
metadata:
 | 
			
		||||
  name: members-inventory-redirect
 | 
			
		||||
spec:
 | 
			
		||||
  redirectRegex:
 | 
			
		||||
    regex: ^https://members.k-space.ee/(.*)
 | 
			
		||||
    replacement: https://inventory.k-space.ee/${1}
 | 
			
		||||
    permanent: false
 | 
			
		||||
---
 | 
			
		||||
# Creates a dummy/stub in auth.k-space.ee user-facing service listing (otherwise only inventory.k-space.ee is listed).
 | 
			
		||||
apiVersion: codemowers.cloud/v1beta1
 | 
			
		||||
kind: OIDCMiddlewareClient
 | 
			
		||||
kind: OIDCClient
 | 
			
		||||
metadata:
 | 
			
		||||
  name: doorboy
 | 
			
		||||
  name: inventory-app
 | 
			
		||||
spec:
 | 
			
		||||
  displayName: Doorboy
 | 
			
		||||
  uri: 'https://inventory.k-space.ee/m/doorboy'
 | 
			
		||||
---
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: IngressRoute
 | 
			
		||||
metadata:
 | 
			
		||||
  name: members-inventory
 | 
			
		||||
spec:
 | 
			
		||||
  entryPoints:
 | 
			
		||||
    - websecure
 | 
			
		||||
  routes:
 | 
			
		||||
  - match: Host(`members.k-space.ee`)
 | 
			
		||||
    kind: Rule
 | 
			
		||||
    middlewares:
 | 
			
		||||
      - name: members-inventory-redirect
 | 
			
		||||
    services:
 | 
			
		||||
      - kind: TraefikService
 | 
			
		||||
        name: api@internal
 | 
			
		||||
  uri: 'https://inventory.k-space.ee'
 | 
			
		||||
  redirectUris:
 | 
			
		||||
    - 'https://inventory.k-space.ee/login-callback'
 | 
			
		||||
  grantTypes:
 | 
			
		||||
    - 'authorization_code'
 | 
			
		||||
    - 'refresh_token'
 | 
			
		||||
  responseTypes:
 | 
			
		||||
    - 'code'
 | 
			
		||||
  availableScopes:
 | 
			
		||||
    - 'openid'
 | 
			
		||||
    - 'profile'
 | 
			
		||||
    - 'groups'
 | 
			
		||||
    - 'offline_access'
 | 
			
		||||
  tokenEndpointAuthMethod: 'client_secret_basic'
 | 
			
		||||
  pkce: false
 | 
			
		||||
---
 | 
			
		||||
apiVersion: codemowers.cloud/v1beta1
 | 
			
		||||
kind: MinioBucketClaim
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								hackerspace/inventory-redirects.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								hackerspace/inventory-redirects.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
---
 | 
			
		||||
# Creates a dummy/stub in auth.k-space.ee user-facing service listing (otherwise only inventory.k-space.ee is listed).
 | 
			
		||||
apiVersion: codemowers.cloud/v1beta1
 | 
			
		||||
kind: OIDCMiddlewareClient
 | 
			
		||||
metadata:
 | 
			
		||||
  name: doorboy
 | 
			
		||||
spec:
 | 
			
		||||
  displayName: Doorboy
 | 
			
		||||
  uri: 'https://inventory.k-space.ee/m/doorboy'
 | 
			
		||||
---
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: Middleware
 | 
			
		||||
metadata:
 | 
			
		||||
  name: members-inventory-redirect
 | 
			
		||||
spec:
 | 
			
		||||
  redirectRegex:
 | 
			
		||||
    regex: ^https://members.k-space.ee/(.*)
 | 
			
		||||
    replacement: https://inventory.k-space.ee/${1}
 | 
			
		||||
    permanent: false
 | 
			
		||||
---
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: IngressRoute
 | 
			
		||||
metadata:
 | 
			
		||||
  name: members-inventory
 | 
			
		||||
spec:
 | 
			
		||||
  entryPoints:
 | 
			
		||||
    - websecure
 | 
			
		||||
  routes:
 | 
			
		||||
  - match: Host(`members.k-space.ee`)
 | 
			
		||||
    kind: Rule
 | 
			
		||||
    middlewares:
 | 
			
		||||
      - name: members-inventory-redirect
 | 
			
		||||
    services:
 | 
			
		||||
      - kind: TraefikService
 | 
			
		||||
        name: api@internal
 | 
			
		||||
@@ -20,36 +20,12 @@ spec:
 | 
			
		||||
      - image: harbor.k-space.ee/k-space/inventory-app:latest
 | 
			
		||||
        imagePullPolicy: Always
 | 
			
		||||
        env:
 | 
			
		||||
        - name: ENVIRONMENT_TYPE
 | 
			
		||||
          value: PROD
 | 
			
		||||
        - name: PYTHONUNBUFFERED
 | 
			
		||||
          value: "1"
 | 
			
		||||
        - name: INVENTORY_ASSETS_BASE_URL
 | 
			
		||||
          value: https://external.minio-clusters.k-space.ee/hackerspace-701d9303-0f27-4829-a2be-b1084021ad91/
 | 
			
		||||
        - name: MACADDRESS_OUTLINK_BASEURL
 | 
			
		||||
          value: https://grafana.k-space.ee/d/ddwyidbtbc16oa/ip-usage?orgId=1&from=now-2y&to=now&timezone=browser&var-Filters=mac%7C%3D%7C
 | 
			
		||||
        - name: OIDC_USERS_NAMESPACE
 | 
			
		||||
          value: passmower
 | 
			
		||||
        - name: SECRET_KEY
 | 
			
		||||
          valueFrom:
 | 
			
		||||
            secretKeyRef:
 | 
			
		||||
              key: SECRET_KEY
 | 
			
		||||
              name: inventory-secrets
 | 
			
		||||
        - name: INVENTORY_API_KEY
 | 
			
		||||
          valueFrom:
 | 
			
		||||
            secretKeyRef:
 | 
			
		||||
              key: INVENTORY_API_KEY
 | 
			
		||||
              name: inventory-api-key
 | 
			
		||||
        - name: SLACK_DOORLOG_CALLBACK
 | 
			
		||||
          valueFrom:
 | 
			
		||||
            secretKeyRef:
 | 
			
		||||
              key: SLACK_DOORLOG_CALLBACK
 | 
			
		||||
              name: slack-secrets
 | 
			
		||||
        - name: SLACK_VERIFICATION_TOKEN
 | 
			
		||||
          valueFrom:
 | 
			
		||||
            secretKeyRef:
 | 
			
		||||
              key: SLACK_VERIFICATION_TOKEN
 | 
			
		||||
              name: slack-secrets
 | 
			
		||||
        envFrom:
 | 
			
		||||
        - secretRef:
 | 
			
		||||
            name: miniobucket-inventory-external-owner-secrets
 | 
			
		||||
@@ -122,59 +98,3 @@ spec:
 | 
			
		||||
  tls:
 | 
			
		||||
  - hosts:
 | 
			
		||||
    - "*.k-space.ee"
 | 
			
		||||
---
 | 
			
		||||
apiVersion: codemowers.cloud/v1beta1
 | 
			
		||||
kind: OIDCClient
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-app
 | 
			
		||||
spec:
 | 
			
		||||
  uri: 'https://inventory.k-space.ee'
 | 
			
		||||
  redirectUris:
 | 
			
		||||
    - 'https://inventory.k-space.ee/login-callback'
 | 
			
		||||
  grantTypes:
 | 
			
		||||
    - 'authorization_code'
 | 
			
		||||
    - 'refresh_token'
 | 
			
		||||
  responseTypes:
 | 
			
		||||
    - 'code'
 | 
			
		||||
  availableScopes:
 | 
			
		||||
    - 'openid'
 | 
			
		||||
    - 'profile'
 | 
			
		||||
    - 'groups'
 | 
			
		||||
    - 'offline_access'
 | 
			
		||||
  tokenEndpointAuthMethod: 'client_secret_basic'
 | 
			
		||||
  pkce: false
 | 
			
		||||
---
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRole
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-role
 | 
			
		||||
  namespace: hackerspace
 | 
			
		||||
rules:
 | 
			
		||||
  - verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
    apiGroups:
 | 
			
		||||
      - codemowers.cloud
 | 
			
		||||
    resources:
 | 
			
		||||
      - oidcusers
 | 
			
		||||
      - oidcusers/status
 | 
			
		||||
---
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-roles
 | 
			
		||||
  namespace: hackerspace
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: ClusterRole
 | 
			
		||||
  name: inventory-role
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: inventory-svcacc
 | 
			
		||||
    namespace: hackerspace
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ServiceAccount
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-svcacc
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								hackerspace/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								hackerspace/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
apiVersion: kustomize.config.k8s.io/v1beta1
 | 
			
		||||
kind: Kustomization
 | 
			
		||||
 | 
			
		||||
namespace: hackerspace
 | 
			
		||||
 | 
			
		||||
resources:
 | 
			
		||||
- ssh://git@git.k-space.ee/secretspace/kube/hackerspace # secrets: inventory-mongodb, inventory-s3, doorboy-godoor, doorboy-slack
 | 
			
		||||
- ./doorboy.yaml
 | 
			
		||||
- ./svcacc.yaml
 | 
			
		||||
- ./inventory.yaml
 | 
			
		||||
- ./inventory-extras.yaml
 | 
			
		||||
- ./inventory-redirects.yaml
 | 
			
		||||
- ./goredirect.yaml
 | 
			
		||||
							
								
								
									
										35
									
								
								hackerspace/svcacc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								hackerspace/svcacc.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRole
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-role
 | 
			
		||||
  namespace: hackerspace
 | 
			
		||||
rules:
 | 
			
		||||
  - verbs:
 | 
			
		||||
      - get
 | 
			
		||||
      - list
 | 
			
		||||
      - watch
 | 
			
		||||
    apiGroups:
 | 
			
		||||
      - codemowers.cloud
 | 
			
		||||
    resources:
 | 
			
		||||
      - oidcusers
 | 
			
		||||
      - oidcusers/status
 | 
			
		||||
---
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: ClusterRoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-roles
 | 
			
		||||
  namespace: hackerspace
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: ClusterRole
 | 
			
		||||
  name: inventory-role
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: inventory-svcacc
 | 
			
		||||
    namespace: hackerspace
 | 
			
		||||
---
 | 
			
		||||
# used by inventory and doorboy
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ServiceAccount
 | 
			
		||||
metadata:
 | 
			
		||||
  name: inventory-svcacc
 | 
			
		||||
		Reference in New Issue
	
	Block a user