Deployment

Now that the Kubernetes cluster is ready, it’s time to let Ansible install the software into the target machines according with our configuration. This is also achieved by using the ansible-playbook command, which runs the Ansible playbooks, executing the defined tasks on the targeted hosts according to a set of tags.

A tag is an attribute that you can set to an Ansible structure (plays, roles, tasks), and then when you run a playbook you can use –tags or –skip-tags to execute a subset of tasks. In other words, tags are a way of telling Ansible which tasks it should perform and which not. In our case, the tag name explain what it does so it’s quite straightforward to understand what you are doing.

Please note that you don’t need to install all the tags listed below, as your deployment might not require all of them. For example, if you don’t plan to deploy a SIP integration, you can skip it.

Install dependencies in the the cluster nodes:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "pre-installation"

Install both registry credentials.

  • First set registryServer as registry.quobis.com, uncomment the dockerPassword related to this registry, and run:

$ ansible-playbook -i inventory/<inventory name> main.yml --tags "create-old-registry-secret"
  • Then, set registryServer as registry.gitlab.com, uncomment the dockerPassword related to this registry and run:

    $ ansible-playbook -i inventory/<inventory name> main.yml --tags "create-registry-secret"
    

For on-prem deployments, install Nginx service:

$ ansible-playbook -i inventory/<inventory name> main.yml --tags "nginx-install"
$ ansible-playbook -i inventory/<inventory name> main.yml --tags "nginx-deploy"

Create the PV and PVC needed to the cluster:

$ ansible-playbook -i inventory/<inventory name> main.yml --tags "persistent-deploy"

If the database is included in the Kubernetes cluster, you need to install the following tag as well:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "database-cluster-operator-deploy"

Deploy the core services required in any deployment:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "message-broker-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "kitter-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "erebus-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "storage-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "qss-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sfu-dispatcher-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sfu-wrapper-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "postgresql-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "xmpp-server-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "keycloak-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sippo-server-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sfu-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "audiomixer-deploy"

Deploy Quobis collaborator, if required:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "webphone-deploy"

Deploy Quobis manager, if required:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "manager-deploy"

Deploy Nginx-ingress to have access to the cluster:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "nginx-ingress-deploy"

Deploy the cluster maintainer:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sippo-maintainer-persistent-deploy"

Just in those scenarios where SIP integration is needed, you must deploy the SIP proxy.

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sip-proxy-persistent-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sip-proxy-deploy"

Recording: depending on the type of storage, you will need to deploy the EFS or NFS persistent volumes to persist the recordings.

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "recording-nfs-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "recording-efs-deploy"

Now that the recording storage is ready, you can deploy the recording service:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "recording-deploy"

Kubernetes API deployment:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "kapi-deploy"

Now you can deploy all the pods related with the monitoring of the platform. A new namespace, named “monitoring”, is created in the cluster to handle all these pods that share a common monitoring functionality:

$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "monitoring-namespace-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "monitoring-persistent-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "prometheus-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "loki-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "promtail-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "sippo-exporter-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "node-exporter-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "grafana-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "support-sql-deploy"
$ ansible-playbook -i inventory/<inventory name> --vault-id <inventory name>@prompt main.yml --tags "homer-deploy"

Congratulations! These are all the required playbooks that need to be deployed to finish the Quobis wac installation. In the next section you’ll learn how to check that everything is working properly.