2017-12-15 7 views

답변

1

helm 여기에서 도움을받을 수 있습니다. Helm을 사용하면 k8s yaml 파일을 템플릿으로 만들고 하나의 배포 가능한 k8 패키지에 묶을 수 있습니다. 구성 파일을 ConfigMaps에 배치 할 수도 있고 helm을 사용하여 템플릿화할 수도 있습니다. 자세한 내용은 chart template guide에서 확인할 수 있습니다. 배포시 이러한 템플릿을 채우기 위해

한 가지 방법은 다음과 같다 :

helm upgrade --install my-service /path/to/my/chart/package --set my.value=${MY_VALUE_ENV_VAR} 
+0

감사합니다. 런타임에 값을 지정하는 대신 Vault에서 값을 가져 와서 자동으로 채워지도록 할 수 있습니까? –

+0

@DanielSagayaraj 당신은 당신의 꼬투리가 시작할 때 금고에서 직접 비밀을 끌어 당기는 것을 의미합니까? 이 경우 consul-template을 컨테이너 용으로 특별히 설계된 [exec-mode] (https://github.com/hashicorp/consul-template#exec-mode)와 통합 할 수 있습니다. consul-template 파일을 설정 맵에 넣고 컨테이너에 마운트하고 컨테이너가 시작할 때 consul-template이 저장소로 마법을 걸도록 할 수 있습니다. – fishi

2

  1. 구성 파일 구조의 생성을 포함 할 수

    동적 구성 파일 생성 :

    예를 들어 redis.yaml에 대한 설정 파일은 개발, 준비, 프로덕션 환경에 사용될 수 있습니다. 예 :

    준비

    ${ENVIRONMENT}: 
        host: ${REDIS_HOST} 
        namespace: ${REDIS_NAMESPACE} 
        port: 6379 
    

    생산 :

    ${ENVIRONMENT}: 
        host: ${REDIS_HOST} 
        namespace: ${REDIS_NAMESPACE} 
        port: 6379 
        connect_timeout: ${REDIS_CONNECT_TIMEOUT} 
        timeout: {REDIS_TIMEOUT} 
    
  2. 구성 파일 내용 :

    설정 파일의 내용을 다시 동적으로 채울 수 있습니다.

우리는 config-templates 또는 config-file-structure 사용 투구를 생성하고 (예를 들어 설정/redis.yaml)를 pod.Then 내부 이러한 설정 - 템플릿에서 유틸리티를 사용하여 적절한 파일로 렌더링/변환 할 수 있습니다 필요한 장소에 마운트 할 수 컨테이너 실행 시간.

environment/environment_variables를 기반으로 구성 파일을 동적으로 만들려면 다음 방법을 사용합니다.

배쉬 방법 ( evalcat 사용) :

  1. #!/bin/bash 
    eval "cat <<EOF 
    $(<$1) 
    EOF 
    " | tee $1 >/dev/null 
    
  2. 가 실행으로 inator을 확인하고 고정 표시기 내부에 배치 다음과 같은 내용으로 inator라는 이름의 파일을 만듭니다 이미지를 ENTRYPOINT 스크립트로 실행하십시오.

  3. $ env 
    ENVIRONMENT=staging 
    REDIS_HOST=abc.com 
    REDIS_NAMESPACE=inator 
    
    $ cat config/redis.yaml 
    ${ENVIRONMENT}: 
        host: ${REDIS_HOST} 
        namespace: ${REDIS_NAMESPACE} 
        port: 6379 
    
    $ ./inator config/redis.yaml 
    $ cat config/redis.yaml 
    staging: 
        host: abc.com 
        namespace: inator 
        port: 6379 
    

    생산을

    $ env 
    ENVIRONMENT=production 
    REDIS_HOST=redis.prod.com 
    REDIS_NAMESPACE=prod 
    REDIS_CONNECT_TIMEOUT=5 
    TIMEOUT=10 
    
    $ cat config/redis.yaml 
    ${ENVIRONMENT}: 
        host: ${REDIS_HOST} 
        namespace: ${REDIS_NAMESPACE} 
        port: 6379 
        connect_timeout: ${REDIS_CONNECT_TIMEOUT}   
        timeout: {REDIS_TIMEOUT} 
    
    $ ./inator config/redis.yaml 
    $ cat config/redis.yaml 
    production: 
        host: redis.prod.com 
        namespace: prod 
        port: 6379 
        connect_timeout: 5 
        timeout: 10 
    

장점을 준비 :

고려 ENV의 varibles는 포드/용기

예를 들어 내부 기한 없습니다 필요한 추가 패키지로 제공된다.

dockerize 방법 :

dockerize는 고정 표시기 컨테이너에서 실행중인 응용 프로그램을 단순화하는 유틸리티입니다. 내부적으로 go 템플릿을 사용하여 환경 변수의 구성 파일을 채 웁니다.

자세한 내용은이 블로그 게시물 Environment Variable Templates을보십시오.