PodPreset
发布于 2020-07-18 字数11836 浏览 888 评论 0
PodPreset 用来给指定标签的 Pod 注入额外的信息,如环境变量、存储卷等。这样,Pod 模板就不需要为每个 Pod 都显式设置重复的信息。
API 版本对照表
| Kubernetes 版本 | API 版本 | 默认开启 |
|---|---|---|
| v1.6+ | settings.k8s.io/v1alpha1 | 否 |
开启 PodPreset
kind: PodPresetapiVersion: settings.k8s.io/v1alpha1metadata:name: allow-databasenamespace: mynsspec:selector:matchLabels:role: frontendenv:- name: DB_PORTvalue: "6379"volumeMounts:- mountPath: /cachename: cache-volumevolumes:- name: cache-volumeemptyDir: {}
用户提交 Pod
apiVersion: v1kind: Podmetadata:name: websitelabels:app: websiterole: frontendspec:containers:- name: websiteimage: ecorp/websiteports:- containerPort: 80
经过准入控制 PodPreset 后,Pod 会自动增加环境变量和存储卷
apiVersion: v1kind: Podmetadata:name: websitelabels:app: websiterole: frontendannotations:podpreset.admission.kubernetes.io/allow-database: "resource version"spec:containers:- name: websiteimage: ecorp/websitevolumeMounts:- mountPath: /cachename: cache-volumeports:- containerPort: 80env:- name: DB_PORTvalue: "6379"volumes:- name: cache-volume-
ConfigMap 示例
ConfigMap
apiVersion: v1kind: ConfigMapmetadata:name: etcd-env-configdata:number_of_members: "1"initial_cluster_state: newinitial_cluster_token: DUMMY_ETCD_INITIAL_CLUSTER_TOKENdiscovery_token: DUMMY_ETCD_DISCOVERY_TOKENdiscovery_url: http://etcd_discovery:2379etcdctl_peers: http://etcd:2379duplicate_key: FROM_CONFIG_MAPREPLACE_ME: "a value"
PodPreset
kind: PodPresetapiVersion: settings.k8s.io/v1alpha1metadata:name: allow-databasenamespace: mynsspec:selector:matchLabels:role: frontendenv:- name: DB_PORTvalue: 6379- name: duplicate_keyvalue: FROM_ENV- name: expansionvalue: $(REPLACE_ME)envFrom:- configMapRef:name: etcd-env-configvolumeMounts:- mountPath: /cachename: cache-volume- mountPath: /etc/app/config.jsonreadOnly: **true**name: secret-volumevolumes:- name: cache-volumeemptyDir: {}- name: secret-volumesecretName: config-details
用户提交的 Pod
apiVersion: v1kind: Podmetadata:name: websitelabels:app: websiterole: frontendspec:containers:- name: websiteimage: ecorp/websiteports:- containerPort: 80
经过准入控制 PodPreset 后,Pod 会自动增加 ConfigMap 环境变量
apiVersion: v1kind: Podmetadata:name: websitelabels:app: websiterole: frontendannotations:podpreset.admission.kubernetes.io/allow-database: "resource version"spec:containers:- name: websiteimage: ecorp/websitevolumeMounts:- mountPath: /cachename: cache-volume- mountPath: /etc/app/config.jsonreadOnly: **true**name: secret-volumeports:- containerPort: 80env:- name: DB_PORTvalue: "6379"- name: duplicate_keyvalue: FROM_ENV- name: expansionvalue: $(REPLACE_ME)envFrom:- configMapRef:name: etcd-env-configvolumes:- name: cache-volumeemptyDir: {}- name: secret-volumesecretName: config-details
