Help Center/ ServiceStage/ User Guide/ Component Management/ Creating and Deploying a Component/ Creating and Deploying a Component Based on a Container Using UI Configurations
Updated on 2024-09-27 GMT+08:00

Creating and Deploying a Component Based on a Container Using UI Configurations

This section describes how to create and deploy a component based on a container using UI configurations. With the guidance of the ServiceStage console, you can quickly create and deploy a component in a container environment.

Prerequisites

  1. An application has been created because components can only be added to applications. For details, see Creating an Application.
  2. A Kubernetes environment has been created and resources have been managed because components need to be deployed in an environment. For details, see Environment Management.
  3. An organization has been created because images generated during component build need to be managed by organization. For details, see Creating an Organization.
  4. A namespace has been created to isolate and build data and component instances. For details, see Creating a Namespace.
  5. If you create a component based on a source code repository, repository authorization has been created. For details, see Authorizing a Repository.
  6. If you create a component based on a software package, the software package has been uploaded to the SWR software repository or OBS bucket.

    If the software package fails to be uploaded, see What If a Software Package Fails to Be Uploaded?

  7. If you create a component based on an image package, prepare the image by referring to Component Source.

Creating and Deploying a Component Based on a Container Using UI Configurations

  1. Log in to ServiceStage.
  2. Use any of the following methods to go to the Create Component page:

    • Choose Component Management > Create Component.
    • On the Application Management page, select the application for which you want to create a component, and click Create Component in the Operation column.
    • On the Application Management page, click the application for which you want to create a component. On the displayed Overview page, click Create Component.

  3. In the Basic Information area, configure the component by referring to the following table. Parameters marked with an asterisk (*) are mandatory.

    Parameter

    Description

    *Component Name

    Name of a component, which cannot be changed after the component is created and deployed.

    Enter 2 to 64 characters. Start with a letter and end with a letter or digit. Only use letters, digits, underscores (_), and hyphens (-).

    • Components with the same name in different applications can be deployed in the same environment.
    • Components with the same name in the same application can be deployed in different environments.

    *Component Version

    Component version number, which can be automatically generated or customized.

    • Automatically-generated: Click Generate. By default, the version number is the time when you click Generate. The format is yyyy.mmdd.hhmms, where s is the ones place of the second in the timestamp. For example, if the timestamp is 2022.0803.104321, the version number is 2022.0803.10431.
    • Customized: Enter a value in the format of A.B.C or A.B.C.D. A, B, C, and D are natural numbers. For example, 1.0.0 or 1.0.0.0.

    *Environment

    Select Kubernetes or VM + Kubernetes.

    For details, see Environment Overview.

    NOTE:

    If CCE clusters and VMs are managed in an earlier version, the environment type is VM + Kubernetes after the upgrade to the current version.

    *Deployment Mode

    Select Container.

    This parameter is mandatory when Environment is set to VM + Kubernetes. For details, see Deploying a Component.

    *Application

    Application to which the component belongs.

    *Workload Type

    A workload is an application running on Kubernetes. No matter how many components are there in your workload, you can run it in a group of Kubernetes pods. A workload is an abstract model of a group of pods in Kubernetes. Select a workload type as required.

    • Stateless: Workloads are completely independent and have the same functions. They support auto scaling and rolling upgrade. Typical scenario: Nginx.
    • Stateful: Workloads have persistent storage and support orderly deployment, scaling, and deletion. Typical scenario: MySQL-HA and etcd.

    *Workload

    The workload name is automatically generated by default, and can also be customized.

    The default workload name consists of the Component Name and Environment you set, and six random characters generated by the system. The total length cannot exceed 52 characters.

    • If the Component Name contains 45 characters or fewer, the default workload name is:
      All of the component name-All or part of the environment name-Six random characters generated by the system

      Underscores (_) in the name will be replaced with hyphens (-), and uppercase letters will be converted to lowercase letters.

      For example, if the component name is Com_calc and the environment is env-cce, the default workload name is:

      com-calc-env-cce-1uw8g0
    • If the Component Name contains more than 45 characters, the default workload name is:
      First 45 characters of the component name-Six random characters generated by the system

      Underscores (_) in the name will be replaced with hyphens (-), and uppercase letters will be converted to lowercase letters.

      For example, if the component name is C_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, the default workload name is:

      c-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1uw8g0

    You can also customize the workload name.

    • If Workload Type is Stateful, enter 1 to 52 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed.
    • If Workload Type is Stateless, enter 1 to 63 characters. Start with a lowercase letter and end with a lowercase letter or digit. Only use lowercase letters, digits, and hyphens (-).

    The workload name cannot be changed after the component is created and deployed.

    Description

    Component description.

    1. Click and enter up to 128 characters.
    2. Click to save the component description.
    Figure 1 Setting the basic component information

  4. In the Component Package area, configure the component package by referring to the following table. Parameters marked with an asterisk (*) are mandatory.

    Parameter

    Description

    *Stack

    1. Select a component technology stack type based on the component deployment mode. For details, see Table 1.
    2. Select a technology stack version from the Name drop-down list.
    3. Set JVM to configure the memory parameter size during Java code running. This parameter is available when a Java or Tomcat technology stack is selected.

      Click Stack Settings and set JVM, for example, -Xms256m -Xmx1024m. Multiple parameters are separated by spaces.

    4. Set Tomcat to configure the parameters such as Tomcat request path and port number. This parameter is available when a Tomcat technology stack is selected.
      1. Click Stack Settings and select Tomcat. The Tomcat dialog box is displayed.
      2. Click Use Sample Code and edit the template file based on service requirements.
        NOTE:

        In Tomcat configuration, the default server.xml configuration is used. The context path is /, and no application path is specified.

        If you need to customize an application path, customize the Tomcat context path by referring to How Do I Customize a Tomcat Context Path?

      3. Click OK.

    *Source Code/Software Package

    • If you select Source code repository, create authorization by referring to Authorizing a Repository and set the code source.
    • If you select a software package (JAR, WAR, or ZIP), the software package type supported by the component source is determined by the selected technology stack type. For details, see Table 1.

    *Upload Method

    If the component source is software package or image package, select an uploaded software package or image package. For details about the upload method, see Component Source.

    NOTE:
    • When the component source is image package, select Multi-container to support multi-container deployment. It can be used to build complex application systems where different services or components are encapsulated in different containers.
    • Click in the upper right corner of the selected image package to change the image package source or delete the image package.

    *Container Name

    This parameter is mandatory when the component is deployed based on a container.

    • By default, the container name is the same as the workload name in 3. You can also customize the container name. The name contains 1 to 63 characters, including lowercase letters, digits, and hyphens (-), and must start with a lowercase letter and end with a lowercase letter or digit.
    • If the source of the component selected for Upload Method is image package and multi-container deployment is enabled, you need to customize a container name for the new container. The name contains 1 to 63 characters, including lowercase letters, digits, and hyphens (-), and must start with a lowercase letter and end with a lowercase letter or digit.

  5. In the Build Job area, set build parameters by referring to the following table. Parameters marked with an asterisk (*) are mandatory.

    This parameter is mandatory when the selected technology stack type is Java, Tomcat, Node.js, Python, or PHP in 4.

    Parameter

    Description

    *Command

    If the component source is Source code repository, set Command based on service requirements.

    • Default command or script: preferentially executes build.sh in the root directory. If build.sh does not exist, the code will be compiled using the common method of the selected language. Example: mvn clean package for Java.
    • Custom command: Commands are customized using the selected language. Alternatively, the default command or script is used after build.sh is modified.
      NOTICE:
      • If Custom command is selected, exercise caution when inputting sensitive information in the echo, cat, or debug command, or encrypt sensitive information to avoid information leakage.
      • To run the compilation command in the project subdirectory, you need to go to the project subdirectory and then run other script commands. Example:

        cd ./weather/

        mvn clean package

    *Dockerfile Address

    If the component source is Source code repository, set Dockerfile Address based on service requirements.

    Dockerfile Address is the directory where the Dockerfile is located relative to the root directory (./) of the project. The Dockerfile is used to build an image.

    If Dockerfile Address is not specified, the system searches for the Dockerfile in the root directory of the project by default. If the Dockerfile does not exist in the root directory, the system automatically generates the Dockerfile based on the selected operating environment.

    *Organization

    An organization is used to manage images generated during component build.

    *Build

    Select the type of the environment used to build an image. The build environment must be a Kubernetes environment, and can access the Internet.

    You are advised to select Use current environment. If the CCE cluster in the current environment cannot access the Internet and you have planned an independent build environment, you can select Use independent environment.

    • Use independent environment: Use an independent build environment to build an image. The CCE clusters in the independent build environment and in the current component deployment environment must have the same CPU architecture. Otherwise, the component deployment fails.
    • Use current environment: Use the deployment environment to which the component belongs to build an image. In the current environment, masters and nodes in the CCE cluster must have the same CPU architecture. Otherwise, the component build fails.

    *Environment

    • If Use independent environment is selected for Build, select an independent build environment different from that to which the component belongs.
    • If Use current environment is selected for Build, select the deployment environment to which the component belongs.

    *Namespace

    Select the namespace of the CCE cluster in the environment where the build is executed, which is used to isolate build data. For details, see Managing Namespaces.

    Node Label

    In the following cases, set a node label to deliver the build job to the fixed node bound with an EIP to ensure that the component can be successfully built and deployed:

    • If Use independent environment is selected for Build, set a node label to deliver the build job to the node in the independent environment, to ensure that the node CPU architecture is the same as that of the node in the current component deployment environment.
    • If Use current environment is selected for Build and the CPU architecture of a node is different from that of the master node in the environment, set a node label to deliver the build job to the node that has the same CPU architecture as the master node.

    For details about how to add a label, see Managing Node Labels.

    YAML Mode

    Disable it to use the UI configurations to deploy components.

    Figure 2 Configuring build parameters

  6. Click Next.
  7. In the Resources area, configure the resources required by the container-deployed component by referring to the following table. Parameters marked with an asterisk (*) are mandatory.

    Parameter

    Description

    *Resources

    You can customize CPU and Memory to set their quota, and set the maximum/minimum number of CPU cores and memory size (GiB) that can be used by components. In this way, you can set the number of resources required by each component instance.

    When resource Request is specified for a component instance, CCE uses this information to determine the node to which the component instance is scheduled. When resource Limit is specified for a component instance, CCE ensures that the resources occupied by the running component instance do not exceed the limit. CCE will also reserve the requested number of system resources for the component instance. For details about how to configure them, see Resource Management.

    To modify them, select the item to be changed and enter a new value. Unselected parameters indicate no restriction.

    NOTE:

    If the source of the component selected for Upload Method in 4 is image package and multi-container deployment is enabled, set this parameter for each container instance as required.

    *Instances

    Set the number of component instances running in the environment. The value range is 1–200.

    *Namespace

    Select the namespace of the container where the component instance is located.

    Figure 3 Configuring the resources required by the container-deployed component

  8. In the Headless Service Settings area, set the service name and port number of the component by referring to the following table. Parameters marked with an asterisk (*) are mandatory.

    This operation is required when Workload Type is Stateful in 3. This operation enables pods in a StatefulSet to access each other and provides a fixed access domain name for each pod.

    Parameter

    Description

    *Service Name

    Enter the name of the service that can be accessed by external services.

    A service is an abstract method that exposes a group of applications running on a pod as network services.

    NOTE:

    Service names of components deployed on the same CCE must be unique. Otherwise, component deployment will fail.

    *Port Settings

    Set the following port parameters:

    • Port Name: name of the port for communication between pods.
    • Container Port: port used by an application for listening in a container.
    • Access Port: port for accessing the service.

    To add port settings, click Add Setting.

  9. In the Access Mode area, enable Public Network Access.

    After public network access is enabled for a component, you can use a public network domain name to access the component through an ELB bound with an EIP to use services provided by the component.
    • If a component is upgraded and maintained in ELB dark launch mode after being created and deployed, you need to enable public network access for the component. For details about ELB dark launch, see Upgrading a Component in Dark Launch Mode.
    • After a component with public network access enabled is created and deployed, you can change the configured component access domain name by referring to Changing the Component Access Domain Name.
    • By default, public network access is disabled for a component. After a component is created and deployed, you can also configure the component access mode. For details, see Configuring the Component Access Mode.
    Click to enable public access and set the following parameters:
    1. Set Public Network Load Balancer.
      • Select a load balancer that has been bound to an EIP in the selected environment.
      • If no load balancer exists, click Add One. On the Edit Environment page that is displayed, click Add Optional Resource to add created load balancers to the environment.
      • To create ELB resources, refer to the following table.

        Scenario

        Reference

        Use the domain name to access an application.

        ELB dark launch

        See Creating a Dedicated Load Balancer.

        • An EIP has been bound to the load balancer and must be in the same VPC and subnet as the compute resources managed in the current component deployment environment.
        • Components must be bound with different load balancers in different deployment environments to avoid route errors.
    2. Set Client Protocol.
      • HTTP has security risks. You are advised to select HTTPS.
      • If HTTPS is selected, click Use existing to select an existing certificate.

        If no certificate exists, click Create new to create a server certificate. For details, see Adding a Certificate.

    3. Set Domain Name.
      • If Automatically generated is selected, the automatically generated domain name is valid only for seven days.
      • If Bound is selected, enter a domain name.
    4. Set Listening Port.

      Enter the listening port number of the application process.

    Figure 4 Configuring public access

  10. In the Local Time area, set the time zone of the container.

    By default, the time zone is the same as that of the region where the container node is located.

  11. Set Cloud Service Settings.

    Operation Type

    Operation

    Description

    Microservice Engine

    Binding a microservice engine

    Cloud Service Engine is a one-stop management platform for microservice solutions. After microservice components are connected to CSE, you can use service registry, service governance, and configuration management of CSE. In this way, you can focus on service development and improve product delivery efficiency and quality.

    Choose Cloud Service Settings > Microservice Engine and bind a microservice engine. For details, see Binding a Microservice Engine.

    NOTE:
    • If the source of the component selected for Upload Method in 4 is image package and multi-container deployment is enabled, the microservice engine cannot be bound.
    • To upgrade and maintain components in dark launch mode, bind the microservice engine here. For details, see Upgrading a Component in Dark Launch Mode.

    Distributed Cache Service

    Binding a distributed cache

    In a distributed system, the distributed cache service provides scalable and reliable user session management.

    Choose Cloud Service Settings > Distributed Cache Service and bind a distributed cache. For details, see Binding a Distributed Cache.

    Relational Database Service

    Binding a cloud database

    The cloud database is required for persistent storage of application data.

    Choose Cloud Service Settings > Relational Database Service and bind a cloud database. For details, see Binding a Cloud Database.

  12. Set Container Settings.

    If the source of the component selected for Upload Method in 4 is image package and multi-container deployment is enabled, set this parameter for each container instance as required.

    Operation Type

    Operation

    Description

    Environment Variable

    Configuring environment variables

    Environment variables are set in the container running environment and can be modified after component deployment to ensure application flexibility. Environment variables set for a component are local environment variables and take effect only for this component.

    Choose Container Settings > Environment Variable and configure environment variables. For details, see Configuring Environment Variables of a Component.

    Startup Command

    Configuring a startup command

    A startup command is used to start a container.

    Choose Container Settings > Startup Command and configure the startup command. For details, see Configuring the Startup Command and Lifecycle of a Component.

    Data Storage

    Configuring data storage

    Container storage is a component that provides storage for applications. Multiple types of storage are supported. A component can use any amount of storage.

    Choose Container Settings > Data Storage and configure data storage. For details, see Configuring Data Storage.

    Lifecycle

    Configuring the lifecycle

    For container-deployed components, ServiceStage provides callback functions for the lifecycle management of applications. For example, if you want an application component to perform a certain operation before stopping, you can register a hook function.

    Choose Container Settings > Lifecycle and configure the lifecycle. For details, see Configuring the Startup Command and Lifecycle of a Component.

    Log Collection

    Configuring log collection

    For container-based deployment components, ServiceStage supports setting of application log policies. You can view related logs on the AOM console. You can configure a log policy during or after component deployment. If no configuration is performed, the system collects standard application output logs by default.

    Choose Container Settings > Log Collection and configure log collection. For details, see Configuring a Log Policy of an Application.

    Health Check

    Configuring health check

    Health check periodically checks application health status during running of container-based deployment components.

    Choose Container Settings > Health Check and configure health check. For details, see Configuring Health Check.

  13. Set Advanced Settings.

    Operation Type

    Operation

    Description

    Scheduling Policy

    Configuring the scheduling policy

    For container-deployed components, ServiceStage divides the components into minimum deployment instances based on the deployment features of the components. The application scheduler monitors application instance information in real time. When detecting that a new pod needs to be scheduled, the application scheduler calculates all remaining resources (compute, storage, and network resources) in the cluster to obtain the most appropriate scheduling target node.

    Choose Advanced Settings > Scheduling Policy and configure the scheduling policy. For details, see Configuring a Scheduling Policy of a Component Instance.

    Tolerance Policy

    Configuring the tolerance policy

    For container-deployed components, tolerations allow the scheduler to schedule pods to nodes with target taints. Tolerances work with node taints. Each node allows one or more taints. If no tolerance is configured for a pod, the scheduler will schedule the pod based on node taint policies to prevent the pod from being scheduled to an inappropriate node.

    Choose Advanced Settings > Tolerance Policy and configure the tolerance policy. For details, see Configuring a Tolerance Policy of a Component Instance.

    Performance Management

    Configuring performance management

    The Application Performance Management (APM) service helps you quickly locate problems and identify performance bottlenecks to improve your experience. ServiceStage allows you to configure application performance management during or after component deployment.

    APM can be configured for components whose technology stack type is Java, Tomcat, or Docker.

    Choose Advanced Settings > Performance Management and configure performance management. For details, see Configuring Application Performance Management.

    Custom Monitoring

    Configuring custom monitoring

    ServiceStage allows you to obtain monitoring data based on custom metrics. You can set custom metric monitoring during or after component deployment. Components deployed based on CCE support custom monitoring.

    Choose Advanced Settings > O&M Policy and configure custom monitoring. For details, see Configuring Custom Monitoring of a Component.

  14. Click Create and Deploy.

    On the Deployment Records page, view the deployment logs and wait until the component deployment is complete.

    If the technology stack type of the component selected in 4 is Java, Tomcat, Node.js, Python, or PHP, the system creates a build job of the System created type after the component is deployed. For details, see Viewing Build Jobs.

    Figure 5 Viewing component deployment logs