fabric8 API操作ConfigMap

简介:         ConfigMap用来保存key-value pair配置数据,数据可以在pod容器中挂载. 可以简单理解为Linux系统中的/etc目录,用来存储配置文件的目录。这里以将ConfigMap数据作为容器内配置文件举例.
        ConfigMap用来保存key-value pair配置数据,数据可以在pod容器中挂载. 可以简单理解为Linux系统中的/etc目录,用来存储配置文件的目录。这里以将ConfigMap数据作为容器内配置文件举例. 本例中,  ConfigMap挂载到容器后, 其每一个item会成为挂载目录下的一个文件, key为文件名, 文件内容是key对应的值. 

          前台UI如下:
5b4d5d3e8587a5a98d17783cfdddb1121a9d6570
          添加ConfigMap内容:
8ed019387446025320cdb62c6ff0e7bccdd642ed
          点击保存, 将键值对数据以map方式传入后台, 构建ConfigMap对象并进行创建:
          构建对象:
	/**
	 * 构建ConfigMap对象
	 * @param ku8ConfigMap
	 */
	public void createConfigMap(Ku8ConfigMap ku8ConfigMap) {
		k8sAPIService.createConfigMap(
				ku8ConfigMap.getNamespace(), 
				new ConfigMapBuilder()
					.withKind("ConfigMap")
					.withApiVersion("v1")
					.withNewMetadata()
						.withName(ku8ConfigMap.getName())
						.withNamespace(ku8ConfigMap.getNamespace())
					.endMetadata()
					.withData(ku8ConfigMap.getData())
					.build()
		);
	}

          创建对象:
	/**
	 * 创建ConfigMap
	 * @param namespace
	 * @param configMap
	 * @return
	 */
	public ConfigMap createConfigMap(String namespace, ConfigMap configMap) {
		return getClient().configMaps().inNamespace(namespace).create(configMap);
	}

          Ku8ConfigMap实体如下:
package com.***.entity;

import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;

@XmlRootElement
public class Ku8ConfigMap implements Serializable {

	private static final long serialVersionUID = -2929072646302058679L;

	private Integer configMapId;
	private String name;
	private Integer namespaceId;
	private Date createTime;
	private Date updateTime;
	private Map<String, String> data;
	private String namespace;
	
	public Integer getConfigMapId() {
		return configMapId;
	}

	public void setConfigMapId(Integer configMapId) {
		this.configMapId = configMapId;
	}

	public Integer getNamespaceId() {
		return namespaceId;
	}

	public void setNamespaceId(Integer namespaceId) {
		this.namespaceId = namespaceId;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	public Map<String, String> getData() {
		return data;
	}

	public void setData(Map<String, String> data) {
		this.data = data;
	}

	public String getNamespace() {
		return namespace;
	}

	public void setNamespace(String namespace) {
		this.namespace = namespace;
	}
}

         在kubernetes集群查看ConfigMap创建结果:
d872759f8ccc9776a0161e178b993a5aca814e6c

          创建Deployment时, 挂载ConfigMap:

c673f007c4ab8ef00c2609067cb272b9666dac8c

          后端操作:
		   // 遍历需要挂载的ConfigMap列表
                   for (VolumeDto confMap : ku8ConfMapArray) {
			ConfigMap f8ConfigMap = k8sAPIService.getConfigMapByName(namespace, confMap.getName());

			if (f8ConfigMap == null) {
				throw new BusinessException("cant find configMap:" + confMap.getName());
			}

			for (Container f8Container : f8Containers) { // 遍历需要创建的容器
				List<VolumeMount> f8VolumeMounts = f8Container.getVolumeMounts();

				if (f8VolumeMounts == null) {
					f8VolumeMounts = new ArrayList<VolumeMount>();
				}
                               // 在容器中挂载ConfigMap
				VolumeMount f8VolumeMount = new VolumeMountBuilder().withName(confMap.getName()).withMountPath(confMap.getPath()).build();

				f8VolumeMounts.add(f8VolumeMount);
				f8Container.setVolumeMounts(f8VolumeMounts);
			}

			// 将ConfigMap挂载为pod的一个volume
			List<KeyToPath> f8KeyToPathList = new ArrayList<KeyToPath>();
			f8ConfigMap.getData().forEach((k, v) -> f8KeyToPathList.add(new KeyToPathBuilder().withKey(k).withPath(k).build())); // key既为键名称又作为挂载结果的文件名称
			Volume f8Volume = new VolumeBuilder().withName(confMap.getName()).withNewConfigMap().withName(confMap.getName()).withItems(f8KeyToPathList).endConfigMap().build();
			
			f8Volumes.add(f8Volume);
		}

         查看创建成功的pod:

46bc4457e0a1ff6fbeb27a2ad910fcc1b76849ae

          查看 ConfigMap 挂载结果:
d15085b2218965bb90cfc0a0dda16ec81ee3f460

目录
相关文章
|
4月前
|
文字识别 小程序 安全
印刷文字识别操作报错合集之微信小程序调用API时路径总是返回不对,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
4月前
|
文字识别 前端开发 API
印刷文字识别操作报错合集之通过HTTPS连接到OCR服务的API时报错,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
4月前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之调用CreateQualityRule API时,BlockType参数为0,会报错:"blockType less than minimum",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
前端开发 JavaScript API
惊天揭秘!AJAX与Fetch API如何让你的前后端交互秒变‘神级操作’!
【7月更文挑战第15天】在Web开发中,AJAX和Fetch API革新了前后端交互,告别了表单提交带来的页面刷新。AJAX利用XMLHttpRequest实现部分页面更新,开启无刷新时代;Fetch API作为现代替代,以其简洁和Promise支持简化异步操作。从AJAX的先驱地位到Fetch API的进化,两者提升了Web应用的性能和用户体验,成为现代开发的必备技能。
50 2
|
4月前
|
搜索推荐 API UED
资源部署及场景API调用体验过程的引导与操作流畅性
资源部署及场景API调用体验过程的引导与操作流畅性
|
4月前
|
XML JSON 文字识别
印刷文字识别操作报错合集之API调用过程中报错469,是什么导致的
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
5月前
|
运维 DataWorks 数据管理
DataWorks操作报错合集之调用RegisterLineageRelation api时报错,是什么原因?
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
40 2
|
4月前
|
运维 Devops API
阿里云云效操作报错合集之直接用API调用可以使用,但是本地用Go代码调用失败,是什么导致的?
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
运维 Kubernetes API
阿里云云效操作报错合集之API返回的错误信息,错误码为"Operate.NoPermission",该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
运维 Devops API
阿里云云效操作报错合集之调用旧版API添加代码源时遇到500错误,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。