Skip to content

Commit

Permalink
feat(binner): Deploy binner.io
Browse files Browse the repository at this point in the history
  • Loading branch information
eaglesemanation committed Feb 1, 2025
1 parent 9ec9ca4 commit f42c2e7
Show file tree
Hide file tree
Showing 14 changed files with 618 additions and 26 deletions.
14 changes: 14 additions & 0 deletions k8s/apps/accounting/binner.k8s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/kustomize.toolkit.fluxcd.io/kustomization_v1.json
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: binner
namespace: flux-system
spec:
interval: 10m
path: ./k8s/apps/accounting/binner
prune: true
sourceRef:
kind: GitRepository
name: emnt-ops
wait: true
261 changes: 261 additions & 0 deletions k8s/apps/accounting/binner/config-template.k8s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/external-secrets.io/externalsecret_v1beta1.json
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: config-template
namespace: binner
spec:
secretStoreRef:
kind: SecretStore
name: binner-secrets
target:
name: binner-config
template:
engineVersion: v2
data:
appsettings.json: |-
{
"WebHostServiceConfiguration": {
"Environment": "Production",
"Name": "Binner Server",
"IP": "*",
"PublicUrl": "https://binner.${CLUSTER_DOMAIN}",
"Port": 8090,
"ResourceSource": "d6ng6g5o3ih7k.cloudfront.net",
"MaxCacheItems": 1024,
"CacheSlidingExpirationMinutes": 30,
"CacheAbsoluteExpirationMinutes": 0,
"Locale": {
"Language": "en",
"Currency": "CAD"
},
"Integrations": {
"Swarm": {
"Enabled": true,
"ApiKey": "{{ .swarm_api_key }}",
"ApiUrl": "https://swarm.binner.io",
"Timeout": "00:00:05"
},
"Octopart": {
"Enabled": false,
"ApiKey": "",
"ApiUrl": "https://octopart.com"
},
"Digikey": {
"Enabled": true,
"ClientId": "{{ .digikey_api_id }}",
"ClientSecret": "{{ .digikey_api_secret }}",
"oAuthPostbackUrl": "https://binner.${CLUSTER_DOMAIN}/Authorization/Authorize",
"ApiUrl": "https://api.digikey.com"
},
"Mouser": {
"Enabled": true,
"ApiKeys": {
"SearchApiKey": "{{ .mouser_search_api_key }}",
"OrderApiKey": "{{ .mouser_order_api_key }}",
"CartApiKey": ""
},
"ApiUrl": "https://api.mouser.com"
},
"Arrow": {
"Enabled": false,
"ApiKey": "",
"Username": "",
"ApiUrl": "https://api.arrow.com"
},
"AliExpress": {
"Enabled": false,
"ApiKey": "",
"oAuthPostbackUrl": "https://binner.${CLUSTER_DOMAIN}/Authorization/Authorize",
"ApiUrl": "https://api.aliexpress.com"
}
},
"PrinterConfiguration": {
"PrintMode": "WebBrowser",
"PrinterName": "DYMO LabelWriter 450",
"PartLabelSource": "Default",
"PartLabelName": "30346",
"PartLabelTemplate": {
"Line1": {
"label": 2,
"content": "{partNumber}",
"fontName": "Segoe UI",
"fontSize": 16,
"autoSize": true,
"upperCase": true
},
"Line2": {
"label": 2,
"content": "{description}",
"fontName": "Segoe UI",
"fontSize": 8
},
"Line3": {
"label": 2,
"content": "{description}",
"fontName": "Segoe UI",
"fontSize": 8
},
"Line4": {
"label": 2,
"content": "{partNumber}",
"barcode": true
},
"Identifier": {
"label": 1,
"content": "{binNumber}",
"fontName": "Source Code Pro",
"fontSize": 10,
"color": "#ee0000",
"rotate": 90,
"position": "left",
"upperCase": true,
"margin": {
"top": 25
}
},
"Identifier2": {
"label": 1,
"content": "{binNumber2}",
"fontName": "Source Code Pro",
"fontSize": 10,
"color": "#ee0000",
"rotate": 90,
"position": "right",
"upperCase": true,
"margin": {
"top": 25,
"left": 20
}
}
},
"LabelDefinitions": [
{
"MediaSize": {
"ModelName": "30277",
"Name": "File Folder (2 up)",
"DriverName": "w82h248",
"ExtraData": "",
"Width": 82,
"Height": 248
},
"TopMargin": -20,
"LeftMargin": 0,
"LabelCount": 2,
"TotalLines": 2
},
{
"MediaSize": {
"ModelName": "30346",
"Name": "1/2 in x 1-7/8 in",
"DriverName": "w36h136",
"ExtraData": "",
"Width": 36,
"Height": 136
},
"TopMargin": -20,
"LeftMargin": 0,
"LabelCount": 2,
"TotalLines": 2
},
{
"MediaSize": {
"ModelName": "30252",
"Name": "Address",
"DriverName": "w79h252",
"ExtraData": "",
"Width": 79,
"Height": 252
},
"TopMargin": -20,
"LeftMargin": 0,
"LabelCount": 1,
"TotalLines": 4
},
{
"MediaSize": {
"ModelName": "30327",
"Name": "File Folder",
"DriverName": "w57h248",
"ExtraData": "",
"Width": 57,
"Height": 286
},
"TopMargin": -20,
"LeftMargin": 0,
"LabelCount": 1,
"TotalLines": 4
}
]
},
"Authentication": {
"TokenLength": 64,
"JwtAccessTokenExpiryTime": "00:15:00",
"JwtRefreshTokenExpiryTime": "03:00:00:00",
"EncryptionBits": 256,
"ClockSkew": "00:00:00",
"JwtIssuer": "https://binner.${CLUSTER_DOMAIN}",
"JwtAudience": "https://binner.${CLUSTER_DOMAIN}",
"ValidateIssuerSigningKey": true,
"ValidateIssuer": true,
"ValidateAudience": true,
"ValidateLifetime": true,
"RequireExpirationTime": true
}
},
"StorageProviderConfiguration": {
"Provider": "Postgresql",
"ProviderConfiguration": {
"ConnectionString": "Server={{ .pg_host }};Port={{ .pg_port }};Database={{ .pg_db }};Userid={{ .pg_user }};Password={{ .pg_pass }};Persist Security Info=true;Root Certificate=/pg-certs/ca.crt"
},
"UserUploadedFilesPath": "/uploads"
},
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Error"
}
}
}
data:
- secretKey: swarm_api_key
remoteRef:
key: api-keys
property: SWARM_API_KEY
- secretKey: digikey_api_id
remoteRef:
key: api-keys
property: DIGIKEY_API_ID
- secretKey: digikey_api_secret
remoteRef:
key: api-keys
property: DIGIKEY_API_SECRET
- secretKey: mouser_search_api_key
remoteRef:
key: api-keys
property: MOUSER_SEARCH_API_KEY
- secretKey: mouser_order_api_key
remoteRef:
key: api-keys
property: MOUSER_ORDER_API_KEY

