利用io.fabric8.kubernetes的api创建secret

2024-01-30 16:32

本文主要是介绍利用io.fabric8.kubernetes的api创建secret,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:自己在做这块的时候发现这方面的资料网上不太多,所以通过看书和网上搜索总结了点东西,方便大家使用

一.Secret类型

Secret主要是用来保管私密数据用的,所以数据(data)就是最重要的,而类型(type)决定了数据保存的方式,所以重点说一下类型(type)。

1.Opaque 

这种类型通过base64的编码方式来存储数据,是key:value这种格式,如果不对secret进行设置,那么默认的就是这种类型。

这种类型有点事看着比较直观,但是缺点是加密型很弱。

2.kubernetes.io/dockerconfigjson

这种类型用来存储私有的docker-registy认证信息,对整个存储信息进行base64编码,我的需求就是用这种方式,所以本文主要是讲这种类型。

3.kubernetes.io/service-account-token

 用于被serviceaccount引用。未使用过,这里就不多描述。

二、主要代码

//注意()中的内容对应yaml文件中的内容
//这里获取连接k8s的对象,这部分在这章不进行详解      
client = k8sClientService.getClientByProjectId(projectId);//创建Secret对象
Secret secret = new Secret();//设置库的使用版本(apiVersion: v1)
secret.setApiVersion("v1");//设置对象类型(kind: Secret)
secret.setKind("Secret");//创建metadata对象(metadata:)
ObjectMeta om = new ObjectMeta();//设置secret名称(name:) 注意secret的名称不能含有大写字母,只能是小写字母、数字、中横杠、点
om.setName("test");//设置secret所在namespace(namespace:)
om.setNamespace("orz");//添加进metadata对象
secret.setMetadata(om);//Opaque的方式装载data
/*** data:user: MTIzNDU2password: MTIzNDU2*/
//加密对象(在java8后,都用java.util下的这个对象,效率很高)
//Base64.Encoder encoder = Base64.getEncoder();//String user = "admin";
//byte[] userByte = user.getBytes();
//String enuser = encoder.encodeToString(userByte);//String password = "admin";
//byte[] passwdByte = passwd.getBytes();
//String enpasswd = encoder.encodeToString(passwdByte);//将加密好的数据放入map中
//Map<String, String> map = new HashMap<>();
//map.put("user", enuser);
//map.put("password", enpasswd);//使用kubernetes.io/dockerconfigjson的方式来装载data
/*** data:.dockerconfigjson: XXX*///将数据格式化一下
/*** {auths : {registryUrl : {user : name,password : password}}}*/
String dockerCfg = String.format("{ " +" \"auths\": { " +"  \"%s\": { " +"   \"user\": \"%s\", " +"   \"passwd\": \"%s\", " +"   \"email\": \"%s\", " +"  } " +" } " +"}",
address,
user,
passwd,
email
);//必须把数据转化成base64格式的,不然创建会报错
byte[] dockerCfgByte = dockerCfg.getBytes();
dockerCfg = encoder.encodeToString(dockerCfgByte);Map<String, String> map = new HashMap<>();
map.put(".dockerconfigjson", dockerCfg);//添加数据到data
secret.setData(map);//设置secret类型
secret.setType("kubernetes.io/dockerconfigjson");//创建secret
client.secrets().create(secret);

 

这篇关于利用io.fabric8.kubernetes的api创建secret的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660854

相关文章

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创