13장. RHEL 시스템 역할을 사용하여 컨테이너 관리
podman
RHEL 시스템 역할을 사용하면 Podman 컨테이너를 실행하는 Podman 구성, 컨테이너 및 systemd
서비스를 관리할 수 있습니다.
13.1. podman RHEL 시스템 역할을 사용하여 바인딩 마운트가 있는 rootless 컨테이너 생성 링크 복사링크가 클립보드에 복사되었습니다!
podman
RHEL 시스템 역할을 사용하여 Ansible 플레이북을 실행하고 애플리케이션 구성을 관리하여 바인딩 마운트로 rootless 컨테이너를 생성할 수 있습니다.
예제 Ansible 플레이북은 두 개의 Kubernetes 포드를 시작합니다. 하나는 데이터베이스용이고 다른 하나는 웹 애플리케이션용입니다. 데이터베이스 포드 구성은 플레이북에 지정되며 웹 애플리케이션 포드는 외부 YAML 파일에 정의되어 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. -
사용자 및 그룹
webapp
이 있으며 호스트의/etc/subuid
및/etc/subgid
파일에 나열되어야 합니다. -
dbuser라는
사용자와
이라는 그룹이 이미 생성되어 있어야 합니다.db
group
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
run_as_user
및run_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: < ;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
파일을 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow