13장. RHEL 시스템 역할을 사용하여 컨테이너 관리


podman RHEL 시스템 역할을 사용하면 Podman 컨테이너를 실행하는 Podman 구성, 컨테이너 및 systemd 서비스를 관리할 수 있습니다.

podman RHEL 시스템 역할을 사용하여 Ansible 플레이북을 실행하고 애플리케이션 구성을 관리하여 바인딩 마운트로 rootless 컨테이너를 생성할 수 있습니다.

예제 Ansible 플레이북은 두 개의 Kubernetes 포드를 시작합니다. 하나는 데이터베이스용이고 다른 하나는 웹 애플리케이션용입니다. 데이터베이스 포드 구성은 플레이북에 지정되며 웹 애플리케이션 포드는 외부 YAML 파일에 정의되어 있습니다.

사전 요구 사항

  • 컨트롤 노드 및 관리형 노드를 준비했습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • 사용자 및 그룹 webapp 이 있으며 호스트의 /etc/subuid/etc/subgid 파일에 나열되어야 합니다.
  • dbuser라는 사용자와 db group 이라는 그룹이 이미 생성되어 있어야 합니다.

프로세스

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    - name: Configure Podman
      hosts: managed-node-01.example.com
      tasks:
        - name: Create a web application and a database
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.podman
          vars:
            podman_create_host_directories: true
            podman_firewall:
              - port: 8080-8081/tcp
                state: enabled
              - port: 12340/tcp
                state: enabled
            podman_selinux_ports:
              - ports: 8080-8081
                setype: http_port_t
            podman_kube_specs:
              - state: started
                run_as_user: dbuser
                run_as_group: dbgroup
                kube_file_content:
                  apiVersion: v1
                  kind: Pod
                  metadata:
                    name: db
                  spec:
                    containers:
                      - name: db
                        image:  quay.io/rhel-system-roles/mysql:5.6
                        ports:
                          - containerPort: 1234
                            hostPort: 12340
                        volumeMounts:
                          - mountPath: /var/lib/db:Z
                            name: db
                    volumes:
                      - name: db
                        hostPath:
                          path: /var/lib/db
              - state: started
                run_as_user: webapp
                run_as_group: webapp
                kube_file_src: /path/to/webapp.yml
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    run_as_userrun_as_group
    컨테이너가 rootless인지 지정합니다.
    kube_file_content

    db 라는 첫 번째 컨테이너를 정의하는 Kubernetes YAML 파일이 포함되어 있습니다. podman kube generate 명령을 사용하여 Kubernetes YAML 파일을 생성할 수 있습니다.

    • db 컨테이너는 quay.io/db/db:stable 컨테이너 이미지를 기반으로 합니다.
    • db bind 마운트는 호스트의 /var/lib/db 디렉터리를 컨테이너의 /var/lib/db 디렉터리에 매핑합니다. 따라서 Z 플래그는 비공개 비공유 레이블로 콘텐츠에 레이블을 지정하므로 db 컨테이너만 콘텐츠에 액세스할 수 있습니다.
    kube_file_src: <path>
    두 번째 컨테이너를 정의합니다. 컨트롤러 노드의 /path/to/webapp.yml 파일의 내용은 관리 노드의 kube_file 필드에 복사됩니다.
    volumes: &lt ;list>
    하나 이상의 컨테이너에 제공할 데이터 소스를 정의하는 YAML 목록입니다. 예를 들어 호스트(hostPath)의 로컬 디스크 또는 기타 디스크 장치의 로컬 디스크입니다.
    volumeMounts: < list>
    개별 컨테이너가 지정된 볼륨을 마운트할 대상을 정의하는 YAML 목록입니다.
    podman_create_host_directories: true
    호스트에 디렉터리를 생성합니다. 이렇게 하면 역할에 hostPath 볼륨에 대한 kube 사양을 확인하고 해당 디렉터리를 호스트에 생성합니다. 소유권 및 권한을 더 많이 제어해야 하는 경우 podman_host_directories 를 사용하십시오.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.podman/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. Playbook을 실행합니다.

    $ ansible-playbook --ask-vault-pass ~/playbook.yml
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat