Deploying sample applications in containers¶
Use the quadlet_radio_engine.aib.yml manifest to build a virtual machine OS image that includes containerized sample applications.
The sample applications include two SOME/IP services:
radio-service
, which simulates a radioengine-service
that simulates other parts of the car.
There is also a command line application radio-client
, which talks to the services displaying the current status and allowing you to control the
radio. For more information, see the sample-apps README.
The image uses the COVESA vsomeip implementation of SOME/IP as
packaged in Fedora, and
rebuilt in COPR. In particular, the image starts the vsomeip
routing manager
(non-contained), using systemd socket activation with a custom
SELinux policy that controls access.
After you boot the OS image, two container-based systemd sample services are running: radio.service
and engine.service
.
Prerequisites
- You have installed the Automotive image builder utility by following the instructions in
-
You have installed QEMU by following the instructions in the QEMU documentation.
Procedure
-
Create and go to a new directory called
sample-auto-apps
: -
Create and save a file called
radio.container
that contains the following code: -
Create and save a file called
engine.container
that contains the following code: -
Create and go to a new subdirectory called
quadlet_radio_engine
: -
Create and save a build manifest file named
quadlet_radio_engine.aib.yml
, that contains the following YAML code:name: quadlet_radio_engine content: repos: - id: copr-sample-apps baseurl: https://download.copr.fedorainfracloud.org/results/alexl/cs9-sample-images/centos-stream-9-$arch/ rpms: - podman - containernetworking-plugins - vsomeip3-routingmanager - dlt-daemon # For testing the image only: - openssh-server - openssh-clients container_images: # Get the auto-apps container image from gitlab - source: registry.gitlab.com/centos/automotive/sample-images/demo/auto-apps tag: latest name: localhost/auto-apps add_files: - path: /etc/containers/systemd/radio.container source_path: ../radio.container - path: /etc/containers/systemd/engine.container source_path: ../engine.container # Required for testing the image only: systemd: enabled_services: # Enable ssh daemon - sshd.service # Enable the dlt daemon - dlt auth: # "password" root_password: $6$xoLqEUz0cGGJRx01$H3H/bFm0myJPULNMtbSsOFd/2BnHqHkMD92Sfxd.EKM9hXTWSmELG8cf205l6dktomuTcgKGGtGDgtvHVXSWU. # Required for testing the image only: sshd_config: PasswordAuthentication: true PermitRootLogin: true
-
Export the current system’s CPU architecture as a variable:
-
Run the following command to build the OS image:
-
Boot the OS image as a virtual machine (VM) in QEMU:
-
Log in to the VM as the
root
user with the passwordpassword
. -
Verify that the auto-apps container exists:
-
Verify that the radio service is running:
-
Verify that the engine service is running:
-
When you are done, run the following command to shut down the VM and return to your local terminal: