gpt4 book ai didi

java - Tekton 中有未知字段 "container"

转载 作者:行者123 更新时间:2023-12-01 18:35:46 27 4
gpt4 key购买 nike

最近我对 Tekton 很感兴趣。

但是,当我使用 java Fabric8.tekton api 实现 Task 时,出现了一些问题。

TaskBuilder 类中存在以容器(withContainer)为单位在规范中添加步骤的 API。

但是我在 rune 时间内收到如下错误消息, enter image description here

我可以得到一些建议吗?

Tekton 版本 - v0.10.1

我使用了如下的包:

io.fabric8:kubernetes-client:4.7.1

io.fabric8:tekton-client:4.7.1

这是我的完整测试代码。

package com.example.tekton;

import java.util.ArrayList;
import java.util.List;
import io.fabric8.kubernetes.api.model.Container;
import io.fabric8.kubernetes.api.model.ContainerBuilder;
import io.fabric8.kubernetes.client.BaseClient;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.tekton.client.TektonClient;
import io.fabric8.tekton.client.DefaultTektonClient;
import io.fabric8.tekton.client.handlers.TaskHandler;
import io.fabric8.tekton.client.handlers.TaskRunHandler;
import io.fabric8.tekton.pipeline.v1alpha1.ArrayOrString;
import io.fabric8.tekton.pipeline.v1alpha1.Task;
import io.fabric8.tekton.pipeline.v1alpha1.TaskBuilder;
import io.fabric8.tekton.pipeline.v1alpha1.TaskRun;
import io.fabric8.tekton.pipeline.v1alpha1.TaskRunBuilder;
import io.fabric8.tekton.pipeline.v1alpha1.TaskRefBuilder;

public class DefaultKubernetesTest {

public Task getTask() {
Container con = new ContainerBuilder()
.withNewImage("ubuntu")
.withNewName("echo-hello-world")
.addNewCommand("echo")
.addNewArg("hello jinwon world")
.build();

Task task = new TaskBuilder()
.withApiVersion("tekton.dev/v1alpha1")
.withKind("Task")
.withNewMetadata()
.withName("echo-hello-world-test")
.endMetadata()
.withNewSpec()
.addNewStep()
.withContainer(con)
.endStep()
.endSpec()
.build();

return task;
}

public TaskRun getTaskRun() {
TaskRun taskRun = new TaskRunBuilder()
.withNewMetadata()
.withName("taskrun")
.endMetadata()
.withNewSpec()
.withTaskRef(new TaskRefBuilder().withName("echo-hello-world-test").withApiVersion("tekton.dev/v1alpha1").withKind("Task").build())
.endSpec().build();
return taskRun;
}

public static void main(String[] args) {
ConfigBuilder config = new ConfigBuilder();
DefaultKubernetesTest kubeTest = new DefaultKubernetesTest();
String username = "testUser";
String password = "testPwd";

config = config.withMasterUrl("https://192.168.6.236:6443");
config = config.withUsername(username);
config = config.withPassword(password);
Config kubeConfig = config.build();

try (DefaultTektonClient test = new DefaultTektonClient(kubeConfig)) {
Task task = kubeTest.getTask();
TaskRun taskRun = kubeTest.getTaskRun();
test.tasks().inNamespace("test").create(task);
test.taskRuns().inNamespace("test").create(taskRun);
test.close();
}
}
}

最佳答案

Tekton 附带了一个准入 Controller ,它会在允许 CRD 进入集群之前验证 CRD 规范。由于该项目仍处于 alpha 阶段,因此进展速度相当快。 Fabric8 可能会根据与集群上安装的规范不同的规范来模板化 K8s 对象。您应该能够验证 Fabric8 中使用的规范版本并删除集群中的所有 Tekton 对象并在特定版本中重新应用它们。

关于java - Tekton 中有未知字段 "container",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com