gx10-gitops: capture live manifests for 32 product namespaces (ArgoCD adoption source)

This commit is contained in:
Andrew Stoltz
2026-06-16 22:24:23 -05:00
parent 0218b1f8b6
commit 6c0be8563d
156 changed files with 9955 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
{
"apiVersion": "cert-manager.io/v1",
"kind": "Certificate",
"metadata": {
"name": "yealink-provision-tls",
"namespace": "telephony"
},
"spec": {
"dnsNames": [
"prov.telephony.iamworkin.lan"
],
"issuerRef": {
"kind": "ClusterIssuer",
"name": "step-ca-acme"
},
"secretName": "yealink-provision-tls"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"apiVersion": "v1",
"data": {
"appsettings.Production.json": "{\n \"Telephony\": {\n \"Provider\": \"asterisk\",\n \"Twilio\": {\n \"VoiceUrl\": \"https://telephony.flowercore.io/api/twilio/webhooks/voice/incoming\",\n \"StatusCallbackUrl\": \"https://telephony.flowercore.io/api/twilio/webhooks/voice/status\"\n },\n \"Asterisk\": {\n \"BaseUrl\": \"http://asterisk-ari.telephony.svc.cluster.local:8088\",\n \"Username\": \"flowercore\",\n \"Password\": \"bluejay-asterisk-ari\",\n \"Application\": \"flowercore-pbx\",\n \"ReconnectDelaySeconds\": 5,\n \"MaxReconnectDelaySeconds\": 60\n }\n },\n \"Ari\": {\n \"BaseUrl\": \"http://asterisk-ari.telephony.svc.cluster.local:8088\",\n \"Username\": \"flowercore\",\n \"Password\": \"bluejay-asterisk-ari\",\n \"Application\": \"flowercore-pbx\",\n \"ReconnectDelaySeconds\": 5,\n \"MaxReconnectDelaySeconds\": 60,\n \"WebSocketKeepAliveIntervalSeconds\": 30\n },\n \"Sip\": {\n \"Domain\": \"10.0.57.203\",\n \"Port\": 5060,\n \"Transport\": \"udp\"\n },\n \"Tts\": {\n \"PiperUrl\": \"http://10.0.56.14:30850\",\n \"DefaultEngine\": \"piper\",\n \"SampleRate\": 8000\n },\n \"DatabaseProvider\": \"Sqlite\",\n \"ConnectionStrings\": {\n \"DefaultConnection\": \"Data Source=/data/telephony.db\"\n },\n \"Kestrel\": {\n \"Endpoints\": {\n \"Http\": {\n \"Url\": \"http://0.0.0.0:5100\"\n }\n }\n }\n}"
},
"kind": "ConfigMap",
"metadata": {
"name": "telephony-config",
"namespace": "telephony"
}
}

View File

@@ -0,0 +1,18 @@
{
"apiVersion": "v1",
"data": {
"ext100.cfg": "#!version:1.0.0.1\naccount.1.enable = 1\naccount.1.label = Blue Jay's Nest\naccount.1.display_name = Blue Jay's Nest\naccount.1.auth_name = 100\naccount.1.user_name = 100\naccount.1.password = kvNiD1gCeX5DCfTYrapGQxpu2wU7\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\n",
"ext101.cfg": "#!version:1.0.0.1\naccount.1.enable = 1\naccount.1.label = Office 1\naccount.1.display_name = Office 1\naccount.1.auth_name = 101\naccount.1.user_name = 101\naccount.1.password = knYPbhnWQtfbWJr9hOPUql6InJns\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\n",
"ext102.cfg": "#!version:1.0.0.1\naccount.1.enable = 1\naccount.1.label = Office 2\naccount.1.display_name = Office 2\naccount.1.auth_name = 102\naccount.1.user_name = 102\naccount.1.password = D0aJY4LFKievwcRszq3TkbkhG1F7\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\n",
"ext103.cfg": "#!version:1.0.0.1\naccount.1.enable = 1\naccount.1.label = Office 3\naccount.1.display_name = Office 3\naccount.1.auth_name = 103\naccount.1.user_name = 103\naccount.1.password = 56I8Q3oNOrd1nQMzWjeqizX0G4UI\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\n",
"ext110.cfg": "#!version:1.0.0.1\naccount.1.enable = 1\naccount.1.label = Family iPhone\naccount.1.display_name = Family iPhone\naccount.1.auth_name = 110\naccount.1.user_name = 110\naccount.1.password = wanVn0oqExl8wUfFJ3hx6BGAcvNF\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\n",
"ext111.cfg": "#!version:1.0.0.1\naccount.1.enable = 1\naccount.1.label = Blue Jay Android\naccount.1.display_name = Blue Jay Android\naccount.1.auth_name = 111\naccount.1.user_name = 111\naccount.1.password = C14qNz2rDRRgyAsUjrZGAMilLMcO\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\n",
"nginx.conf": "server {\n listen 80;\n root /usr/share/nginx/html/provision;\n autoindex off;\n\n location /provision/ {\n alias /usr/share/nginx/html/provision/;\n default_type application/octet-stream;\n }\n}\n",
"y000000000000.cfg": "#!version:1.0.0.1\n## Yealink Global Auto-Provisioning Config\n## Applied to all Yealink phones that contact this server\n\n## SIP Account 1\naccount.1.enable = 1\naccount.1.label = BlueJay\naccount.1.display_name = $MAC\naccount.1.sip_server.1.address = 10.0.57.203\naccount.1.sip_server.1.port = 5060\naccount.1.sip_server.1.transport_type = 0\naccount.1.sip_server.1.expires = 3600\naccount.1.codec.1.enable = 1\naccount.1.codec.1.payload_type = g722\naccount.1.codec.1.priority = 0\naccount.1.codec.2.enable = 1\naccount.1.codec.2.payload_type = PCMU\naccount.1.codec.2.priority = 1\naccount.1.codec.3.enable = 1\naccount.1.codec.3.payload_type = PCMA\naccount.1.codec.3.priority = 2\naccount.1.codec.4.enable = 1\naccount.1.codec.4.payload_type = opus\naccount.1.codec.4.priority = 3\n\n## Network\nnetwork.dhcp_host_name =\nnetwork.vlan.internet_port_enable = 0\n\n## Time\nlocal_time.time_zone = -6\nlocal_time.time_zone_name = United States-Central Time\nlocal_time.ntp_server1 = 10.0.56.1\nlocal_time.date_format = 1\nlocal_time.time_format = 1\nlocal_time.manual_ntp_srv_prior = 1\n\n## Phone Settings\nphone_setting.ring_type = Ring1.wav\nfeatures.power_saving.enable = 0\n\n## DTMF \u2014 use RFC2833 (RFC4733) for Asterisk ARI compatibility\naccount.1.dtmf.type = 1\naccount.1.dtmf.dtmf_payload = 101\n\n## Dial Plan \u2014 send ALL * codes to the SIP server (do NOT handle locally)\n## Without this, *0 etc. get intercepted by the phone firmware\ndialplan.digitmap = { *x+ | *xx | *xxx | *xxxx | [1-9]xx | +x+ | 1xxxxxxxxxx | x+ }\ndialplan.digitmap.apply_to = 0\n\n## Disable local feature code handling \u2014 let the server handle everything\nfeatures.pickup.direct_pickup_enable = 0\nfeatures.pickup.direct_pickup_code =\nfeatures.pickup.group_pickup_enable = 0\nfeatures.pickup.group_pickup_code =\nfeatures.key_as_send = 1\n\n## Disable local voicemail \u2014 server handles voicemail via star codes\nvoice_mail.number.1 =\naccount.1.voice_mail.number =\n\n## Provisioning\nauto_provision.server.url = https://prov.telephony.iamworkin.lan/provision\nauto_provision.repeat.enable = 1\nauto_provision.repeat.minutes = 1440\n"
},
"kind": "ConfigMap",
"metadata": {
"name": "yealink-provisioning",
"namespace": "telephony"
}
}

View File

@@ -0,0 +1,326 @@
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"labels": {
"app": "asterisk"
},
"name": "asterisk",
"namespace": "telephony"
},
"spec": {
"progressDeadlineSeconds": 600,
"replicas": 1,
"revisionHistoryLimit": 10,
"selector": {
"matchLabels": {
"app": "asterisk"
}
},
"strategy": {
"type": "Recreate"
},
"template": {
"metadata": {
"annotations": {
"kubectl.kubernetes.io/restartedAt": "2026-06-16T13:09:51-05:00"
},
"labels": {
"app": "asterisk"
}
},
"spec": {
"containers": [
{
"image": "localhost/andrius/asterisk:latest",
"imagePullPolicy": "Never",
"livenessProbe": {
"failureThreshold": 3,
"initialDelaySeconds": 15,
"periodSeconds": 10,
"successThreshold": 1,
"tcpSocket": {
"port": 8088
},
"timeoutSeconds": 1
},
"name": "asterisk",
"ports": [
{
"containerPort": 5060,
"name": "sip-udp",
"protocol": "UDP"
},
{
"containerPort": 5060,
"name": "sip-tcp",
"protocol": "TCP"
},
{
"containerPort": 8088,
"name": "ari",
"protocol": "TCP"
}
],
"readinessProbe": {
"failureThreshold": 3,
"httpGet": {
"httpHeaders": [
{
"name": "Authorization",
"value": "Basic Zmxvd2VyY29yZTpibHVlamF5LWFzdGVyaXNrLWFyaQ=="
}
],
"path": "/ari/asterisk/info",
"port": 8088,
"scheme": "HTTP"
},
"initialDelaySeconds": 10,
"periodSeconds": 5,
"successThreshold": 1,
"timeoutSeconds": 1
},
"resources": {
"limits": {
"cpu": "1",
"memory": "512Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"volumeMounts": [
{
"mountPath": "/etc/asterisk/modules.conf",
"name": "config-modules",
"subPath": "modules.conf"
},
{
"mountPath": "/etc/asterisk/http.conf",
"name": "config-http",
"subPath": "http.conf"
},
{
"mountPath": "/etc/asterisk/ari.conf",
"name": "config-ari",
"subPath": "ari.conf"
},
{
"mountPath": "/etc/asterisk/manager.conf",
"name": "config-manager",
"subPath": "manager.conf"
},
{
"mountPath": "/etc/asterisk/pjsip.conf",
"name": "config-pjsip",
"subPath": "pjsip.conf"
},
{
"mountPath": "/etc/asterisk/extensions.conf",
"name": "config-extensions",
"subPath": "extensions.conf"
},
{
"mountPath": "/etc/asterisk/rtp.conf",
"name": "config-rtp",
"subPath": "rtp.conf"
},
{
"mountPath": "/var/spool/asterisk",
"name": "asterisk-data"
},
{
"mountPath": "/var/log/asterisk",
"name": "asterisk-logs"
},
{
"mountPath": "/var/lib/asterisk/sounds/en",
"name": "sounds"
},
{
"mountPath": "/var/lib/asterisk/sounds/tts",
"name": "shared-tts"
}
]
}
],
"dnsConfig": {
"nameservers": [
"10.43.0.10"
],
"options": [
{
"name": "ndots",
"value": "2"
}
],
"searches": [
"telephony.svc.cluster.local",
"svc.cluster.local",
"cluster.local"
]
},
"dnsPolicy": "None",
"hostAliases": [
{
"hostnames": [
"downloads.asterisk.org"
],
"ip": "165.22.184.19"
}
],
"initContainers": [
{
"command": [
"sh",
"-c",
"set -eu\nif [ -f /sounds/en/vm-goodbye.ulaw ] || [ -f /sounds/en/vm-goodbye.gsm ]; then\n echo \"Sounds already present \u00e2\u20ac\u201d skipping download.\"\n exit 0\nfi\necho \"Installing curl + tar...\"\napk add --no-cache curl tar gzip >/dev/null\ncd /tmp\necho \"Downloading Asterisk core sounds (en, ulaw) 1.6.1...\"\n# -k: cluster egress goes through a step-ca MITM for outbound TLS\n# that this pod does not trust. The tarball is a public artifact \u00e2\u20ac\u201d\n# integrity is checked downstream by Asterisk at playback time.\ncurl -fksSLO https://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-en-ulaw-1.6.1.tar.gz\necho \"Extracting to /sounds/en ...\"\nmkdir -p /sounds/en\ntar -xzf asterisk-core-sounds-en-ulaw-1.6.1.tar.gz -C /sounds/en\necho \"Done \u00e2\u20ac\u201d $(ls /sounds/en | wc -l) files installed.\"\n"
],
"image": "alpine:3.20",
"imagePullPolicy": "IfNotPresent",
"name": "install-sounds",
"resources": {},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"volumeMounts": [
{
"mountPath": "/sounds/en",
"name": "sounds"
}
]
}
],
"restartPolicy": "Always",
"schedulerName": "default-scheduler",
"securityContext": {
"fsGroup": 0
},
"terminationGracePeriodSeconds": 30,
"volumes": [
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "modules.conf",
"path": "modules.conf"
}
],
"name": "asterisk-config"
},
"name": "config-modules"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "http.conf",
"path": "http.conf"
}
],
"name": "asterisk-config"
},
"name": "config-http"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "ari.conf",
"path": "ari.conf"
}
],
"name": "asterisk-config"
},
"name": "config-ari"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "manager.conf",
"path": "manager.conf"
}
],
"name": "asterisk-config"
},
"name": "config-manager"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "pjsip.conf",
"path": "pjsip.conf"
}
],
"name": "asterisk-config"
},
"name": "config-pjsip"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "extensions.conf",
"path": "extensions.conf"
}
],
"name": "asterisk-config"
},
"name": "config-extensions"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "rtp.conf",
"path": "rtp.conf"
}
],
"name": "asterisk-config"
},
"name": "config-rtp"
},
{
"name": "asterisk-data",
"persistentVolumeClaim": {
"claimName": "asterisk-data"
}
},
{
"emptyDir": {},
"name": "asterisk-logs"
},
{
"emptyDir": {},
"name": "sounds"
},
{
"hostPath": {
"path": "/tmp/tts-audio",
"type": "DirectoryOrCreate"
},
"name": "shared-tts"
},
{
"hostPath": {
"path": "/tmp/tts-audio",
"type": "DirectoryOrCreate"
},
"name": "tts-shared"
}
]
}
}
}
}