- secretKey: pg_host
remoteRef:
key: binner-pg-pguser-binner
property: host
- secretKey: pg_port
remoteRef:
key: binner-pg-pguser-binner
property: port
- secretKey: pg_db
remoteRef:
key: binner-pg-pguser-binner
property: dbname
- secretKey: pg_user
remoteRef:
key: binner-pg-pguser-binner
property: user
- secretKey: pg_pass
remoteRef:
key: binner-pg-pguser-binner
property: password
45 changes: 45 additions & 0 deletions k8s/apps/accounting/binner/deployment.k8s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: binner
namespace: binner
labels:
app.kubernetes.io/name: binner
app.kubernetes.io/instance: binner
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: binner
app.kubernetes.io/instance: binner
template:
metadata:
labels:
app.kubernetes.io/name: binner
app.kubernetes.io/instance: binner
spec:
containers:
- name: binner
image: ghcr.io/eaglesemanation/ops.emnt.dev/binner:2.6.3_b666-1
volumeMounts:
- name: uploads
mountPath: /uploads
- name: pg-certs
mountPath: /pg-certs
- name: config
subPath: appsettings.json
mountPath: /app/appsettings.json
ports:
- name: http
protocol: TCP
containerPort: 8090
volumes:
- name: uploads
persistentVolumeClaim:
claimName: binner-uploads
- name: pg-certs
secret:
secretName: binner-pg-cluster-cert
- name: config
secret:
secretName: binner-config
40 changes: 40 additions & 0 deletions k8s/apps/accounting/binner/ingress.k8s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: v1
kind: Service
metadata:
name: binner
namespace: binner
labels:
app.kubernetes.io/name: binner
app.kubernetes.io/instance: binner
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: binner
app.kubernetes.io/instance: binner
ports:
- name: http
port: 8090
targetPort: http
protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: binner
namespace: binner
labels:
app.kubernetes.io/name: binner
app.kubernetes.io/instance: binner
spec:
ingressClassName: ingress-internal-traefik
rules:
- host: binner.${CLUSTER_DOMAIN}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: binner
port:
name: http
10 changes: 10 additions & 0 deletions k8s/apps/accounting/binner/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.k8s.yaml
- postgres.k8s.yaml
- secretstore.k8s.yaml
- config-template.k8s.yaml
- deployment.k8s.yaml
- pvc.k8s.yaml
- ingress.k8s.yaml
4 changes: 4 additions & 0 deletions k8s/apps/accounting/binner/namespace.k8s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: binner
Loading

0 comments on commit f42c2e7

Please sign in to comment.