[정수리] kubernetes 리소스 객체 -- ConfigMap

2992 단어

의 원리


많은 생산 환경에서의 응용 프로그램 설정이 비교적 복잡하기 때문에 여러 개의 config 파일, 명령행 매개 변수와 환경 변수의 조합이 필요할 수 있다.용기 배치를 사용할 때, 배치를 응용 프로그램의 거울에서 분리해서 거울의 이식성을 확보해야 한다.시크릿은 인증 정보와 키 같은 정보를 응용 프로그램에서 결합시킬 수 있지만 K8S1.2 이전에는 일반 또는 비시크릿 설정을 위한 대상이 없었다.K8S1에서2 이후에 ConfigMap을 도입하여 이러한 유형의 구성 데이터를 처리합니다.
ConfigMap은 일반적인 설정 변수를 저장하는 것으로 설정 파일과 유사하여 사용자가 분포식 시스템에서 서로 다른 모듈에 사용되는 환경 변수를 하나의 대상에 통일하여 관리할 수 있도록 한다.구성 파일과 다른 점은 클러스터의'환경'에 존재하며 K8S 클러스터의 모든 공통 작동 방식을 지원한다는 점입니다.
데이터 측면에서 볼 때 ConfigMap의 유형은 키 값 그룹일 뿐 Pod이나 다른 자원 대상(예를 들어 RC)에 접근한 정보를 저장하는 데 사용된다.이것은 시크릿의 디자인 이념과 공통점이 있다. 주요 차이점은 ConfigMap은 민감한 정보를 저장하는 데 사용되지 않고 간단한 텍스트 정보만 저장하는 데 있다.
ConfigMap은 환경 변수의 속성을 저장하거나 프로파일을 저장할 수 있습니다.
pod를 만들 때 configmap을 연결합니다.pod 내의 응용 프로그램은ConfigMap의 설정을 직접 참조할 수 있습니다.configmap의 응용/실행 환경 봉인 설정과 같습니다.
pod에서는 환경 변수의 값 설정, 명령행 매개변수 설정, 프로파일 생성에 일반적으로 사용되는 ConfigMap을 사용합니다.

configmap 만들기


명령행

kubectl create configmap test-a --from-file=db_config_file=database.conf --from-file=ver.conf --from-literal=username=test --from-literal=hostname=localhost

-from-file는 파일에서 온 것을 의미하며, 파일 내용을configmap에 직접 기록합니다. 디렉터리로도 사용할 수 있고, 파일로도 사용할 수 있으며db 를 사용할 수 있습니다.config_file=database.conf에서 키 값을 수정합니다 - from-literal 키 값을 사용하여 설정을 표시합니다

yaml 파일

kubectl delete -f lykops-config.yaml
cat << EOF > lykops-config.yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: lykops-config
  namespace: default  
  labels:
    software: apache
    project: lykops
    app: configmap
    version: v1
data:
  PWD: /
  user: lykops
  mysql.config : |-
    username: lykops
    host: localhost
    port: 3306
EOF
kubectl create -f lykops-config.yaml

데이터는 설정 변수입니다: PWD와user 두 줄은 두 개의 환경 변수 속성 mysql입니다.config: | - 바로 프로필입니다. 다음 내용은 프로필 mysql입니다.config 컨텐트

ConfigMap 사용


두 가지 방식으로pod를 사용합니다. 첫 번째는 환경 변수나 파라미터이고, 두 번째는 파일 마운트입니다.
kubectl delete -f lykops-cm-pod.yaml
cat << EOF > lykops-cm-pod.yaml
apiVersion: v1 
kind: Pod 
metadata:
  name: lykops-cm-pod
  labels:
    project: lykops
    app: lykops-cm
    version: v1      
spec:
  containers:
  - name: lykops-cm-pod
    image: web:apache 
    command: ['sh',/etc/run.sh] 
    env:
    - name: SPECIAL_USER
      valueFrom:
        configMapKeyRef:
          name: lykops-config
          key: username
    resources: 
      requests: 
        cpu: 0.01 
        memory: 8Mi 
      limits: 
        cpu: 0.1
        memory: 16Mi
    volumeMounts:
    - name: config-volume
      mountPath: /data/
  volumes:
    - name: config-volume
      configMap:
        name: lykops-config
EOF
kubectl create -f lykops-cm-pod.yaml

ConfigMap이 데이터 볼륨으로 Pod에 마운트될 때 ConfigMap을 업데이트하거나 재구성 ConfigMap을 삭제하면 Pod에 마운트된 설정 정보는 핫 업데이트되지만 환경 변수를 사용하여pod에 마운트하면 자동으로 업데이트되지 않습니다.
전재 대상:https://www.cnblogs.com/lykops/p/7419934.html

좋은 웹페이지 즐겨찾기