View File

@@ -0,0 +1,259 @@
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"labels": {
"app": "telephony-web"
},
"name": "telephony-web",
"namespace": "telephony"
},
"spec": {
"progressDeadlineSeconds": 600,
"replicas": 1,
"revisionHistoryLimit": 10,
"selector": {
"matchLabels": {
"app": "telephony-web"
}
},
"strategy": {
"type": "Recreate"
},
"template": {
"metadata": {
"annotations": {
"fc.flowercore.io/healthz-anon": "true",
"fc.flowercore.io/probe-path": "/health",
"kubectl.kubernetes.io/restartedAt": "2026-06-15T18:24:58-05:00",
"operator.1password.io/last-restarted": "2026-03-10T17:28:16Z"
},
"labels": {
"app": "telephony-web"
}
},
"spec": {
"containers": [
{
"env": [
{
"name": "Telephony__Twilio__AccountSid",
"valueFrom": {
"secretKeyRef": {
"key": "AccountSid",
"name": "twilio-credentials",
"optional": true
}
}
},
{
"name": "Telephony__Twilio__AuthToken",
"valueFrom": {
"secretKeyRef": {
"key": "AuthToken",
"name": "twilio-credentials",
"optional": true
}
}
},
{
"name": "Telephony__Twilio__DefaultFromNumber",
"valueFrom": {
"secretKeyRef": {
"key": "DefaultFromNumber",
"name": "twilio-credentials",
"optional": true
}
}
},
{
"name": "Tts__PiperUrl",
"value": "http://10.0.56.14:30850"
},
{
"name": "Ari__Username",
"value": "flowercore"
},
{
"name": "Ari__Password",
"value": "bluejay-asterisk-ari"
},
{
"name": "Logging__LogLevel__FlowerCore.Telephony.Web.Services.DtmfCollector",
"value": "Debug"
},
{
"name": "Logging__LogLevel__FlowerCore.Telephony.Web.Daemons.AriEventHandlerRegistration",
"value": "Debug"
},
{
"name": "Logging__LogLevel__FlowerCore.Telephony.Web.Providers.Asterisk.AsteriskProvider",
"value": "Debug"
},
{
"name": "Logging__LogLevel__FlowerCore.Telephony.Web.Handlers.StarCodeHandler",
"value": "Debug"
},
{
"name": "Telephony__Tts__DefaultEngine",
"value": "piper"
}
],
"image": "localhost/fc-telephony-web:gx10-v2",
"imagePullPolicy": "Never",
"livenessProbe": {
"failureThreshold": 3,
"httpGet": {
"path": "/health",
"port": 5100,
"scheme": "HTTP"
},
"initialDelaySeconds": 30,
"periodSeconds": 10,
"successThreshold": 1,
"timeoutSeconds": 1
},
"name": "telephony-web",
"ports": [
{
"containerPort": 5100,
"name": "http",
"protocol": "TCP"
}
],
"readinessProbe": {
"failureThreshold": 3,
"httpGet": {
"path": "/health",
"port": 5100,
"scheme": "HTTP"
},
"initialDelaySeconds": 10,
"periodSeconds": 5,
"successThreshold": 1,
"timeoutSeconds": 1
},
"resources": {
"limits": {
"cpu": "1",
"memory": "1Gi"
},
"requests": {
"cpu": "100m",
"memory": "256Mi"
}
},
"securityContext": {
"allowPrivilegeEscalation": false,
"capabilities": {
"drop": [
"ALL"
]
},
"readOnlyRootFilesystem": true
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"volumeMounts": [
{
"mountPath": "/app/appsettings.Production.json",
"name": "telephony-config",
"readOnly": true,
"subPath": "appsettings.Production.json"
},
{
"mountPath": "/data",
"name": "telephony-data"
},
{
"mountPath": "/tmp",
"name": "tmp"
},
{
"mountPath": "/app/logs",
"name": "logs"
},
{
"mountPath": "/shared-tts",
"name": "shared-tts"
}
]
}
],
"dnsPolicy": "ClusterFirstWithHostNet",
"hostNetwork": true,
"initContainers": [
{
"command": [
"sh",
"-c",
"chmod 0777 /shared-tts && echo tts-perms-fixed"
],
"image": "localhost/fc-telephony-web:gx10-v1",
"imagePullPolicy": "IfNotPresent",
"name": "fix-tts-perms",
"resources": {},
"securityContext": {
"runAsNonRoot": false,
"runAsUser": 0
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"volumeMounts": [
{
"mountPath": "/shared-tts",
"name": "shared-tts"
}
]
}
],
"restartPolicy": "Always",
"schedulerName": "default-scheduler",
"securityContext": {
"fsGroup": 1654,
"runAsGroup": 1654,
"runAsNonRoot": true,
"runAsUser": 1654
},
"terminationGracePeriodSeconds": 30,
"volumes": [
{
"configMap": {
"defaultMode": 420,
"name": "telephony-config"
},
"name": "telephony-config"
},
{
"name": "telephony-data",
"persistentVolumeClaim": {
"claimName": "telephony-data"
}
},
{
"emptyDir": {},
"name": "tmp"
},
{
"emptyDir": {},
"name": "logs"
},
{
"hostPath": {
"path": "/tmp/tts-audio",
"type": "DirectoryOrCreate"
},
"name": "shared-tts"
},
{
"hostPath": {
"path": "/tmp/tts-audio",
"type": "DirectoryOrCreate"
},
"name": "tts-shared"
}
]
}
}
}
}

View File

@@ -0,0 +1,100 @@
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"labels": {
"app": "yealink-provision"
},
"name": "yealink-provision",
"namespace": "telephony"
},
"spec": {
"progressDeadlineSeconds": 600,
"replicas": 1,
"revisionHistoryLimit": 10,
"selector": {
"matchLabels": {
"app": "yealink-provision"
}
},
"strategy": {
"rollingUpdate": {
"maxSurge": "25%",
"maxUnavailable": "25%"
},
"type": "RollingUpdate"
},
"template": {
"metadata": {
"labels": {
"app": "yealink-provision"
}
},
"spec": {
"containers": [
{
"image": "nginx:alpine",
"imagePullPolicy": "IfNotPresent",
"name": "nginx",
"ports": [
{
"containerPort": 80,
"protocol": "TCP"
}
],
"resources": {
"limits": {
"cpu": "200m",
"memory": "64Mi"
},
"requests": {
"cpu": "10m",
"memory": "16Mi"
}
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"volumeMounts": [
{
"mountPath": "/usr/share/nginx/html/provision",
"name": "configs"
},
{
"mountPath": "/etc/nginx/conf.d/default.conf",
"name": "nginx-conf",
"subPath": "nginx.conf"
}
]
}
],
"dnsPolicy": "ClusterFirst",
"restartPolicy": "Always",
"schedulerName": "default-scheduler",
"securityContext": {},
"terminationGracePeriodSeconds": 30,
"volumes": [
{
"configMap": {
"defaultMode": 420,
"name": "yealink-provisioning"
},
"name": "configs"
},
{
"configMap": {
"defaultMode": 420,
"items": [
{
"key": "nginx.conf",
"path": "nginx.conf"
}
],
"name": "yealink-provisioning"
},
"name": "nginx-conf"
}
]
}
}
}
}

View File

@@ -0,0 +1,40 @@
{
"apiVersion": "traefik.io/v1alpha1",
"kind": "IngressRoute",
"metadata": {
"name": "telephony-web-gx10",
"namespace": "telephony"
},
"spec": {
"entryPoints": [
"websecure"
],
"routes": [
{
"kind": "Rule",
"match": "Host(`telephony.flowercore.io`)",
"priority": 100,
"services": [
{
"name": "telephony-web",
"port": 5100
}
]
},
{
"kind": "Rule",
"match": "Host(`telephony.iamwork.in`)",
"priority": 100,
"services": [
{
"name": "telephony-web",
"port": 5100
}
]
}
],
"tls": {
"secretName": "cf-origin-flowercore-io"
}
}
}

View File

@@ -0,0 +1,29 @@
{
"apiVersion": "traefik.io/v1alpha1",
"kind": "IngressRoute",
"metadata": {
"name": "telephony-web-internal-gx10",
"namespace": "telephony"
},
"spec": {
"entryPoints": [
"websecure"
],
"routes": [
{
"kind": "Rule",
"match": "Host(`telephony.iamworkin.lan`)",
"priority": 100,
"services": [
{
"name": "telephony-web",
"port": 5100
}
]
}
],
"tls": {
"secretName": "telephony-internal-tls"
}
}
}

View File

@@ -0,0 +1,29 @@
{
"apiVersion": "traefik.io/v1alpha1",
"kind": "IngressRoute",
"metadata": {
"name": "yealink-provision",
"namespace": "telephony"
},
"spec": {
"entryPoints": [
"websecure"
],
"routes": [
{
"kind": "Rule",
"match": "Host(`prov.telephony.iamworkin.lan`)",
"priority": 100,
"services": [
{
"name": "yealink-provision",
"port": 80
}
]
}
],
"tls": {
"secretName": "yealink-provision-tls"
}
}
}

View File

@@ -0,0 +1,24 @@
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "asterisk-ari",
"namespace": "telephony"
},
"spec": {
"internalTrafficPolicy": "Cluster",
"ports": [
{
"name": "ari",
"port": 8088,
"protocol": "TCP",
"targetPort": 8088
}
],
"selector": {
"app": "asterisk"
},
"sessionAffinity": "None",
"type": "ClusterIP"
}
}

View File

@@ -0,0 +1,259 @@
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"annotations": {
"metallb.io/ip-allocated-from-pool": "prod-pool",
"metallb.universe.tf/loadBalancerIPs": "10.0.57.203"
},
"labels": {
"app": "asterisk"
},
"name": "asterisk-sip",
"namespace": "telephony"
},
"spec": {
"allocateLoadBalancerNodePorts": true,
"externalTrafficPolicy": "Local",
"healthCheckNodePort": 32642,
"internalTrafficPolicy": "Cluster",
"ports": [
{
"name": "sip-udp",
"nodePort": 30143,
"port": 5060,
"protocol": "UDP",
"targetPort": 5060
},
{
"name": "sip-tcp",
"nodePort": 30143,
"port": 5060,
"protocol": "TCP",
"targetPort": 5060
},
{
"name": "rtp-10000",
"nodePort": 31818,
"port": 10000,
"protocol": "UDP",
"targetPort": 10000
},
{
"name": "rtp-10001",
"nodePort": 30670,
"port": 10001,
"protocol": "UDP",
"targetPort": 10001
},
{
"name": "rtp-10002",
"nodePort": 30807,
"port": 10002,
"protocol": "UDP",
"targetPort": 10002
},
{
"name": "rtp-10003",
"nodePort": 32369,
"port": 10003,
"protocol": "UDP",
"targetPort": 10003
},
{
"name": "rtp-10004",
"nodePort": 30585,
"port": 10004,
"protocol": "UDP",
"targetPort": 10004
},
{
"name": "rtp-10005",
"nodePort": 31732,
"port": 10005,
"protocol": "UDP",
"targetPort": 10005
},
{
"name": "rtp-10006",
"nodePort": 31964,
"port": 10006,
"protocol": "UDP",
"targetPort": 10006
},
{
"name": "rtp-10007",
"nodePort": 30590,
"port": 10007,
"protocol": "UDP",
"targetPort": 10007
},
{
"name": "rtp-10008",
"nodePort": 32576,
"port": 10008,
"protocol": "UDP",
"targetPort": 10008
},
{
"name": "rtp-10009",
"nodePort": 30609,
"port": 10009,
"protocol": "UDP",
"targetPort": 10009
},
{
"name": "rtp-10010",
"nodePort": 31719,
"port": 10010,
"protocol": "UDP",
"targetPort": 10010
},
{
"name": "rtp-10011",
"nodePort": 31134,
"port": 10011,
"protocol": "UDP",
"targetPort": 10011
},
{
"name": "rtp-10012",
"nodePort": 32402,
"port": 10012,
"protocol": "UDP",
"targetPort": 10012
},
{
"name": "rtp-10013",
"nodePort": 32366,
"port": 10013,
"protocol": "UDP",
"targetPort": 10013
},
{
"name": "rtp-10014",
"nodePort": 32726,
"port": 10014,
"protocol": "UDP",
"targetPort": 10014
},
{
"name": "rtp-10015",
"nodePort": 30626,
"port": 10015,
"protocol": "UDP",
"targetPort": 10015
},
{
"name": "rtp-10016",
"nodePort": 32040,
"port": 10016,
"protocol": "UDP",
"targetPort": 10016
},
{
"name": "rtp-10017",
"nodePort": 32389,
"port": 10017,
"protocol": "UDP",
"targetPort": 10017
},
{
"name": "rtp-10018",
"nodePort": 30345,
"port": 10018,
"protocol": "UDP",
"targetPort": 10018
},
{
"name": "rtp-10019",
"nodePort": 32459,
"port": 10019,
"protocol": "UDP",
"targetPort": 10019
},
{
"name": "rtp-10020",
"nodePort": 31689,
"port": 10020,
"protocol": "UDP",
"targetPort": 10020
},
{
"name": "rtp-10021",
"nodePort": 31020,
"port": 10021,
"protocol": "UDP",
"targetPort": 10021
},
{
"name": "rtp-10022",
"nodePort": 30901,
"port": 10022,
"protocol": "UDP",
"targetPort": 10022
},
{
"name": "rtp-10023",
"nodePort": 31490,
"port": 10023,
"protocol": "UDP",
"targetPort": 10023
},
{
"name": "rtp-10024",
"nodePort": 31629,
"port": 10024,
"protocol": "UDP",
"targetPort": 10024
},
{
"name": "rtp-10025",
"nodePort": 32374,
"port": 10025,
"protocol": "UDP",
"targetPort": 10025
},
{
"name": "rtp-10026",
"nodePort": 31209,
"port": 10026,
"protocol": "UDP",
"targetPort": 10026
},
{
"name": "rtp-10027",
"nodePort": 32521,
"port": 10027,
"protocol": "UDP",
"targetPort": 10027
},
{
"name": "rtp-10028",
"nodePort": 32265,
"port": 10028,
"protocol": "UDP",
"targetPort": 10028
},
{
"name": "rtp-10029",
"nodePort": 30871,
"port": 10029,
"protocol": "UDP",
"targetPort": 10029
},
{
"name": "rtp-10030",
"nodePort": 31116,
"port": 10030,
"protocol": "UDP",
"targetPort": 10030
}
],
"selector": {
"app": "asterisk"
},
"sessionAffinity": "None",
"type": "LoadBalancer"
}
}

View File

@@ -0,0 +1,25 @@
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"labels": {},
"name": "telephony-web",
"namespace": "telephony"
},
"spec": {
"internalTrafficPolicy": "Cluster",
"ports": [
{
"name": "http",
"port": 5100,
"protocol": "TCP",
"targetPort": 5100
}
],
"selector": {
"app": "telephony-web"
},
"sessionAffinity": "None",
"type": "ClusterIP"
}
}

View File

@@ -0,0 +1,27 @@
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"labels": {
"app": "yealink-provision"
},
"name": "yealink-provision",
"namespace": "telephony"
},
"spec": {
"internalTrafficPolicy": "Cluster",
"ports": [
{
"name": "http",
"port": 80,
"protocol": "TCP",
"targetPort": 80
}
],
"selector": {
"app": "yealink-provision"
},
"sessionAffinity": "None",
"type": "ClusterIP"
}
}