kubernetes-client的使用--java中提交argo工作流(1)
- UID
- 1066743
|
kubernetes-client的使用--java中提交argo工作流(1)
方案思路
argo的提交 通过argo sumbit命令如下:
argo submit --watch https:/
1
一般在linux的shell环境中提交。
在argo的官网上和github中翻了很久没找到相关api和客户端可以调用触发的文档说明。
官网
github
然后转换下思路。
argo调度服务其实也是k8s服务的一种,通过k8s的命令也能进行提交如下:
kubectl create -f https://raw.githubusercontent.co ... es/hello-world.yaml
1
而k8s本身是有其他语言进行操作的客户端包的。
kubernetes客户端库
如果想要编写应用程序来使用 Kubernetes REST API,您并不需要自己实现 API 调用或者请求(或者响应)的类型,使用与您正在使用的编程语言对应的客户端库即可。
客户端库通常已经帮您处理了一些常见的任务,例如身份验证。如果 API 客户端运行在 Kubernetes 集群内,那么大多数的客户端库能够发现并使用 Kubernetes 服务账号来进行身份验证,或者通过 kubeconfig file 文件读取验证信息和 API Server 地址。
详情参考以下链接:
如何在多种编程语言中通过客户端库来使用 Kubernetes API
kubernetes官方版java客户端
kubernetes社区版维护的java客户端fabric8io
用例
我们使用的yaml文件进行测试实验如下:
hello-k8s.yaml
apiVersion: v1
kind: Pod
metadata:
name: hello-world
namespace: default
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: "ubuntu"
command: ["/bin/echo","hello”,”world"]
hello-argo.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-parameters-
namespace: default
spec:
# invoke the whalesay template with
# "hello world" as the argument
# to the message parameter
entrypoint: whalesay
arguments:
parameters:
- name: message
value: hello
templates:
- name: whalesay
inputs:
parameters:
- name: message #parameter declaration
container:
# run cowsay with that message input parameter as args
image: docker/whalesay
command: [echo, "{{inputs.parameters.message}}"]
argo中提交使用
argo submit hello-argo.yaml -p message="goodbye"
发现message参数会自动传入 输出为: goodbye
但是kubectl命令模式则无法传参实现自动替换
kubectl create -f hello-argo.yaml
实际上需要对hello.yaml文件作物理替换如下:
sed -i "s/hello/goodbye/" hello-argo.yaml
kubectl create -f hello-argo.yaml
所以 我们使用java来调用时,也需要读文件 替换文件的内容。 |
|
|
|
|
|