fabric8 java api,kubectl apply -f equivalent in fabric8 java api | 易学教程
问题
I was trying to use io.fabric8 api to create a few resources in kubernetes using a pod-spec.yaml.
Config config = new ConfigBuilder()
.withNamespace("ag")
.withMasterUrl(K8_URL)
.build();
try (final KubernetesClient client = new DefaultKubernetesClient(config)) {
LOGGER.info("Master: " + client.getMasterUrl());
LOGGER.info("Loading File : " + args[0]);
Pod pod = client.pods().load(new FileInputStream(args[0])).get();
LOGGER.info("Pod created with name : " + pod.toString());
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
The above code works if the resource type is of POD. Similarly for other resource type it is working fine.
But if the yaml has multiple resource type like POD and service in the same file, how to use fabric8 Api ?
I was trying to use client.load(new FileInputStream(args[0])).createOrReplace(); but it is crashing with the below exception:
java.lang.NullPointerException
at java.net.URI$Parser.parse(URI.java:3042)
at java.net.URI.(URI.java:588)
at io.fabric8.kubernetes.client.utils.URLUtils.join(URLUtils.java:48)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.getMandatory(BaseOperation.java:208)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:177)
at io.fabric8.kubernetes.client.handlers.PodHandler.reload(PodHandler.java:53)
at io.fabric8.kubernetes.client.handlers.PodHandler.reload(PodHandler.java:32)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplace(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:202)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplace(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:62)
at com.nokia.k8s.InterpreterLanuch.main(InterpreterLanuch.java:66)
Yaml file used
apiVersion: v1
kind: Pod
metadata:
generateName: zep-ag-pod
annotations:
kubernetes.io/psp: restricted
spark-app-name: Zeppelin-spark-shared-process
namespace: ag
labels:
app: zeppelin
int-app-selector: shell-123
spec:
containers:
- name: ag-csf-zep
image: bcmt-registry:5000/zep-spark2.2:9
imagePullPolicy: IfNotPresent
command: ["/bin/bash"]
args: ["-c","echo Hi && sleep 60 && echo Done"]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
securityContext:
fsGroup: 2000
runAsUser: 1510
serviceAccount: csfzeppelin
serviceAccountName: csfzeppelin
---
apiVersion: v1
kind: Service
metadata:
name: zeppelin-service
namespace: ag
labels:
app: zeppelin
spec:
type: NodePort
ports:
- name: zeppelin-service
port: 30099
protocol: TCP
targetPort: 8080
selector:
app: zeppelin
回答1:
You don't need to specify resource type whenever loading a file with multiple documents. You simply need to do:
// Load Yaml into Kubernetes resources
List result = client.load(new FileInputStream(args[0])).get();
// Apply Kubernetes Resources
client.resourceList(result).inNamespace(namespace).createOrReplace()
来源:https://stackoverflow.com/questions/53501540/kubectl-apply-f-spec-yaml-equivalent-in-fabric8-java-api
fabric8 java api,kubectl apply -f equivalent in fabric8 java api | 易学教程相关推荐
- kubernetes kubectl apply -f和kubectl create -f有什么区别
kubectl create属于Imperative command(祈使式命令),它明确告诉kubectl要创建某个资源或对象: kubectl apply是Declarative command( ...
- kubectl apply_了解Kubectl Apply命令
kubectl apply In this post, we'll explore how the kubectl apply command works internally. Which will ...
- kubectl logs -f tail 显示100_系统管理员应该知道的9个kubectl命令
kubectl是Kubernetes的一个命令行管理工具,可用于Kubernetes上的应用部署和日常管理.本文列举了9个常见的kubectl命令,并对每个命令进行了简单扼要的介绍,供大家参考.同时, ...
- 【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )
文章目录 I . 内联扩展函数 apply II . Kotlin 调用 Java API III . apply 内联扩展函数示例 ( 调用 Java API 处理图像 ) I . 内联扩展函数 a ...
- 聚合中返回source_Java 8 中的 Streams API 详解—— Streams 的背景以及 Java 8 中的使用详解...
为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...
- JAVA开发(后端):微信小程序API调用详细分析及步骤
关键词:微信登录.统一下单(支付).统一下单通知(回调).统一下单查询.企业付款至零钱.支付查询.获取ACCESS_Token.获取小程序二维码 因为做项目涉及到微信这些接口的调用,尽管看了很多博客, ...
- 高级JAVA开发必备技能:java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)(JAVA 小虚竹)
技术活,该赏 点赞再看,养成习惯 大家好,我是小虚竹.之前有粉丝私聊我,问能不能把JAVA8 新的日期时间API(JSR-310)知识点梳理出来.答案是肯定的,谁让我宠粉呢.由于内容偏多(超十万字了) ...
- ctp java_CTP API 开发之二 :制作CTP java版 API
目前上期技术CTP系统提供的API版本是C++版本 SWIG是一个能将C/C++接口转换为其他语言的工具,目前可以支持Python,Java,R等语言. 本文主要介绍Windows 32/64位平台下 ...
- Java中的微信支付(2):API V3 微信平台证书的获取与刷新
1. 前言 在Java 中的微信支付(1):API V3 版本签名详解一文中胖哥讲解了微信支付 V3 版本 API 的签名,当我方(你自己的服务器)请求微信支付服务器时需要根据我方的API 证书对参数 ...
最新文章
- 用了这个 IDE 插件,5分钟解决前后端联调!
- C#中base64编码与解码
- sqlserver 运行正則表達式,调用c# 函数、代码
- 动态dp模板题(树剖+dp+线段树)
- Redis Flushdb 命令
- 请注意,我们要谈谈神经网络的注意机制和使用方法
- C++ 连接数据库的入口和获取列数、数据
- 职场生活:辞职也有大学问
- HttpClient实现通过url下载文件
- Arm汇编 位置无关代码 adr 指令
- 通过QQ音乐接口,做的一个简易微信小程序播放器
- 还有没换国旗头像的么 头像领取方法 不要再@微信官方啦
- brew安装RabbitMQ
- 上周NFT销售CryptoPunk囊括前三
- 2008年4月28日A股市场存在筑底异样
- php 5.3.3 漏洞,PHP 5.3.7版本更新 修复安全漏洞
- Git LFS(Large File Storage)使用简介
- qgmt数据,就差白城后面的一个城市有点问题
- [蓝桥杯 2018 国 B] 搭积木 (区间dp + 二维前缀和优化)
- Web of Science 如何查询相关主题文献逐年的发表数量、被引频次及其走势图