This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.15장. Pod Presets를 사용하여 포드에 정보 삽입
15.1. 개요
Pod 사전 설정은 Pod 에 사용자 지정 정보를 생성하는 대로 해당 정보를 삽입하는 오브젝트입니다.
OpenShift Container Platform 3.7부터 Pod 사전 설정은 더 이상 지원되지 않습니다.
Pod 사전 설정 오브젝트를 사용하여 삽입할 수 있습니다.
- Secret 오브젝트
-
ConfigMap
오브젝트 - 스토리지 볼륨
- 컨테이너 볼륨 마운트
- 환경 변수
개발자는 Pod 레이블이 PodPreset의 라벨 선택기와 일치하는지 확인하여 해당 정보를 Pod에 추가합니다. Pod의 레이블 은 Pod를 일치하는 라벨 선택기 가 있는 하나 이상의 Pod 사전 설정 오브젝트와 연결합니다.
개발자는 포드 사전 설정을 사용하여 Pod에서 사용할 서비스에 대한 세부 정보를 알 필요 없이 포드를 프로비저닝할 수 있습니다. 관리자는 개발자가 포드를 배포하지 않고 개발자의 구성 항목을 보이지 않게 유지할 수 있습니다. 예를 들어 관리자는 시크릿 및 환경 변수를 통해 데이터베이스의 이름, 사용자 이름 및 암호를 제공하는 Pod 사전 설정을 생성할 수 있습니다. 포드 개발자는 Pod의 모든 정보를 포함하는 데 사용할 레이블을 알고 있어야 합니다. 개발자는 Pod 사전 설정을 생성하고 동일한 모든 작업을 수행할 수도 있습니다. 예를 들어 개발자는 환경 변수를 여러 포드에 자동으로 삽입하는 사전 설정을 생성할 수 있습니다.
Pod 사전 설정이 Pod에 적용되면 OpenShift Container Platform은 Pod 사양을 수정하여 삽입 가능한 데이터를 추가하고 Pod 사양에서 사전 설정한 Pod에 의해 수정되었음을 표시합니다. 주석은 양식의 일부입니다.
podpreset.admission.kubernetes.io/<pod-preset name>: `resource version`
podpreset.admission.kubernetes.io/<pod-preset name>: `resource version`
클러스터에서 Pod 사전 설정을 사용하려면 다음을 수행합니다.
- 관리자는 /etc/origin/master/master -config.yaml 을 통해 Pod 사전 설정 승인 컨트롤러 플러그인을 활성화해야 합니다.
-
Pod 사전 설정자는 Pod 사전 설정을 통해 API 유형
settings.k8s.io/v1alpha1/podpreset
을 활성화하고 Pod 사전 설정 포드에 삽입 가능한 정보를 추가해야 합니다.
포드 생성에 오류가 발생하면 Pod가 사전 설정된 Pod의 삽입 리소스 없이 Pod가 생성됩니다.
Pod 사양에서 podpreset.admission.kubernetes.io/exclude: "true"
매개변수를 사용하여 Pod 사전 정의된 변경 사항으로 특정 Pod를 제외할 수 있습니다. 아래 Pod 사양 예를 참조하십시오.
Pod Preset 기능은 서비스 카탈로그 가 설치된 경우에만 사용할 수 있습니다.
Pod 사전 설정 오브젝트 샘플
kind: PodPreset apiVersion: settings.k8s.io/v1alpha1 metadata: name: allow-database spec: selector: matchLabels: role: frontend env: - name: DB_PORT value: "6379" envFrom: - configMapRef: name: etcd-env-config - secretKeyRef: name: test-secret volumeMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volume emptyDir: {}
kind: PodPreset
apiVersion: settings.k8s.io/v1alpha1
metadata:
name: allow-database
spec:
selector:
matchLabels:
role: frontend
env:
- name: DB_PORT
value: "6379"
envFrom:
- configMapRef:
name: etcd-env-config
- secretKeyRef:
name: test-secret
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
Pod 사양 샘플
apiVersion: v1 kind: Pod metadata: name: website labels: app: website role: frontend spec: containers: - name: website image: ecorp/website ports: - containerPort: 80
apiVersion: v1
kind: Pod
metadata:
name: website
labels:
app: website
role: frontend
spec:
containers:
- name: website
image: ecorp/website
ports:
- containerPort: 80
- 1
- Pod 사전 설정의 라벨 선택기와 일치해야 하는 레이블입니다.
Pod 사전 설정 후 샘플 Pod 사양
apiVersion: v1 kind: Pod metadata: name: website labels: app: website role: frontend annotations: podpreset.admission.kubernetes.io/allow-database: "resource version" spec: containers: - name: website image: ecorp/website volumeMounts: - mountPath: /cache name: cache-volume ports: - containerPort: 80 env: - name: DB_PORT value: "6379" envFrom: - configMapRef: name: etcd-env-config - secretKeyRef: name: test-secret volumes: - name: cache-volume emptyDir: {}
apiVersion: v1
kind: Pod
metadata:
name: website
labels:
app: website
role: frontend
annotations:
podpreset.admission.kubernetes.io/allow-database: "resource version"
spec:
containers:
- name: website
image: ecorp/website
volumeMounts:
- mountPath: /cache
name: cache-volume
ports:
- containerPort: 80
env:
- name: DB_PORT
value: "6379"
envFrom:
- configMapRef:
name: etcd-env-config
- secretKeyRef:
name: test-secret
volumes:
- name: cache-volume
emptyDir: {}
Pod 사전 설정에서 Pod를 제외하는 샘플 Pod 사양
apiVersion: v1 kind: Pod metadata: name: no-podpreset labels: app: website role: frontend annotations: podpreset.admission.kubernetes.io/exclude: "true" spec: containers: - name: hello-pod image: docker.io/ocpqe/hello-pod
apiVersion: v1
kind: Pod
metadata:
name: no-podpreset
labels:
app: website
role: frontend
annotations:
podpreset.admission.kubernetes.io/exclude: "true"
spec:
containers:
- name: hello-pod
image: docker.io/ocpqe/hello-pod
- 1
- 이 매개변수를 추가하여 이 pod가 Pod 사전 설정 기능에 의해 삽입되지 않도록 합니다.