Add Dockerfile ccweadmin

main
Alexander Morales 2 years ago
parent b332aa9096
commit 7bfd4ac98e

62
.gitignore vendored

@ -0,0 +1,62 @@
release/
# ---> Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
# Translations
*.mo
*.pot
# Django stuff:
*.log
# Sphinx documentation
docs/_build/
# PyBuilder
target/

@ -0,0 +1,317 @@
FROM docker.io/php:7.4-fpm-alpine3.16
LABEL "co.com.sapian.vendor"="Sapian SAS"
#cc_005_all_rpm_update.sh
RUN apk update && apk upgrade
#cc_101_all_config_os.sh
RUN mkdir -p /home/backup/misc \
&& mkdir -p /usr/share/astguiclient \
&& mkdir -p /var/log/astguiclient \
&& mkdir -p /var/lib/asterisk/ \
&& mkdir -p /var/lib/asterisk/agi-bin \
&& mkdir -p /var/lib/asterisk/sounds \
&& mkdir -p /var/spool/asterisk/monitor \
&& mkdir -p /usr/src/astguiclient
#cc_107_all_rpm_repo_epel.sh
RUN apk add --no-cache --update-cache \
curl \
ca-certificates \
alpine-sdk \
musl-dev \
musl-obstack-dev \
perl-dev \
perl-doc \
readline-dev \
&& rm -rf /var/cache/apk/*
##cc_109_all_rpm_install.sh perl part 1 A-E
RUN apk add --no-cache --update \
perl-algorithm-diff \
perl-app-cpanminus \
#perl-archive-tar \
perl-archive-zip \
perl-b-hooks-endofscope \
#perl-bsd-resource \
perl-cache-cache \
perl-class-load \
perl-class-load-xs \
perl-class-mix \
perl-compress-raw-zlib \
#perl-config-crontab \
perl-crypt-des \
perl-crypt-eksblowfish \
perl-crypt-rc4 \
perl-curses \
perl-dbd-mysql \
perl-dbi \
perl-data-dump \
perl-data-optlist \
perl-date-manip \
perl-devel-globaldestruction \
perl-devel-stacktrace \
perl-digest-hmac \
perl-digest-perl-md5 \
perl-digest-sha3 \
perl-digest-sha1 \
perl-dist-checkconflicts \
perl-encode-locale \
perl-error \
perl-eval-closure
#perl-extutils-cbuilder
##cc_109_all_rpm_install.sh perl part 1 F-S
RUN apk add --no-cache --update \
#perl-file-homedir \
perl-file-listing \
perl-file-remove \
perl-file-slurp \
perl-file-temp \
perl-file-which \
#perl-filehandle-unget \
perl-font-afm \
perl-gd \
perl-html-formattext-withlinks \
#perl-html-format \
perl-html-parser \
#perl-html-strip \
perl-html-tagset \
perl-html-template \
perl-html-tree \
perl-http-cookies \
perl-http-daemon \
perl-http-date \
perl-http-message \
perl-http-negotiate \
#perl-io-compress-base \
perl-io-html \
#perl-io-pty-easy \
perl-io-socket-ssl \
perl-io-string \
perl-io-tty \
perl-inline \
#perl-jcode \
perl-lwp-mediatypes \
#perl-linux-pid \
perl-list-moreutils \
perl-mime-types \
perl-mime-tools \
perl-mime-base64 \
perl-mro-compat \
#perl-mail-box \
perl-mail-imapclient \
#perl-mail-mbox-messageparser \
#perl-mail-pop3client \
perl-mail-sendmail \
perl-mailtools \
perl-module-implementation \
perl-module-install \
perl-module-runtime \
perl-moose \
#perl-net-daemon \
perl-net-http \
#perl-net-sftp-foreign \
perl-net-snmp \
perl-net-ssleay \
perl-net-server \
perl-net-telnet \
#perl-ole-storage-lite \
#perl-object-realize-later \
perl-package-deprecationmanager \
perl-package-stash \
perl-package-stash-xs \
perl-params-classify \
perl-params-util \
perl-parse-recdescent \
#perl-proc-processtable \
#perl-rpc-xml \
#perl-set-scalar \
perl-socket6 \
perl-spiffy \
perl-spreadsheet-parseexcel \
#perl-spreadsheet-read \
#perl-spreadsheet-writeexcel \
perl-spreadsheet-xlsx \
perl-spreadsheet-xlsx \
perl-sub-exporter \
perl-sub-exporter-progressive \
perl-sub-install \
perl-sub-name \
perl-switch
##cc_109_all_rpm_install.sh perl part 1 T-Z and a-z
RUN apk add --no-cache --update \
perl-task-weaken \
#perl-term-readline-gnu \
perl-term-readkey \
perl-test-base \
perl-test-nowarnings \
perl-test-tester \
perl-text-csv \
perl-text-csv_xs \
perl-text-diff \
perl-text-glob \
#perl-tie-ixhash \
perl-time-hires \
perl-time-local \
perl-timedate \
perl-try-tiny \
perl-uri \
#perl-unicode-map \
#perl-user-identity \
perl-variable-magic \
#perl-www-curl \
perl-www-robotrules \
perl-xml-libxml \
perl-xml-namespacesupport \
perl-xml-parser \
perl-xml-sax \
perl-xml-sax-base \
perl-xml-simple \
perl-xml-xpath \
perl-yaml \
perl-yaml-tiny \
#perl-gettext \
#perl-libwww-perl \
perl-namespace-clean \
perl-rrd
#perl-rrdtool
##cc_109_all_rpm_install.sh perl cpanm part 1
RUN PREFIX='/usr/local' INSTALL_BASE='' && cpanm \
Archive::Tar \
BSD::Resource \
Config::Crontab \
ExtUtils::CBuilder \
File::HomeDir \
FileHandle::Unget \
HTML::FormatText \
HTML::Strip \
IO::Compress::Base \
IO::Pty::Easy \
Jcode \
Linux::Pid \
Mail::Box \
Mail::Mbox::MessageParser \
Mail::POP3Client \
Net::Daemon \
Net::SFTP::Foreign \
OLE::Storage_Lite \
Object::Realize::Later \
Proc::ProcessTable \
RPC::XML \
Set::Scalar \
Spreadsheet::Read \
Spreadsheet::WriteExcel \
Term::ReadLine::Gnu \
Tie::IxHash \
Unicode::Map \
User::Identity \
# WWW::Curl \
Gettext \
LWP::Protocol::https
#RRDtool
#cc_109_all_rpm_install.sh part 2
RUN apk add --no-cache \
alsa-lib \
apr \
apr-util \
audiofile \
autoconf \
automake \
abseil-cpp \
curl \
curl-dev \
multipath-tools \
gcc \
glib \
libc-dev \
iftop \
imake \
linux-headers \
#libc-client \
libgomp \
libidn-dev \
libmcrypt \
libnet \
libogg \
libcap \
libpcap-dev \
libpng-dev \
#libtermcap-dev \
libvorbis \
libxml2 \
libxml2-dev \
libxslt \
libx11-dev \
libxau-dev \
libxdmcp-dev \
mesa-dev \
ncurses \
ncurses-dev \
openssl-dev \
pkgconf \
py3-cairo \
#py-gtk2 \
#libglade \
#py3-seaborn \
screen \
shared-mime-info \
smartmontools \
sox \
speex \
speex-dev \
subversion \
vim \
wget \
patch \
mutt \
libc6-compat \
imagemagick \
htop \
iftop \
util-linux-dev \
sipsak \
jansson-dev \
git \
restic \
py3-pip
#cc_109_all_rpm_install.sh part 3
RUN apk add --no-cache \
libxml2-dev \
libjpeg-turbo-dev \
freetype-dev \
&& docker-php-ext-configure gd --with-jpeg --with-freetype \
&& docker-php-ext-install \
mysql \
pdo_mysql \
gd \
imap \
ldap \
mbstring \
mcrypt \
xmlrpc \
soap \
pdo_odbc \
zip
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.name="vicidial-ccweb" \
org.label-schema.description="Vicidial Docker Image ccweb Complete" \
org.label-schema.url="https://www.sapian.cloud/vicidial-online-edition" \
org.label-schema.vcs-url="https://git.sapian.com.co/Sapian/vicidial" \
org.label-schema.maintainer="sebastian.rojo@sapian.com.co" \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vendor1="Vicidial" \
org.label-schema.vendor2="Sapian" \
org.label-schema.version=$VERSION \
org.label-schema.vicidial-schema-version="1602"

@ -0,0 +1,329 @@
FROM centos/httpd:latest
LABEL "co.com.sapian.vendor"="Sapian SAS"
#cc_005_all_rpm_update.sh
RUN yum -y update && yum clean all
#cc_101_all_config_os.sh
RUN mkdir -p /home/backup/misc \
&& mkdir -p /usr/share/astguiclient \
&& mkdir -p /var/log/astguiclient \
&& mkdir -p /var/lib/asterisk/ \
&& mkdir -p /var/lib/asterisk/agi-bin \
&& mkdir -p /var/lib/asterisk/sounds \
&& mkdir -p /var/spool/asterisk/monitor \
&& mkdir -p /usr/src/astguiclient
#cc_107_all_rpm_repo_epel.sh
RUN yum -y install epel-release \
&& yum clean all
#cc_109_all_rpm_install.sh part 1
RUN yum -y install \
perl-Algorithm-Diff \
perl-Archive-Tar \
perl-Archive-Zip \
perl-B-Hooks-EndOfScope \
perl-Class-Load \
perl-Class-Load-XS \
perl-Class-Mix \
perl-Config-Crontab \
perl-Crypt-Eksblowfish \
perl-Crypt-RC4 \
perl-BSD-Resource \
perl-Cache-Cache \
perl-Compress-Raw-Zlib \
perl-Crypt-DES \
perl-Curses \
perl-DBD-mysql \
perl-Data-Dump \
perl-DateManip \
perl-DBI \
perl-Data-OptList \
perl-Date-Manip \
perl-Devel-GlobalDestruction \
perl-Devel-StackTrace \
perl-DBD-MySQL \
perl-Digest-HMAC \
perl-Digest-Perl-MD5 \
perl-Digest-SHA1 \
perl-Dist-CheckConflicts \
perl-Encode-Locale \
perl-Error \
perl-Eval-Closure \
perl-File-Listing \
perl-File-Remove \
perl-File-Slurp \
perl-File-Temp \
perl-FileHandle-Unget \
perl-Font-AFM \
perl-GD \
perl-HTML-Format \
perl-Digest-SHA \
perl-ExtUtils-CBuilder \
perl-File-HomeDir \
perl-File-Which \
perl-HTML-Parser \
perl-HTML-Strip \
perl-HTML-Tagset \
perl-HTML-Tree \
perl-HTTP-Cookies \
perl-HTTP-Daemon \
perl-HTTP-Date \
perl-HTTP-Message \
perl-HTTP-Negotiate \
perl-IO-HTML \
perl-IO-Pty-Easy \
perl-IO-Socket-SSL \
perl-IO-String \
perl-IO-Tty \
perl-HTML-Template \
perl-IO-Compress-Base \
perl-IO-stringy \
perl-Inline \
perl-Jcode \
perl-LWP-MediaTypes \
perl-Linux-Pid \
perl-List-MoreUtils \
perl-MIME-Types \
perl-MIME-tools \
perl-MRO-Compat \
perl-Mail-Box \
perl-Mail-IMAPClient \
perl-Mail-Mbox-MessageParser \
perl-Mail-POP3Client \
perl-libwww-perl \
perl-Mail-Sendmail \
perl-MailTools \
perl-Module-Implementation \
perl-Module-Runtime \
perl-Moose \
perl-Module-Install \
perl-Net-Daemon \
perl-Net-HTTP \
perl-Net-SFTP-Foreign \
perl-Net-SSLeay \
perl-Net-Server \
perl-Net-SNMP \
perl-Net-Telnet \
perl-OLE-Storage_Lite \
perl-Object-Realize-Later \
perl-Package-DeprecationManager \
perl-Package-Stash \
perl-Package-Stash-XS \
perl-Params-Classify \
perl-Params-Util \
perl-Parse-RecDescent \
perl-Proc-ProcessTable \
perl-RPC-XML \
perl-rrdtool \
perl-Set-Scalar \
perl-Socket6 \
perl-Spiffy \
perl-Spreadsheet-XLSX \
perl-Spreadsheet-ParseExcel \
perl-Spreadsheet-Read \
perl-Spreadsheet-WriteExcel \
perl-Spreadsheet-XLSX \
perl-Sub-Exporter \
perl-Sub-Exporter-Progressive \
perl-Sub-Install \
perl-Sub-Name \
perl-Switch \
perl-Task-Weaken \
perl-Test-NoWarnings \
perl-Test-Tester \
perl-Text-CSV \
perl-Text-CSV_XS \
perl-Text-Diff \
perl-Tie-IxHash \
perl-Time-Local \
perl-TimeDate \
perl-Try-Tiny \
perl-URI \
perl-TermReadKey \
perl-Term-ReadLine-Gnu \
perl-Test-Base \
perl-Text-Glob \
perl-Unicode-Map \
perl-User-Identity \
perl-Variable-Magic \
perl-WWW-Curl \
perl-WWW-RobotRules \
perl-XML-LibXML \
perl-XML-NamespaceSupport \
perl-XML-Parser \
perl-XML-SAX \
perl-XML-SAX-Base \
perl-XML-Simple \
perl-XML-XPath \
perl-gettext \
perl-libwww-perl \
perl-namespace-clean \
perl-URI \
perl-YAML \
perl-YAML-Tiny \
perl-Text-CSV \
perl-Time-HiRes \
cpan \
perl-App-cpanminus \
unzip && yum clean all
#cc_109_all_rpm_install.sh part 2
RUN yum -y install \
alsa-lib \
apr \
apr-util \
audiofile \
autoconf \
automake \
cpp \
curl \
curl-devel \
device-mapper-multipath \
gcc \
glib \
glibc-devel \
glibc-headers \
iftop \
imake \
kernel-devel \
kernel-headers \
libc-client \
libgomp \
libidn-devel \
libmcrypt \
libnet \
libogg \
libcap \
libpcap-devel \
libpng-devel \
libtermcap-devel \
libvorbis \
libxml2 \
libxml2-devel \
libxslt \
libX11-devel \
libXau-devel \
libXdmcp-devel \
mesa-libGL-devel \
ncurses \
ncurses-devel \
openssl-devel \
pkgconfig \
pycairo \
pygtk2 \
pygtk2-libglade \
pyorbit \
screen \
shared-mime-info \
smartmontools \
sox \
speex \
speex-devel \
subversion \
vim-enhanced \
yum-utils \
zlib-devel \
gcc-c++ \
gsm-devel \
wget \
patch \
mutt \
glibc.i686 \
ImageMagick \
htop \
iftop \
libuuid-devel \
sipsak \
jansson-devel \
git \
restic \
python-pip \
&& yum clean all
#cc_109_all_rpm_install.sh part 3
RUN yum -y install \
mod_ssl \
php \
php-cli \
php-common \
php-gd \
php-imap \
php-ldap \
php-mbstring \
php-mcrypt \
php-mysql \
php-pdo \
php-pear \
php-devel \
gd-devel \
php-odbc \
php-xml \
php-xmlrpc \
sqlite-devel \
&& yum clean all
RUN yum -y install \
php-pecl-apcu \
apcu-panel \
php-pecl-zendopcache \
&& yum clean all
RUN PREFIX='/usr/local' INSTALL_BASE='/usr/share/astguiclient/libs' cpanm Spreadsheet::Read --force
RUN PREFIX='/usr/local' INSTALL_BASE='/usr/share/astguiclient/libs' cpanm IO::Scalar --force
RUN PREFIX='/usr/local' INSTALL_BASE='/usr/share/astguiclient/libs' cpanm Net::Telnet --force
RUN pip install j2cli
#cc_114_all_httpd_config.sh
RUN sed -i -e 's/post_max_size =.*$/post_max_size = 256M/' /etc/php.ini \
&& sed -i -e 's/max_execution_time =.*$/max_execution_time = 180/' /etc/php.ini \
&& sed -i -e 's/max_input_time =.*$/max_input_time = 180/' /etc/php.ini \
&& sed -i -e 's/upload_max_filesize =.*$/upload_max_filesize = 64M/' /etc/php.ini \
&& sed -i -e 's/memory_limit =.*$/memory_limit = 256M/' /etc/php.ini \
&& sed -i -e 's/^error_reporting =.*$/error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT \& ~E_NOTICE/' /etc/php.ini \
&& sed -i "s/^\;date\.timezone.*$/date\.timezone = \America\/Bogota\ /g" /etc/php.ini \
&& sed -i -e 's/^;apc.shm_size.*$/apc.shm_size=256/' /etc/php.d/apcu.ini
COPY docker/vicidial-http/conf/status.conf /etc/httpd/conf.d/
#cc_310_all_astguiclient_install.sh
COPY docker/vicidial-http/conf/astguiclient.conf /etc/astguiclient.conf
COPY docker/vicidial-http/conf/astguiclient.conf.j2 /etc/astguiclient.conf.j2
#cc_201_all_vicidial_svn_init.sh
WORKDIR /usr/src/astguiclient
#RUN svn checkout svn://svn.eflo.net:43690/agc_2-X/branches/agc_2.9
COPY ./ ./
ENV TZ=America/Bogota
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN perl install.pl --web-only --active_keepalives=X
RUN ln -s /var/www/html/vicidial/welcome.php /var/www/html/index.php
RUN ln -sf /dev/stdout /var/log/httpd/access_log
RUN ln -sf /dev/stderr /var/log/httpd/error_log
COPY extras/Sapian/voe-landing/dist/ /var/www/html/
COPY docker/vicidial-http/vicidial-web-entrypoint.sh /vicidial-web-entrypoint.sh
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]
ENTRYPOINT ["/vicidial-web-entrypoint.sh"]
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.name="vicidial-ccweb" \
org.label-schema.description="Vicidial Docker Image ccweb Complete" \
org.label-schema.url="https://www.sapian.cloud/vicidial-online-edition" \
org.label-schema.vcs-url="https://git.sapian.com.co/Sapian/vicidial" \
org.label-schema.maintainer="sebastian.rojo@sapian.com.co" \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vendor1="Vicidial" \
org.label-schema.vendor2="Sapian" \
org.label-schema.version=$VERSION \
org.label-schema.vicidial-schema-version="1602"

@ -1,2 +1,5 @@
# vicidial-webadmin-server
# build
sudo docker build --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') --build-arg VCS_REF=$(git rev-parse --short HEAD) -t sapian/vicidial-ccweb-admin:1602 -t us.gcr.io/ccoe-246623/sapian/vicidial-ccweb-agc:latest -t us.gcr.io/ccoe-246623/sapian/vicidial-ccweb-admin:1602-alpine3.16-r0 --build-arg VERSION=1602-alpine3.16-r0 .

@ -0,0 +1,5 @@
localhost:2020 {
bind {$ADDRESS}
reverse_proxy localhost:8080
tls internal
}

@ -0,0 +1,63 @@
[global]
; Log to stderr
error_log = /dev/stderr
display_errors = off
display_startup_errors = Off
php_flag[display_errors] = off
php_flag[display_startup_errors] = off
[www]
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
; Enable status page
pm.status_path = /fpm-status
; Ondemand process manager
pm = ondemand
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 100
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
pm.process_idle_timeout = 10s;
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
pm.max_requests = 1000
; Make sure the FPM workers can reach the environment variables for configuration
clear_env = no
; Catch output from PHP
catch_workers_output = yes
; Remove the 'child 10 said into stderr' prefix in the log and only show the actual message
decorate_workers_output = no
; Enable ping page to use in healthcheck
ping.path = /fpm-ping
php_flag[display_errors] = off
php_flag[display_startup_errors] = off

@ -0,0 +1,105 @@
worker_processes 1;
error_log stderr warn;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# Define custom log format to include reponse times
log_format main_timed '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$request_time $upstream_response_time $pipe $upstream_cache_status';
access_log /dev/stdout main_timed;
error_log /dev/stderr notice;
keepalive_timeout 65;
# Write temporary files to /tmp so they can be created as a non-privileged user
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
# Default server definition
server {
listen [::]:8080 default_server;
listen 8080 default_server;
server_name _;
sendfile off;
root /var/www/html;
index index.php index.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.php
try_files $uri $uri/ /index.php?q=$uri&$args;
}
# Redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/lib/nginx/html;
}
# Allow kuberentes healtcheck
location ~ ^/extras_sapian/health_check_Thohc5cohloh3saic5aj9efaechaepoo.php$ {
access_log off;
error_log off;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
# Pass the PHP scripts to PHP-FPM listening on 127.0.0.1:9000
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 5d;
}
# Deny access to . files, for security
location ~ /\. {
log_not_found off;
deny all;
}
# Allow fpm ping and status from localhost
location ~ ^/(fpm-status|fpm-ping)$ {
access_log off;
allow 127.0.0.1;
deny all;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
gzip on;
gzip_proxied any;
gzip_types text/plain application/xml text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss;
gzip_vary on;
gzip_disable "msie6";
# Include other server configs
include /etc/nginx/conf.d/*.conf;
}

@ -0,0 +1,6 @@
server {
listen localhost:9532;
location /metrics {
stub_status on;
}
}

@ -0,0 +1,3 @@
[www]
pm.status_path = /fpm-status
ping.path = /fpm-ping

@ -0,0 +1,7 @@
[www]
; if we send this to /proc/self/fd/1, it never appears
; see https://bugs.php.net/bug.php?id=73886
; and https://github.com/php/php-src/pull/2310
; sapian: prefer never appears and using access.log fron ngingx
; if this bug is fixed do access.log = /dev/null for avoid duplicity
access.log = /proc/self/fd/1

@ -0,0 +1,8 @@
display_errors = Off
display_startup_errors = Off
[Date]
date.timezone="America/Bogota"
[mail function]
sendmail_path = /usr/sbin/ssmtp -t

@ -0,0 +1,8 @@
# opcache.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=10000

File diff suppressed because it is too large Load Diff

@ -0,0 +1,7 @@
mailhub=mail:587
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
#

@ -0,0 +1,23 @@
[supervisord]
nodaemon=true
logfile=/dev/null
logfile_maxbytes=0
pidfile=/run/supervisord.pid
[program:php-fpm]
command=php-fpm -F -c /etc/php7
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
autorestart=false
startretries=0
[program:nginx]
command=nginx -g 'daemon off;'
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
autorestart=false
startretries=0

@ -0,0 +1,35 @@
# get the Sources
```bash
# install dependencies
git clone --recurse-submodules -j8 --branch agc_2.14_voe git@gogs.sapian.com.co:Sapian/vicidial.git
```
# voe-landing
## Build Setup
```bash
# Goto the Sources
$ cd extras/Sapian/voe-landing/
# install dependencies
$ yarn install
# build for production and launch server
$ yarn build --spa
```
For detailed explanation on how things work, check out [Nuxt.js docs](https://nuxtjs.org).
# Docker Buil
```bash
# Goto the Sources
cd ~/Workspace/vicidial
docker build -t sapian/vicidial-ccweb:1602 -t sapian/vicidial-ccweb:latest -t us.gcr.io/ccoe-246623/sapian/vicidial-ccweb:1602-r3 -t us.gcr.io/ccoe-246623/sapian/vicidial-ccweb:latest .
docker push us.gcr.io/ccoe-246623/sapian/vicidial-ccweb:1602-r6
docker push us.gcr.io/ccoe-246623/sapian/vicidial-ccweb:latest
```

@ -0,0 +1,63 @@
# astguiclient.conf - configuration elements for the astguiclient package
# this is the astguiclient configuration file
# all comments will be lost if you run install.pl again
# Paths used by astGUIclient
PATHhome => /usr/share/astguiclient
PATHlogs => /var/log/astguiclient
PATHagi => /var/lib/asterisk/agi-bin
PATHweb => /var/www/html
PATHsounds => /var/lib/asterisk/sounds
PATHmonitor => /var/spool/asterisk/monitor
PATHDONEmonitor => /var/spool/recordings
# The IP address of this machine
VARserver_ip => 169.254.217.250
# Database connection information
VARDB_server => 127.0.0.1
VARDB_database => asterisk
VARDB_user => cron
VARDB_pass => 1234
VARDB_port => 3306
# Alpha-Numeric list of the astGUIclient processes to be kept running
# (value should be listing of characters with no spaces: 1234568)
# X - NO KEEPALIVE PROCESSES (use only if you want none to be keepalive)
# 1 - AST_update
# 2 - AST_send_listen
# 3 - AST_VDauto_dial
# 4 - AST_VDremote_agents
# 5 - AST_VDadapt (If multi-server system, this must only be on one server)
# 6 - FastAGI_log
# 7 - AST_VDauto_dial_FILL (only for multi-server, this must only be on one server)
# 8 - ip_relay (used for blind agent monitoring)
# 9 - Timeclock auto logout
VARactive_keepalives => X
# Asterisk version VICIDIAL is installed for
VARasterisk_version => 1.8
# FTP recording archive connection information
VARFTP_host => 169.254.217.250
VARFTP_user => cron
VARFTP_pass => test
VARFTP_port => 21
VARFTP_dir => RECORDINGS
VARHTTP_path => http://169.254.217.250
# REPORT server connection information
VARREPORT_host => 169.254.217.250
VARREPORT_user => cron
VARREPORT_pass => test
VARREPORT_port => 21
VARREPORT_dir => REPORTS
# Settings for FastAGI logging server
VARfastagi_log_min_servers => 3
VARfastagi_log_max_servers => 16
VARfastagi_log_min_spare_servers => 2
VARfastagi_log_max_spare_servers => 8
VARfastagi_log_max_requests => 1000
VARfastagi_log_checkfordead => 30
VARfastagi_log_checkforwait => 60

@ -0,0 +1,103 @@
# astguiclient.conf - configuration elements for the astguiclient package
# this is the astguiclient configuration file
# all comments will be lost if you run install.pl again
# Paths used by astGUIclient
PATHhome => /usr/share/astguiclient
PATHlogs => /var/log/astguiclient
PATHagi => /var/lib/asterisk/agi-bin
PATHweb => /var/www/html
PATHsounds => /var/lib/asterisk/sounds
PATHmonitor => /var/spool/asterisk/monitor
PATHDONEmonitor => /var/spool/recordings
# The IP address of this machine
{% if CCWEB_SERVICE_HOST is defined -%}
VARserver_ip => {{CCWEB_SERVICE_HOST}}
{%- else -%}
VARserver_ip => 10.51.0.60
{%- endif %}
# Database connection information
{% if VICDIAL_DB is defined -%}
VARDB_server => {{VICDIAL_DB}}
{%- else -%}
VARDB_server => 10.51.0.60
{%- endif %}
{% if VICDIAL_DB_database is defined -%}
VARDB_database => {{VICDIAL_DB_database}}
{%- else -%}
VARDB_database => asterisk
{%- endif %}
{% if VICDIAL_DB_user is defined -%}
VARDB_user => {{VICDIAL_DB_user}}
{%- else -%}
VARDB_user => ccweb
{%- endif %}
{% if VICDIAL_DB_pass is defined -%}
VARDB_pass => {{VICDIAL_DB_pass}}
{%- else -%}
VARDB_pass => 1234
{%- endif %}
{% if VICDIAL_DB_port is defined -%}
VARDB_port => {{VICDIAL_DB_port}}
{%- else -%}
VARDB_port => 3306
{%- endif %}
# Database Custom connection information
VARDB_custom_user => ccwebcustom
{% if VICDIAL_DB_pass is defined -%}
VARDB_custom_pass => {{VICDIAL_DB_pass}}
{%- else -%}
VARDB_custom_pass => 1234
{%- endif %}
# Alpha-Numeric list of the astGUIclient processes to be kept running
# (value should be listing of characters with no spaces: 1234568)
# X - NO KEEPALIVE PROCESSES (use only if you want none to be keepalive)
# 1 - AST_update
# 2 - AST_send_listen
# 3 - AST_VDauto_dial
# 4 - AST_VDremote_agents
# 5 - AST_VDadapt (If multi-server system, this must only be on one server)
# 6 - FastAGI_log
# 7 - AST_VDauto_dial_FILL (only for multi-server, this must only be on one server)
# 8 - ip_relay (used for blind agent monitoring)
# 9 - Timeclock auto logout
VARactive_keepalives => X
# Asterisk version VICIDIAL is installed for
VARasterisk_version => 13.24.1
# FTP recording archive connection information
VARFTP_host => 169.254.217.250
VARFTP_user => cron
VARFTP_pass => test
VARFTP_port => 21
VARFTP_dir => RECORDINGS
VARHTTP_path => http://169.254.217.250
# REPORT server connection information
VARREPORT_host => 169.254.217.250
VARREPORT_user => cron
VARREPORT_pass => test
VARREPORT_port => 21
VARREPORT_dir => REPORTS
# Settings for FastAGI logging server
VARfastagi_log_min_servers => 3
VARfastagi_log_max_servers => 16
VARfastagi_log_min_spare_servers => 2
VARfastagi_log_max_spare_servers => 8
VARfastagi_log_max_requests => 1000
VARfastagi_log_checkfordead => 30
VARfastagi_log_checkforwait => 60
# Expected DB Schema version for this install
ExpectedDBSchema => 1602

@ -0,0 +1,8 @@
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>

@ -0,0 +1,9 @@
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>

@ -0,0 +1,35 @@
#!/bin/bash
set -e
# Process templates
#find /etc/ -name '*.j2' | while read template; do
# replace templated values with environment variables of the same name
#j2 ${template} > /etc/asterisk/$(basename ${template} .j2)
# remove the template once processed
#rm -f ${template}
#done
j2 /etc/astguiclient.conf.j2 > /etc/astguiclient.conf
if [[ -z "${LOGO_URL}" ]]; then
echo "Using default Vicidial Logo"
else
curl -o /var/www/html/images/vicidial_admin_web_logo.png ${LOGO_URL}
rm /var/www/html/images/VICIchat_powered_logo.png
ln -s /var/www/html/images/vicidial_admin_web_logo.png /var/www/html/images/VICIchat_powered_logo.png
fi
if [[ -z "${DEV}" ]]; then
echo "production MODE"
#cp "$PHP_INI_DIR/php.ini-production" /etc/php7/php-fpm.d/php.ini
else
echo "dev MODE"
#cp "$PHP_INI_DIR/php.ini-development" /etc/php7/php-fpm.d/php.ini
touch /var/www/html/agc/phpinfo.php
echo '<?php phpinfo(); ?>' >> /var/www/html/agc/phpinfo.php
echo '<?php (is_array(opcache_get_status()) ? 'enabled' : 'disabled'); ?>' >> /var/www/html/agc/opcache.php
fi
exec "$@"

@ -0,0 +1,4 @@
<?php
$date = new DateTime();
echo $date->getTimestamp();
?>

@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

@ -0,0 +1,34 @@
apiVersion: v2
name: ccagc
description: Vicidial Webserver Server.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.8.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 2.14b0.5-1602-r24
home: https://git.sapian.com.co/Sapian/callcenter-online-editon
icon: https://www.sapian.cloud/wp-content/uploads/2020/05/Logo_CC_72dpi.png
keywords:
- web
- application
- php
- ccagc
- perl
- vicidial
- sapian
- voe
- prometheus
sources:
- https://git.sapian.com.co/Sapian/callcenter-online-editon
- https://git.sapian.com.co/Sapian/vicidial/src/agc_2.14_voe
- https://github.com/bitnami/bitnami-docker-apache-exporter
annotations:
category: Callcenter

@ -0,0 +1,12 @@
# 1.8.0
* Update template for certificates used for apiVersion cert-manager.io/v1
# 1.7.0
* ADD mail smarthost point to service/mail in the namespaces
## 1.5.0
* Add Middleware to redirect http to https

@ -0,0 +1,178 @@
# Apache
The [Apache HTTP Server Project](https://httpd.apache.org/) is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.
The Apache HTTP Server ("httpd") was launched in 1995 and it has been the most popular web server on the Internet since April 1996. It has celebrated its 20th birthday as a project in February 2015.
## TL;DR
```bash
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm install my-release bitnami/apache
```
## Introduction
Bitnami charts for Helm are carefully engineered, actively maintained and are the quickest and easiest way to deploy containers on a Kubernetes cluster that are ready to handle production workloads.
This chart bootstraps a [Apache](https://github.com/bitnami/bitnami-docker-apache) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
Bitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This Helm chart has been tested on top of [Bitnami Kubernetes Production Runtime](https://kubeprod.io/) (BKPR). Deploy BKPR to get automated TLS certificates, logging and monitoring for your applications.
## Prerequisites
- Kubernetes 1.12+
- Helm 2.12+ or Helm 3.0-beta3+
## Installing the Chart
To install the chart with the release name `my-release`:
```bash
$ helm install ccagc --set externalDatabase.host=mariadb-cc-01-med-la27-andar-local.frp.svc.cluster.local --set externalDatabase.user=chat --set externalDatabase.password=changeme --set logoUrl=https://minio.sapian.cloud/sapian-hackmd-public-bucket/uploads/upload_e1954dac79773def38ce541c39ddac13.png .
```
These commands deploy Apache on the Kubernetes cluster in the default configuration.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```bash
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Parameters
The following tables lists the configurable parameters of the Apache chart and their default values.
| Parameter | Description | Default |
|----------------------------------|---------------------------------------------------------|--------------------------------------------------------------|
| `global.imageRegistry` | Global Docker image registry | `nil` |
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
| `image.registry` | Apache Docker image registry | `docker.io` |
| `image.repository` | Apache Docker image name | `bitnami/apache` |
| `image.tag` | Apache Docker image tag | `{TAG_NAME}` |
| `image.pullPolicy` | Apache Docker image pull policy | `Always` |
| `image.pullSecrets` | Specify Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
| `git.registry` | Git image registry | `docker.io` |
| `git.repository` | Git image name | `bitnami/git` |
| `git.tag` | Git image tag | `{TAG_NAME}` |
| `git.pullPolicy` | Git image pull policy | `Always` |
| `git.pullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
| `replicaCount` | Number of replicas of the Apache deployment | `docker.io` |
| `htdocsConfigMap` | ConfigMap with the server static content | `nil` |
| `htdocsPVC` | PVC with the server static content | `nil` |
| `vhostsConfigMap` | ConfigMap with the virtual hosts content | `nil` |
| `httpdConfConfigMap` | ConfigMap with the httpd.conf content | `nil` |
| `cloneHtdocsFromGit.enabled` | Get the server static content from a git repository | `false` |
| `cloneHtdocsFromGit.repository` | Repository to clone static content from | `nil` |
| `cloneHtdocsFromGit.branch` | Branch inside the git repository | `nil` |
| `cloneHtdocsFromGit.interval` | Interval for sidecar container pull from the repository | `60` |
| `cloneHtdocsFromGit.resources` | Init container git resource requests/limit | `{}` |
| `podAnnotations` | Pod annotations | `{}` |
| `livenessProbe.enabled` | Enable liveness probe | `true` |
| `livenessProbe.path` | Path to access on the HTTP server | `/` |
| `readinessProbe.enabled` | Enable readiness probe | `true` |
| `readinessProbe.path` | Path to access on the HTTP server | `/` |
| `ingress.enabled` | Enable ingress controller resource | `false` |
| `ingress.hostname` | Default host for the ingress resource | `example.local` |
| `ingress.certManager` | Add annotations for cert-manager | `false` |
| `ingress.annotations` | Ingress annotations | `[]` |
| `ingress.hosts[0].name` | Hostname to your Apache installation | `example.local` |
| `ingress.hosts[0].path` | Path within the url structure | `/` |
| `ingress.tls[0].hosts[0]` | TLS hosts | `example.local` |
| `ingress.tls[0].secretName` | TLS Secret (certificates) | `example.local-tls` |
| `ingress.secrets[0].name` | TLS Secret Name | `nil` |
| `ingress.secrets[0].certificate` | TLS Secret Certificate | `nil` |
| `ingress.secrets[0].key` | TLS Secret Key | `nil` |
| `affinity` | Map of node/pod affinities | `{}` (The value is evaluated as a template) |
| `nodeSelector` | Node labels for pod assignment | `{}` (The value is evaluated as a template) |
| `tolerations` | Tolerations for pod assignment | `[]` (The value is evaluated as a template) |
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
| `metrics.image.registry` | Apache exporter image registry | `docker.io` |
| `metrics.image.repository` | Apache exporter image name | `lusotycoon/apache-exporter` |
| `metrics.image.tag` | Apache exporter image tag | `v0.5.0` |
| `metrics.image.pullPolicy` | Apache exporter image pull policy | `IfNotPresent` |
| `metrics.image.pullSecrets` | Specify Docker registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | `{prometheus.io/scrape: "true", prometheus.io/port: "9117"}` |
| `metrics.resources` | Exporter resource requests/limit | {} |
| `service.type` | Kubernetes Service type | `LoadBalancer` |
| `service.port` | Service HTTP port | `80` |
| `service.httpsPort` | Service HTTPS port | `443` |
| `service.nodePorts.http` | Kubernetes http node port | `""` |
| `service.nodePorts.https` | Kubernetes https node port | `""` |
| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` |
| `service.loadBalancerIP` | LoadBalancer service IP address | `""` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```bash
$ helm install my-release \
--set imagePullPolicy=Always \
bitnami/apache
```
The above command sets the `imagePullPolicy` to `Always`.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
```bash
$ helm install my-release -f values.yaml bitnami/apache
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Configuration and installation details
### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)
It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.
Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.
### Deploying your custom web application
The Apache chart allows you to deploy a custom web application using one of the following methods:
- Cloning from a git repository: Set `cloneHtdocsFromGit.enabled` to `true` and set the repository and branch using the `cloneHtdocsFromGit.repository` and `cloneHtdocsFromGit.branch` parameters. A sidecar will also pull the latest changes in an interval set by `cloneHtdocsFromGit.interval`.
- Providing a ConfigMap: Set the `htdocsConfigMap` value to mount a ConfigMap in the Apache htdocs folder.
- Using an existing PVC: Set the `htdocsPVC` value to mount an PersistentVolumeClaim with the web application content.
You can deploy a example web application using git deploying the chart with the following parameters:
```console
cloneHtdocsFromGit.enabled=true
cloneHtdocsFromGit.repository=https://github.com/mdn/beginner-html-site-styled.git
cloneHtdocsFromGit.branch=master
```
To use your own `httpd.conf` file you can mount it using the `httpdConfConfigMap` parameter, which is the name of a Config Map with the contents of your `httpd.conf`. Additionaly, you can copy your `httpd.conf` to `/files/httpd.conf` in your current working directory to mount it to the container.
You may also want to mount different virtual host configurations. This can be done using the `vhostsConfigMap` value. This is a pointer to a ConfigMap with the desired Apache virtual host configurations. You can also copy your virtual host configurations under the `files/vhosts/` directory in your current working directory to mount them as a Config Map to the container.
## Notable changes
### 7.0.0
This release updates the Bitnami Apache container to `2.4.41-debian-9-r40`, which is based on Bash instead of Node.js.
### 6.0.0
This release allows you to use your custom static applicaton. In order to do so, check [this section](#deploying-your-custom-web-application).
## Upgrading
### To 2.0.0
Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments.
Use the workaround below to upgrade from versions previous to 2.0.0. The following example assumes that the release name is apache:
```console
$ kubectl patch deployment apache --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]'
```

@ -0,0 +1,21 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "ccagc.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "ccagc.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "ccagc.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "ccagc.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

@ -0,0 +1,133 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "ccagc.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "ccagc.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "ccagc.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "ccagc.labels" -}}
helm.sh/chart: {{ include "ccagc.chart" . }}
{{ include "ccagc.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Create pod labels for ccagc
*/}}
{{- define "ccagc.podLabels" -}}
{{- if .Values.podLabels }}
{{ toYaml .Values.podLabels }}
{{- end -}}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "ccagc.selectorLabels" -}}
app.kubernetes.io/name: {{ include "ccagc.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "ccagc.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "ccagc.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Return the proper Vicidial ccagc image name
*/}}
{{- define "ccagc.image" -}}
{{- $registryName := .Values.image.registry -}}
{{- $repositoryName := .Values.image.repository -}}
{{- $tag := .Values.image.tag | toString -}}
{{/*
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
Also, we can't use a single if because lazy evaluation is not an option
*/}}
{{- if .Values.global }}
{{- if .Values.global.imageRegistry }}
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
{{- else -}}
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
{{- end -}}
{{- else -}}
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
{{- end -}}
{{- end -}}
{{/*
Return the proper image name (for the metrics image)
*/}}
{{- define "ccagc.metrics.image" -}}
{{- $registryName := .Values.metrics.image.registry -}}
{{- $repositoryName := .Values.metrics.image.repository -}}
{{- $tag := .Values.metrics.image.tag | toString -}}
{{/*
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
Also, we can't use a single if because lazy evaluation is not an option
*/}}
{{- if .Values.global }}
{{- if .Values.global.imageRegistry }}
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
{{- else -}}
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
{{- end -}}
{{- else -}}
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
{{- end -}}
{{- end -}}
{{- define "ccagc.databaseSecretName" -}}
{{- printf "%s-%s" .Release.Name "externaldb" -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for deployment.
*/}}
{{- define "ccagc.deployment.apiVersion" -}}
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "extensions/v1beta1" -}}
{{- else -}}
{{- print "apps/v1" -}}
{{- end -}}
{{- end -}}

