Skip to main content

Deployment in sealos

Sealos is an open-source Kubernetes deployment system that allows us to quickly create an on-demand, pay-as-you-go application cluster.

First, enter Sealos and open "Application Management"

Create a new application

Create dependencies

As an enterprise-level application, tailchat has the minimum dependencies of mongodb, redis, and minio. Let's create them one by one.

MongoDB

For convenience, we will fix one instance and bind it to local storage. The image used is mongo:4. Note that because we did not set a password for the database, do not provide network services to the public network. The container exposes port 27017, which is the default database service port. The content is as follows:

Click "Deploy Application" to submit the deployment. Wait patiently for a while, and you can see that the application has started up.

Note: that the initial allocation of 64m is too small for MongoDB, so I changed it to 128m by modifying the application. Resource allocation can be changed at any time, which is also a convenient feature of Sealos/Kubernetes.

Minio

Next, we will create Minio, an open-source object storage service. We can also quickly create it through Sealos's UI. The image used is minio/minio. Note that we need to make some adjustments:

  • Expose port: 9000
  • Change the run command to: minio
  • Change the command parameters to: server /data
  • Set environment variables:
    • MINIO_ROOT_USER: tailchat
    • MINIO_ROOT_PASSWORD: com.msgbyte.tailchat
  • Local storage: /data

The final result is as follows:

Click the "Deploy" button and you can see that the service has started up normally.

Redis

Finally, we need to deploy Redis as a content cache and message forwarding. The image used is redis:alpine, and the exposed port is 6379. The final result is as follows:

Create Tailchat itself

At this point, all the dependencies required by Tailchat have been deployed, as shown below:

Now we can deploy the Tailchat itself. The Tailchat itself will be relatively complex, but because Sealos is purely UI-based, it will not be too complicated.

  • Use image: moonrailgun/tailchat
  • Expose port: 11000 (remember to open external access)
  • Configure environment variables as follows:
    SERVICEDIR=services,plugins
    TRANSPORTER=redis://redis:6379
    REDIS_URL=redis://redis:6379
    MONGO_URL=mongodb://mongo/tailchat
    MINIO_URL=minio:9000
    MINIO_USER=tailchat
    MINIO_PASS=com.msgbyte.tailchat

The final effect is as follows:

After waiting patiently for a while, you can see that the Tailchat service has started up.

Preview service

First, we can check the availability of the Tailchat service by adding /health to the external address provided by the service, such as https://<xxxxxxxxxx>.cloud.sealos.io/health. When it starts up, the Tailchat service will return content like this:

This JSON string contains the image version used, node name, system usage, and microservice loading status. Here we can see that my common services, such as user/chat.message, and some services with plugin prefixes such as plugin.registry, have all started up normally, indicating that our server is running normally. Now we can directly access our external address and see that after a short loading time, the page opens normally and automatically jumps to the login page.

Register an account casually, and you can see that we can enter the main interface of Tailchat normally, as shown in the following figure:

At this point, our service has successfully landed in Sealos.

Scaling service

Of course, as a distributed architecture system, Tailchat naturally supports horizontal scaling. In Sealos, scaling is also very simple. Just modify the number of instances through the change operation:

At this point, when we access https://<xxxxxxxxxx>.cloud.sealos.io/health, we can see that we can access different nodes.

Add Tailchat entry to desktop

Open Terminal, enter vim app.yml to create and edit a configuration file

Enter the following content, note that the url should be replaced with the url deployed by yourself

apiVersion: app.sealos.io/v1
kind: App
metadata:
name: tailchat-app-entry
spec:
name: Tailchat
icon:
type: iframe
data:
url: <Your url>
desc:
icon: https://tailchat.msgbyte.com/img/logo.svg
menuData:
nameColor: text-black
helpDropDown:
helpDocs:
displayType: normal

Press esc to exit edit mode, press :wq to save and exit vim

Type kubectl apply -f app.yml to start the configuration.

After refreshing the page, we can see that our entry appears on the desktop of sealos