컨테이너 오케스트레이션은 일련의 컨테이너 세트의 작동 규칙 및 네트워크 구성을 정의하고 관리하여 응용 프로그램의 배포 및 관리를 말합니다. 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 응용 프로그램의 효율적인 배포 및 관리를 달성 할 수 있습니다. 위의 소개와 예제가 컨테이너 오케스트레이션 및 서비스 오케스트레이션을 이해하고 적용하는 데 도움이되기를 바랍니다.