@ -0,0 +1,22 @@
{{- if .Values.ingressRoute.tls.enabled -}}
{{- $fullName := include "ccagc.fullname" . -}}
{{- $Host := .Values.ingressRoute.host -}}
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ $fullName }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- with .Values.ingressRoute.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
secretName: {{ printf "%s-%s" .Release.Name "tls-le" }}
issuerRef:
# The issuer created previously
name: letsencrypt-production-issuer
kind: ClusterIssuer
dnsNames:
- {{ $Host | quote }}
{{- end }}

@ -0,0 +1,135 @@
apiVersion: {{ template "ccagc.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ include "ccagc.fullname" . }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- include "ccagc.podLabels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "ccagc.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "ccagc.selectorLabels" . | nindent 8 }}
{{- include "ccagc.podLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "ccagc.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: {{ template "ccagc.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: VOE
value: "1"
- name: VICDIAL_DB
value: {{ required "A valid .Values.externalDatabase.host entry required!" .Values.externalDatabase.host | quote }}
- name: VICDIAL_DB_port
value: {{ required "A valid .Values.externalDatabase.port entry required!" .Values.externalDatabase.port | quote }}
- name: VICDIAL_DB_database
value: {{ required "A valid .Values.externalDatabase.database entry required!" .Values.externalDatabase.database | quote }}
- name: VICDIAL_DB_user
value: {{ required "A valid .Values.externalDatabase.user entry required!" .Values.externalDatabase.user | quote }}
- name: LOGO_URL
value: {{ .Values.logoUrl | quote }}
- name: VICDIAL_DB_pass
valueFrom:
secretKeyRef:
name: {{ include "ccagc.databaseSecretName" . }}
key: mariadb-root-password
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /extras_sapian/health_check_Thohc5cohloh3saic5aj9efaechaepoo.php
port: http
initialDelaySeconds: 180
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /extras_sapian/health_check_Thohc5cohloh3saic5aj9efaechaepoo.php
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 5
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- if .Values.metrics.nginx.enabled }}
- name: nginx-metrics
image: "{{ .Values.metrics.nginx.image.repository }}:{{ .Values.metrics.nginx.image.tag }}"
imagePullPolicy: {{ .Values.metrics.nginx.image.pullPolicy | quote }}
command: ['/usr/bin/exporter', '-nginx.scrape-uri', 'http://127.0.0.1:9532/metrics', '-nginx.retries', '5']
ports:
- name: nginx-metrics
containerPort: 9113
livenessProbe:
httpGet:
path: /metrics
port: nginx-metrics
initialDelaySeconds: 15
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /metrics
port: nginx-metrics
initialDelaySeconds: 5
timeoutSeconds: 1
{{- if .Values.metrics.nginx.resources }}
resources: {{- toYaml .Values.metrics.nginx.resources | nindent 12 }}
{{- end }}
{{- end }}
{{- if .Values.metrics.phpfpm.enabled }}
- name: phpfpm-metrics
image: "{{ .Values.metrics.phpfpm.image.repository }}:{{ .Values.metrics.phpfpm.image.tag }}"
imagePullPolicy: {{ .Values.metrics.phpfpm.image.pullPolicy | quote }}
args: ["--phpfpm.scrape-uri", "tcp://127.0.0.1:9000/fpm-status"]
ports:
- name: phpfpm-metrics
containerPort: 9253
livenessProbe:
httpGet:
path: /metrics
port: phpfpm-metrics
initialDelaySeconds: 15
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /metrics
port: phpfpm-metrics
initialDelaySeconds: 5
timeoutSeconds: 1
{{- if .Values.metrics.phpfpm.resources }}
resources: {{- toYaml .Values.metrics.phpfpm.resources | nindent 12 }}
{{- end }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

@ -0,0 +1,8 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ printf "%s-%s" .Release.Name "externaldb" }}
labels: {{- include "ccagc.labels" . | nindent 4 }}
type: Opaque
data:
mariadb-root-password: {{ required "A MySQL Database Password is required!" .Values.externalDatabase.password | b64enc | quote }}

@ -0,0 +1,28 @@
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "ccagc.fullname" . }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "ccagc.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
{{- end }}
{{- end }}

@ -0,0 +1,28 @@
{{- if .Values.ingressRoute.enabled -}}
{{- $fullName := include "ccagc.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- $Host := .Values.ingressRoute.host -}}
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: https-{{ $fullName }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- with .Values.ingressRoute.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
entryPoints:
- websecure
routes:
- match: Host(`{{ $Host }}`) && PathPrefix(`/agc/`)
kind: Rule
services:
- name: {{ $fullName }}
port: {{ $svcPort }}
{{- if .Values.ingressRoute.tls.enabled }}
tls:
secretName: {{ printf "%s-%s" .Release.Name "tls-le" }}
{{- end }}
{{- end }}

@ -0,0 +1,17 @@
{{- if .Values.ingressRoute.enabled -}}
{{- $fullName := include "ccagc.fullname" . -}}
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: https-redirect-{{ $fullName }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- with .Values.ingressRoute.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
redirectScheme:
scheme: https
permanent: true
{{- end }}

@ -0,0 +1,26 @@
{{- if .Values.ingressRoute.enabled -}}
{{- $fullName := include "ccagc.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- $Host := .Values.ingressRoute.host -}}
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: http-{{ $fullName }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- with .Values.ingressRoute.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
entryPoints:
- web
routes:
- match: Host(`{{ $Host }}`) && PathPrefix(`/`)
kind: Rule
services:
- name: {{ $fullName }}
port: {{ $svcPort }}
middlewares:
- name: https-redirect-{{ $fullName }}
{{- end }}

@ -0,0 +1,41 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "ccagc.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ . }}
backend:
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}

@ -0,0 +1,25 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "ccagc.fullname" . }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
{{- if .Values.metrics.nginx.enabled }}
- name: nginx-metrics
port: 9113
targetPort: nginx-metrics
{{- end }}
{{- if .Values.metrics.phpfpm.enabled }}
- name: phpfpm-metrics
port: 9253
targetPort: phpfpm-metrics
{{- end }}
selector:
{{- include "ccagc.selectorLabels" . | nindent 4 }}

@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "ccagc.serviceAccountName" . }}
labels:
{{- include "ccagc.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

@ -0,0 +1,28 @@
{{- if .Values.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "ccagc.fullname" . }}-nginx
{{- if .Values.metrics.serviceMonitor.namespace }}
namespace: {{ .Values.metrics.serviceMonitor.namespace }}
{{- end }}
labels: {{- include "ccagc.labels" . | nindent 4 }}
{{- range $key, $value := .Values.metrics.serviceMonitor.selector }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
selector:
matchLabels: {{- include "ccagc.labels" . | nindent 6 }}
endpoints:
- port: nginx-metrics
path: /metrics
{{- if .Values.metrics.serviceMonitor.interval }}
interval: {{ .Values.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
{{- end }}

@ -0,0 +1,28 @@
{{- if .Values.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "ccagc.fullname" . }}-phpfpm
{{- if .Values.metrics.serviceMonitor.namespace }}
namespace: {{ .Values.metrics.serviceMonitor.namespace }}
{{- end }}
labels: {{- include "ccagc.labels" . | nindent 4 }}
{{- range $key, $value := .Values.metrics.serviceMonitor.selector }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
selector:
matchLabels: {{- include "ccagc.labels" . | nindent 6 }}
endpoints:
- port: phpfpm-metrics
path: /metrics
{{- if .Values.metrics.serviceMonitor.interval }}
interval: {{ .Values.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
{{- end }}

@ -0,0 +1,15 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "ccagc.fullname" . }}-test-connection"
labels:
{{- include "ccagc.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "ccagc.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

@ -0,0 +1,324 @@
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"affinity": {
"type": "object"
},
"autoscaling": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"maxReplicas": {
"type": "integer"
},
"minReplicas": {
"type": "integer"
},
"targetCPUUtilizationPercentage": {
"type": "integer"
}
}
},
"externalDatabase": {
"type": "object",
"properties": {
"database": {
"type": "string"
},
"host": {
"type": "string"
},
"password": {
"type": "string"
},
"port": {
"type": "integer"
},
"user": {
"type": "string"
}
}
},
"fullnameOverride": {
"type": "string"
},
"image": {
"type": "object",
"properties": {
"pullPolicy": {
"type": "string"
},
"registry": {
"type": "string"
},
"repository": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"imagePullSecrets": {
"type": "array"
},
"ingress": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"enabled": {
"type": "boolean"
},
"hosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"paths": {
"type": "array"
}
}
}
},
"tls": {
"type": "array"
}
}
},
"ingressRoute": {
"type": "object",
"properties": {
"accessControlAllowOriginList": {
"type": "array",
"items": {
"type": "string"
}
},
"annotations": {
"type": "object"
},
"cors": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
}
},
"enabled": {
"type": "boolean"
},
"host": {
"type": "string"
},
"tls": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
}
}
}
},
"metrics": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"nginx": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"image": {
"type": "object",
"properties": {
"pullPolicy": {
"type": "string"
},
"repository": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"podAnnotations": {
"type": "object"
},
"resources": {
"type": "object",
"properties": {
"limits": {
"type": "object"
},
"requests": {
"type": "object"
}
}
},
"service": {
"type": "object",
"properties": {
"annotations": {
"type": "object",
"properties": {
"prometheus.io/port": {
"type": "string"
},
"prometheus.io/scrape": {
"type": "string"
}
}
},
"port": {
"type": "integer"
}
}
}
}
},
"phpfpm": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"image": {
"type": "object",
"properties": {
"pullPolicy": {
"type": "string"
},
"repository": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"podAnnotations": {
"type": "object"
},
"resources": {
"type": "object",
"properties": {
"limits": {
"type": "object"
},
"requests": {
"type": "object"
}
}
},
"service": {
"type": "object",
"properties": {
"annotations": {
"type": "object",
"properties": {
"prometheus.io/port": {
"type": "string"
},
"prometheus.io/scrape": {
"type": "string"
}
}
},
"port": {
"type": "integer"
}
}
}
}
},
"serviceMonitor": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"selector": {
"type": "object",
"properties": {
"prometheus": {
"type": "string"
}
}
}
}
}
}
},
"nameOverride": {
"type": "string"
},
"nodeSelector": {
"type": "object"
},
"podAnnotations": {
"type": "object"
},
"podLabels": {
"type": "object",
"properties": {
"app.kubernetes.io/voe-type": {
"type": "string"
}
}
},
"podSecurityContext": {
"type": "object"
},
"replicaCount": {
"type": "integer"
},
"resources": {
"type": "object"
},
"securityContext": {
"type": "object"
},
"service": {
"type": "object",
"properties": {
"port": {
"type": "integer"
},
"type": {
"type": "string"
}
}
},
"serviceAccount": {
"type": "object",
"properties": {
"annotations": {
"type": "object"
},
"create": {
"type": "boolean"
},
"name": {
"type": "string"
}
}
},
"tolerations": {
"type": "array"
}
}
}

@ -0,0 +1,87 @@
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"externalDatabase": {
"type": "object",
"title": "External Database Details",
"description": "If MariaDB is disabled. Use this section to specify the external database details",
"form": true,
"properties": {
"host": {
"type": "string",
"form": true,
"title": "Database Host"
},
"user": {
"type": "string",
"form": true,
"title": "Database Username"
},
"password": {
"type": "string",
"form": true,
"title": "Database Password"
},
"database": {
"type": "string",
"form": true,
"title": "Database Name"
},
"port": {
"type": "integer",
"form": true,
"title": "Database Port"
}
}
},
"ingressRoute": {
"type": "object",
"title": "Traefik Ingress Route Details",
"form": true,
"properties": {
"annotations": {
"type": "object"
},
"enabled": {
"type": "boolean",
"form": true
},
"host": {
"type": "string",
"form": true,
"title": "Use a custom hostname",
"description": "Enable the ingress resource that allows you to access the ccagc installation."
},
"tls": {
"type": "object",
"form": true,
"title": "Create a TLS secret for IngressRoute",
"properties": {
"enabled": {
"type": "boolean",
"form": true,
"title": "Create a TLS secret",
"description": "Enable TLS resource that allows you to access the ccagc installation via https."
}
}
}
}
},
"replicaCount": {
"type": "integer",
"form": true,
"title": "Number of Replicas"
},
"metrics": {
"type": "object",
"form": true,
"properties": {
"enabled": {
"type": "boolean",
"form": true
}
}
}
}
}

@ -0,0 +1,250 @@
# Default values for ccagc.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
registry: us.gcr.io
repository: ccoe-246623/sapian/vicidial-ccweb-agc
tag: 1602-r24
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
# pullSecrets:
# - myRegistryKeySecretName
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
#logoUrl: https://sapian.voe.dialbox.cloud/vicidial/images/vicidial_admin_web_logoSAPIAN.png
externalDatabase:
## Database host
host: localhost
## Database host
port: 3306
## Database user
# Todo: Change to ccagc on ccdb helm/chart
user: ccweb
## Database password
password: ""
## Database name
database: asterisk
## Additional pod labels
##
podLabels:
app.kubernetes.io/voe-type: webapp
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
ingressRoute:
enabled: true
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
host: chart-example.agc.voe.dialbox.cloud
tls:
enabled: true
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths: []
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
nodeSelector: {}
tolerations: []
affinity: {}
## Prometheus Exporter / Metrics
##
metrics:
enabled: true
nginx:
enabled: true
## NGINX Prometheus Exporter image
## ref: https://hub.docker.com/r/nginx/nginx-prometheus-exporter/tags/
##
image:
repository: docker.io/nginx/nginx-prometheus-exporter
tag: 0.8.0
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
# pullSecrets:
# - myRegistryKeySecretName
## Prometheus exporter pods' annotation and labels
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
##
podAnnotations: {}
## Prometheus exporter service parameters
##
service:
## NGINX Prometheus exporter port
##
port: 9113
## Annotations for the Prometheus exporter service
##
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "{{ .Values.metrics.nginx.service.port }}"
## NGINX Prometheus exporter resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
limits: {}
# cpu: 100m
# memory: 128Mi
requests: {}
# cpu: 100m
# memory: 128Mi
phpfpm:
enabled: true
## phpfpm Exporter image
## ref: https://hub.docker.com/r/hipages/php-fpm_exporter
##
image:
repository: docker.io/hipages/php-fpm_exporter
tag: 2.0.1
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
# pullSecrets:
# - myRegistryKeySecretName
## Prometheus exporter pods' annotation and labels
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
##
podAnnotations: {}
## Prometheus exporter service parameters
##
service:
## NGINX Prometheus exporter port
##
port: 9253
## Annotations for the Prometheus exporter service
##
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "{{ .Values.metrics.phpfpm.service.port }}"
## NGINX Prometheus exporter resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
limits: {}
# cpu: 100m
# memory: 128Mi
requests: {}
# cpu: 100m
# memory: 128Mi
## Prometheus Operator ServiceMonitor configuration
##
serviceMonitor:
enabled: true
## Namespace in which Prometheus is running
##
# namespace: monitoring
## Interval at which metrics should be scraped.
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
##
# interval: 10s
## Timeout after which the scrape is ended
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
##
# scrapeTimeout: 10s
## ServiceMonitor selector labels
## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
##
# selector:
# prometheus: kube-prometheus
Loading…
Cancel
Save