컨테이너 오케스트레이션은 일련의 컨테이너 세트의 작동 규칙 및 네트워크 구성을 정의하고 관리하여 응용 프로그램의 배포 및 관리를 말합니다. PHP 응용 분야에서 일반적인 컨테이너 오케스트레이션 도구는 Docker 및 Kubernetes입니다.
Docker는 컨테이너를 통한 응용 프로그램의 포장 및 배포를 구현하는 가벼운 가상화 기술입니다. Docker는 응용 프로그램의 패키지 및 실행 방식을 정의 할 수있는 명령 및 구성 파일 세트를 제공합니다. Docker의 컨테이너 오케스트레이션을 통해 PHP 컨테이너를 신속하게 만들고 시작하고 자동 배포 및 관리를 수행 할 수 있습니다.
다음은 Docker를 사용한 PHP 컨테이너 오케스트레이션의 예입니다.
# dockerfile # PHP에서 기본 이미지를 지정하십시오 : 7.4 아파치 # PHP 확장 런 Docker-Php-ext-Install MySQLI PDO_MYSQL 설치 # 응용 프로그램 코드를 컨테이너 사본에 복사하십시오. /var/www/html # 컨테이너의 작업 디렉토리 WorkDir/var/www/html을 설정하십시오 # 컨테이너의 80 포트 노출 80 노출 # Apache Server CMD 시작 [ "Apache2-Foreground"]
위의 DockerFile을 통해 PHP 7.4 및 Apache Server가 포함 된 이미지를 작성하고 응용 프로그램 코드를 컨테이너에 복사 한 후 마지막으로 CMD 지침을 통해 Apache 서비스를 시작할 수 있습니다.
Kubernetes는 오픈 소스 컨테이너 오케스트레이션 플랫폼으로 컨테이너화 된 응용 프로그램을 더 잘 관리하고 확장 할 수 있습니다. Kubernetes에서는 응용 프로그램의 복제본, 자원 제한, 네트워크 구성 등의 수를 정의하고 Kubernetes 스케줄러를 사용하여 컨테이너를 자동으로 배포하고 관리 할 수 있습니다.
다음은 Kubernetes를 사용한 PHP 컨테이너 오케스트레이션의 예입니다.
# deployment.yaml Apversion : Apps/V1 종류 : 배포 메타 데이터 : 이름 : Php-App 투기: 복제본 : 3 선택자: matchlabels : 앱 : PHP-APP 주형: 메타 데이터 : 라벨 : 앱 : PHP-APP 투기: 컨테이너 : - 이름 : PHP-APP 이미지 : PHP : 7.4 아파치 포트 : - 컨테이너 포트 : 80 부피 : - 이름 : App-Data MOUNDPATH :/var/www/html 볼륨 : - 이름 : App-Data emptydir : {}
위의 Deployment.yaml 파일을 통해 3 개의 복제본으로 PHP 응용 프로그램의 배포를 정의합니다. 각 복제본은 PHP : 7.4 아파치 이미지를 사용하고/var/www/html 디렉토리를 공유 볼륨으로 장착합니다.
서비스 오케스트레이션은 일련의 컨테이너 세트의 운영 상태 및 네트워크 액세스 규칙을 정의하고 관리하여 서비스 발견 및 응용 프로그램의로드 밸런싱 구현을 말합니다. PHP 응용 프로그램에서 일반적인 서비스 오케스트레이션 도구는 Docker Compose 및 Kubernetes입니다.
Docker Compose는 여러 도커 컨테이너를 정의하고 실행하는 도구입니다. 구성 파일을 통해 여러 컨테이너 간의 관계 및 종속성을 정의 할 수 있습니다. Docker Compose의 서비스 오케스트레이션을 통해 여러 관련 PHP 컨테이너를 신속하게 만들고 시작하고 네트워크 연결 및 서비스 검색을 정의 할 수 있습니다.
다음은 Docker Compose를 사용한 PHP 서비스 오케스트레이션의 예입니다.
# docker-compose.yaml 버전 : '3' 서비스 : PHP-APP : 짓다: 문맥: . dockerfile : dockerfile 포트 : -8080 : 80 볼륨 : -. :/var/www/html 부양애 : -MySQL mysql : 이미지 : MySQL : 5.7 환경: -Mysql_root_password = 비밀 -Mysql_database = php_app_db
위의 Docker-Compose.yaml 파일을 통해 PHP 응용 프로그램 및 MySQL 데이터베이스가 포함 된 서비스 오케스트레이션을 정의합니다. PHP 응용 프로그램은 정의 된 Dockerfiles를 사용하여 구축되며 로컬 코드 디렉토리는 컨테이너에 장착됩니다. MySQL 서비스는 MySQL : 5.7 이미지로 작성되었으며 데이터베이스의 비밀번호와 이름을 구성하도록 환경 변수를 설정했습니다.
Kubernetes에서는 서비스 및 유입을 사용하여 컨테이너 서비스 발견 및로드 밸런싱을 달성 할 수 있습니다. 서비스는 컨테이너 간 네트워크 연결 규칙을 정의하는 데 사용되며 컨테이너 서비스의 외부 액세스 규칙을 정의하는 데 사용됩니다.
다음은 PHP 서비스 오케스트레이션에 Kubernetes를 사용하는 예입니다.
# service.yaml 애호가 : v1 친절 : 서비스 메타 데이터 : 이름 : PHP-App-Service 투기: 선택자: 앱 : PHP-APP 포트 : - 프로토콜 : TCP 포트 : 80 TargetPort : 80 유형 : NODEPORT
위의 Service.YAML 파일을 통해 PHP-App-Service라는 서비스 객체를 정의하여 외부 네트워크 트래픽을 컨테이너 라벨이 붙은 앱 : PHP-App으로 전달합니다. 동시에, 컨테이너가 사용한 포트 번호를 80으로 지정하고 서비스 유형을 Cluster 노드의 IP 주소와 노출 된 포트의 IP 주소를 통해 PHP 응용 프로그램에 액세스 할 수 있도록 서비스 유형을 NODEPORT로 설정했습니다.
컨테이너 오케스트레이션 및 서비스 오케스트레이션은 PHP 응용 프로그램의 포장 배포에 중요한 역할을합니다. 컨테이너 오케스트레이션을 통해 PHP 컨테이너를 신속하게 만들고 관리하고 응용 프로그램의 실행중인 환경 및 구성을 정의 할 수 있습니다. 서비스 오케스트레이션을 통해 PHP 컨테이너 서비스의 발견 및로드 밸런싱을 실현하여 응용 프로그램 가용성 및 성능을 향상시킬 수 있습니다.
Docker 또는 Kubernetes를 사용하든 컨테이너 오케스트레이션 및 서비스 오케스트레이션을 사용하면 PHP 응용 프로그램의 효율적인 배포 및 관리를 달성 할 수 있습니다. 위의 소개와 예제가 컨테이너 오케스트레이션 및 서비스 오케스트레이션을 이해하고 적용하는 데 도움이되기를 바랍니다.