gx10-gitops: capture live manifests for 32 product namespaces (ArgoCD adoption source)
This commit is contained in:
18
apps-gx10/telephony/certificate-yealink-provision-tls.json
Normal file
18
apps-gx10/telephony/certificate-yealink-provision-tls.json
Normal 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"
|
||||
}
|
||||
}
|
||||
17
apps-gx10/telephony/configmap-asterisk-config.json
Normal file
17
apps-gx10/telephony/configmap-asterisk-config.json
Normal file
File diff suppressed because one or more lines are too long
11
apps-gx10/telephony/configmap-telephony-config.json
Normal file
11
apps-gx10/telephony/configmap-telephony-config.json
Normal 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"
|
||||
}
|
||||
}
|
||||
18
apps-gx10/telephony/configmap-yealink-provisioning.json
Normal file
18
apps-gx10/telephony/configmap-yealink-provisioning.json
Normal 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"
|
||||
}
|
||||
}
|
||||
326
apps-gx10/telephony/deployment-asterisk.json
Normal file
326
apps-gx10/telephony/deployment-asterisk.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
259
apps-gx10/telephony/deployment-telephony-web.json
Normal file
259
apps-gx10/telephony/deployment-telephony-web.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
100
apps-gx10/telephony/deployment-yealink-provision.json
Normal file
100
apps-gx10/telephony/deployment-yealink-provision.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
40
apps-gx10/telephony/ingressroute-telephony-web-gx10.json
Normal file
40
apps-gx10/telephony/ingressroute-telephony-web-gx10.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
29
apps-gx10/telephony/ingressroute-yealink-provision.json
Normal file
29
apps-gx10/telephony/ingressroute-yealink-provision.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
24
apps-gx10/telephony/service-asterisk-ari.json
Normal file
24
apps-gx10/telephony/service-asterisk-ari.json
Normal 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"
|
||||
}
|
||||
}
|
||||
259
apps-gx10/telephony/service-asterisk-sip.json
Normal file
259
apps-gx10/telephony/service-asterisk-sip.json
Normal 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"
|
||||
}
|
||||
}
|
||||
25
apps-gx10/telephony/service-telephony-web.json
Normal file
25
apps-gx10/telephony/service-telephony-web.json
Normal 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"
|
||||
}
|
||||
}
|
||||
27
apps-gx10/telephony/service-yealink-provision.json
Normal file
27
apps-gx10/telephony/service-yealink-provision.json
Normal 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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user