>  기사  >  백엔드 개발  >  템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

巴扎黑
巴扎黑원래의
2017-08-16 09:33:061481검색


요약: 컨테이너 생성 또는 애플리케이션 배포 구성은 복잡하고 가변적입니다. 시스템 유연성과 재사용성을 보장하기 위해 이 문서에서는 템플릿 엔진을 핵심으로 사용하여 통합 컨테이너 배포 프레임워크를 구축하는 방법에 중점을 둡니다.

컨테이너를 사용하는 과정에서 누구나 40~50가지 정도의 컨테이너 구성 항목이 있으며 이를 이해하려면 특정 기술 배경이 필요합니다. 배포 프로세스 중에 사용자는 구성 매개변수에 대한 이해 부족으로 인해 컨테이너 시작, 애플리케이션 배포 또는 업그레이드 시 다양한 문제에 직면하는 경우가 많습니다. 사용자가 다양한 매개변수를 빠르게 이해하고 다양한 애플리케이션 유형 및 시나리오에 따라 확장할 수 있는 방법 이 문서에서는 이러한 문제를 탐색하고 해결하는 데 중점을 둘 것입니다.

컨테이너 생성 또는 애플리케이션 배포 구성은 복잡하고 가변적입니다. 시스템 유연성과 재사용성을 보장하기 위해 템플릿 엔진을 핵심으로 하는 통합 컨테이너 배포 프레임워크를 구축하기로 결정했습니다. 이 글에서는 템플릿 엔진을 구축하는 방법과 템플릿 엔진을 핵심으로 컨테이너 배포 프레임워크를 구축하는 작동 원리에 대해 중점적으로 설명합니다. 템플릿 엔진에서는 특정 형식 사양을 준수하는 파일이 기본이며, 배포 프로세스에 따라 변경될 수 있거나 변경이 필요한 위치에 대해서는 매개 변수를 사용하여 사이트를 식별합니다. 매개변수 식별자의 정의는 템플릿 파일의 끝에 추가되어 매개변수 식별자의 의미 변환을 수행합니다. 템플릿 또는 매개변수 식별의 특정 내용은 특정 구성 파일을 통해 클라이언트 요청 매개변수에서 읽거나 수신될 수 있습니다.

템플릿 엔진

템플릿 엔진은 템플릿 정의, 템플릿 구문 분석, 템플릿 변환, 템플릿 실행의 네 가지 모듈로 구성됩니다. 템플릿 정의는 컨테이너 클러스터의 관리 프레임워크에 따라 달라지며 실행이 불가능한 파일입니다. 템플릿 파서는 템플릿을 두 부분으로 나누는 일을 담당합니다. 한 부분은 실행 불가능한 배포 템플릿을 형성하고, 다른 부분은 배포 템플릿의 매개변수에 대한 정의 설명을 형성합니다. 고유한 사이트 식별자를 통한 배포 템플릿. 템플릿 변환기는 매개변수 값을 받아들이고 이를 파서에서 생성된 배포 템플릿과 결합합니다. 매개변수 값 식별자는 템플릿의 자리 표시자 식별자로 대체되어 실행 파일을 생성합니다. 템플릿 실행자는 템플릿을 기반으로 개체를 생성하는 일을 담당하며 일반적으로 일정 관리 프레임워크 또는 컨테이너 엔진을 담당합니다.

템플릿 엔진의 실행 원리는 그림 1에 나와 있습니다.
템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

그림 1 템플릿 엔진의 실행 원리


템플릿 정의

템플릿 정의에는 배포 템플릿 매개변수 식별이라는 두 가지 유형의 정보가 포함됩니다.

kubernetes의 배포 템플릿을 예로 들어 보겠습니다. 배포 템플릿에는 리소스, 버전, 정보 설명 및 데이터 구성이라는 4가지 유형의 정의가 포함됩니다.

  • Resource: kubernetes에 정의된 객체 유형을 나타냅니다.

  • 버전: 개체의 버전을 나타냅니다.

  • 정보 설명: 개체 이름, 레이블, 설명 등을 포함하여 개체 검색 또는 예약을 위한 인덱스를 제공합니다.

  • 데이터 구성: 포트, 환경 변수, 리소스, 예약, 상태 확인 등을 포함하여 컨테이너가 실행될 때 따르는 표준을 정의합니다.

매개변수 식별자는 매개변수, 이름, 설명, 표시 이름, 값, 유형 등 6가지 속성으로 구성됩니다.

  • parameters: 매개변수 정의 시작 플래그

  • description: 매개변수 프롬프트 정보

  • displayname: 특정 의미 정보

  • name: 참조 매개변수 이름에 해당하며 설명 정보가 해당 참조임을 나타냅니다. 매개변수

  • value: 매개변수 기본값

  • type: 다양한 스타일을 나타내며, 클라이언트는 유형에 따라 특정 스타일을 제시합니다.

kubernetes의 네임스페이스 개체를 예로 들면 템플릿의 전체 정의는 다음 코드와 같습니다.

apiVersion: v1kind: Namespacemetadata:
  name: ${name }
---
{"parameters":
  [
    {      "description": "命名空间",      "displayName": "命名空间",      "name": "name",      "value": "",      "type": "String"
    }
]}

위 코드에는 배포 템플릿과 매개변수 설명이라는 두 부분이 포함되어 있습니다.

배포 템플릿은 다음 코드 블록에 표시됩니다.

apiVersion: v1kind: Namespacemetadata:
  name: ${name }

배포 템플릿은 개체에서 생성된 모든 콘텐츠를 정의합니다. 템플릿의 필드 의미는 다음과 같습니다.

  • apiVersion: 공통 옵션, 정의 버전 정보

  • Kind: 객체 유형 정의, 다양한 객체 구별

  • 메타데이터: 배포 시 지정된 매개변수 키-값 쌍 정의

  • ${}: 매개변수의 참조 값을 나타냅니다. 클라이언트 역학을 정의하는 매개변수

매개변수 ID를 바꿉니다. 매개변수를 얻은 후 표시 양식은 다음 코드 예제 매개변수 식별자 정의입니다.

{"parameters":  [
    {
      "description": "命名空间",
      "displayName": "命名空间",
      "name": "name",
      "value": "",
      "type": "String"
    }
]}

매개변수 식별자는 통합 형식을 정의합니다. 의미 변환을 통해 복잡한 구성을 사용자가 이해하기 쉬운 방식으로 변환합니다. 클라이언트는 매개변수 식별자를 읽고, 템플릿 파서를 통해 입력 매개변수를 추상화하고, 필요한 양식 양식을 표시하고, 사용자 입력 기능을 제공합니다.

템플릿 정의는 Kubernetes 또는 Docker에 익숙한 전문가가 작성합니다. 배포 유연성과 확장성을 보장하기 위해 특정 비즈니스 시나리오를 기반으로 실시간 및 동적 조정이 이루어질 수 있습니다. 동시에 시스템은 다양한 개체를 기반으로 하는 기본 템플릿을 제공합니다. 사용자는 특정 지식 배경을 기반으로 템플릿을 만들고 유지할 수도 있습니다.

템플릿 파서

는 입력 및 출력 스트림을 통해 템플릿의 매개변수 식별자를 얻고 의미 변환을 수행하며 이해하기 쉬운 구성 매개변수를 얻습니다. 템플릿 파서의 작동 원리는 아래 그림 2에 나와 있습니다.

템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

그림 2 템플릿 파서의 작동 원리


클라이언트는 서버가 요청을 받은 후 개체를 생성하기 위한 요청을 시작합니다. , 요청된 개체를 기반으로 개체를 생성합니다. 자체 연결 기본 템플릿을 입력합니다. 기본 템플릿은 파일 스트림을 통해 읽혀지며, 매개변수 플래그는 매개변수 설명 정보를 얻기 위한 시작점으로 사용됩니다. 구문 분석이 완료되면 매개변수가 Json 문자열 형식으로 클라이언트에 반환됩니다. 클라이언트는 Json 문자열을 기반으로 사용자가 채워야 하는 양식을 동적으로 생성합니다. 양식의 내용에 대해.

템플릿 파서는 템플릿 정의의 매개변수 식별자를 구문 분석하는 데 중점을 둡니다. 의미 변환과 정보 프롬프트를 통해 쉽게 식별 가능한 입력 항목이 형성됩니다. 사용자의 경우 분석이 완료된 후 복잡한 기술 지표를 보호할 수 있으며 사용자의 초점은 기술에서 비즈니스 구성으로 이동합니다. 사용 비용을 최소화하고 사용 편의성을 높입니다.

템플릿 변환기

템플릿 변환기는 템플릿 엔진의 핵심이며 배포 템플릿 가져오기, 매개변수 및 값 변환, 실행 파일 빌드라는 세 가지 문제를 해결하는 데 중점을 둡니다. 클라이언트는 템플릿 파서의 매개변수에 실제 값을 할당하고 이를 서버에 전달합니다. 서버는 템플릿 내용을 읽고 매개변수의 플래그 비트를 만나면 종료됩니다. 파일 스트림을 생성하여 배포 파일을 생성한 후 배포 파일의 매개변수를 매개변수 값으로 대체하여 최종 실행 파일을 생성합니다. 템플릿 변환기의 작동 원리는 그림 3에 나와 있습니다.

템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

그림 3 템플릿 변환기의 작동 원리


배포 템플릿 얻기: 템플릿에 포함된 템플릿 정의에서 볼 수 있습니다. 두 부분: 배포 템플릿과 매개변수 식별자. 템플릿 변환기는 먼저 템플릿을 배포하고, 파일 스트림을 통해 템플릿 정의의 배포 템플릿을 읽고, 읽기 프로세스 중에 매개변수 식별자로 분할하여 배포 템플릿을 가져와야 합니다.

参数值转化:核心是解决参数与占位符关联和赋值问题。模板转换器通过模板参数定义的name属性key关联,模板转化器拿到参数值以后,获取参数值对应的key(key在部署模板唯一),并且根据key,替换部署模板中占位标识,完成参数替换。

构建可执行文件:通过文件流的方式,把前两部转化的字符流输出到文件,构建出可执行文件。

模板转换器执行以后,生成的可执行文件如下所示:

apiVersion: v1kind: Namespacemetadata:
  name: ruffy

模板执行器

模板执行器接收可执行的部署文件,对于文件中定义的部署类型进行解析,拆分成若干个可执行任务。容器引擎根据收到的任务执行操作,最终协同完成部署工作。模板执行器往往依赖于容器调度和执行引擎。以Kubernetes容器编排框架为例,模板转化器生成的可执行文件,以字符流的方式传输到Kubernetes的Server端,Kubernetes根据传入文件,自动解析文件内容,并且做出相关操作。对于模板引擎而言,无论是Kubernetes还是Swarmkit都能够得到友好的支持。模板执行器的工作原理如图4所示:

템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

그림 4 템플릿 실행기의 작동 원리


템플릿 실행기가 실행된 후의 결과는 그림 5에 표시됩니다.
템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크

그림 5


컨테이너 구성은 템플릿 엔진을 통해 수행할 수 있습니다. 컨테이너 배포이든 다른 리소스 테마 개체 생성이든 유연한 사용을 위해 해당 템플릿 지원이 있습니다. 템플릿 처리 엔진은 템플릿 변경에 따라 코드를 지속적으로 수정할 필요가 없습니다. 동시에 사용자는 특정 기술 세부 사항 및 구현 방법에 주의를 기울이지 않고 자신이 이해하는 의미론의 구성 정보에 집중할 수 있어 운영 동작을 단순화하고 사용 비용을 줄일 수 있습니다.

위 내용은 템플릿 엔진 기반의 PHP 디자인 패턴 컨테이너 배포 프레임워크의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.