This website uses cookies. By continuing to browse this site, you agree to this use. Learn more

Get ready with Walrus-From DevOps and developers' perspectives

2023-08-21
Get ready with Walrus-From DevOps and developers' perspectives

Walrus a brand new application deployment management platform, has finally been released officially. Walrus well adopts the concept of platform engineering, and it provides a user-friendly and consistent application management and deployment experience for the development as well as for operations teams, by reducing the complexity of infrastructure operations. Walrus allows DevOps engineers focus more on the infrastructure and developers can deploy and manage applications without needing extensive knowledge of infrastructure.

In this article, we will elaborate on how to build a Java Web service from source code and deploy it to Kubernetes with Walrus from the perspectives of a DevOps engineer and a developer.

From DevOps Perspective

Peter is a DevOps engineer at Alpha Company, and he now needs to set up a self-service platform for the development team, who may not be familiar with containers and Kubernetes.

He performs the following preparations:

  1. Prepare a Linux server with at least 4 CPUs, 8GB of memory, and at least 50GB of free disk space.

  2. Install Docker following the instructions in the Docker official documentation

  3. Open ports 80and 443 on the server.

  4. Install a Kubernetes cluster and obtain the Kubeconfig file.


Deployment

Execute the following command to start the Walrus service:

    sudo docker run -d --privileged --restart=always -p 80:80 -p 443:443 --name walrus sealio/walrus:v0.3.1

Access

Access Walrus's UI through https://<server-address>.  

Upon the first login, follow the UI instructions to run the following command on the server to obtain the initial admin password:

    sudo docker logs walrus 2>&1 | grep "Bootstrap Admin Password"

Login to Walrus with the username admin and the initial administrator password, and set a new password and Walrus's access address as prompted by the UI.

Configure Image Repository Authentication Key

Configure a test account for the image repository for developers' use:

  1. Go to the Operations Center -> Global Keys menu, click the New Key button.

  2. Fill in REGISTRY_USERNAME in the Name field and the image repository authentication username in the Content field, then click Save.

  3. Click the New Key button again.

  4. Fill in REGISTRY_PASSWORD in the Name field and the image repository authentication password in the Content field, then click  Save.


Configure Kubernetes and Environment

Add the Kubernetes cluster as the deployment target for the application:

  1. Go to the Operations Center -> Connectors menu, click the New Connector button.

  2. Enter test-k8s in the Name field and paste the prepared cluster Kubeconfig file into the Kubeconfig field, then click Save.

  3. Go to the Operations Center -> Environments menu, click the New Environment button.

  4. Enter development in the Name field.

  5. Click the Add Connector button, select the test-k8s connector, and click Save.


Note:  
Connectors are abstract objects that integrate with various infrastructure and services, such as Kubernetes, public/private clouds, virtual machines, version control systems, and more.  

Environments are the deployment targets for applications, and they can be associated with multiple connectors.  

Now Peter has completed the infrastructure setup! He can integrate various infrastructures and add application modules with DevOps best practices for the development team to use in the Seal platform. For the task mentioned here could be accomplished with Walrus built-in moduules

From Developer's Perspective

John is a developer at Alpha Company, and he has no sufficient knowledge on Kubernetes. He would like to quickly set up a development test environment (self-service) without submitting tickets to the DevOps team.  
 
Demo repository is here: https://github.com/seal-demo/spring-boot-docker-sample

Creating the Application

John logs into the Walrus platform and performs the following steps:

  1. Go to the Application Management -> "Applications" menu, click the New Application button.

  2. Enter myapp in the "Name" field, click the + button in the module configuration section.

  3. Enter s2i in the module name field, choose build-container-image from the module list, and enter the Git URL https://github.com/seal-demo/spring-boot-docker-sample

  4. Click the "Build" tab, enter the image name registry.alpha.org/myproject/myimage:latest (Note: This is the repository address for Yan's Alpha Company; replace it with your own repository address).

  5. Check Registry Authentication and enter ${secret.REGISTRY_USERNAME} in the "Username" field and ${secret.REGISTRY_PASSWORD} in the "Password" field. Walrus UI will guide you to fill in the references to the configured keys. Click OK to save the configuration for the image building module.

  6. Click the + button in the Module Configuration section again.

  7. Enter web in the module name field, confirm webservice from the module list, and enter ${module.s2i.image} in the "Image Name" field. Walrus' UI will guide you to fill in the references to other module outputs.

  8. Modify Ports to 8888 (this is the port John's code listens on). Click "OK" to save the configuration for the web service module.

  9. Click the Save button to save the application configuration.


Deploying Application

Now John can deploy the test environment on Walrus with a single click:

  1. Go to the details page of the myapp application.

  2. Click the "+" button next to Application Information to add an instance.

  3. Enter dev1 in the Name field and select the development environment provided by Wei from DevOps team. Click "OK" to create the application instance.

  4. Wait for the deployment to complete, and the application instance's access address will appear on the UI.


TADA!John can now access his service test environment! He can share the application with other development and testing team members and create multiple application instances.

Conclusion

This article has illustrated how Walrus achieves the separation of concerns between development and operations by delineating the responsibilities from the perspectives of two distinct roles. It has also showcased Walrus'application model abstraction through the deployment process, spanning from source code to Kubernetes deployment. However, it's worth noting that an application module can encompass more than this—ranging from building logic and cloud-native workloads to traditional deployment payloads or other resource abstractions.

bg1.jpg

Explore The Application Management Platform for the AI Era

Scan and join Walrus discord community
e718f478cc2c49dcabe5a1375c33f1c7.png

Learn more about
Walrus and get support

Contact Us

  • *姓名:
  • *电话:
  • *公司名称:
  • *公司邮箱:
  • *城市:
  • *验证码:

I have carefully read and agree to《Privacy Policy》