我安装了 Argo Workflow 的默认舵图,仅将 init.serviceAccount 配置为我创建的 argo-sa。(具有足够授权的ServiceAccount)但是,运行每个工作流都作为serviceaccount Default 运行,我无法弄清楚设置的配置位置。根据 Argo Helm Chart 提供的 README,指定init.serviceAccount
为我创建的 serviceaccount 应该可以解决问题。解决方法是修改默认服务帐户,但似乎不是一个很好的解决方案。有什么我理解错误的吗?提前致谢。
我正在探索一种在 Argo 工作流程中读取 K8S 资源的简单方法。当前文档主要关注有条件的创建/补丁(https://argoproj.github.io/argo/examples/#kubernetes-resources),而我很好奇是否可以执行“action: get”,额外资源状态(或完整资源)的一部分,并将其作为工件或结果输出传递给下游。有任何想法吗?
我创建了一个WorkflowTemplate
,其中我想将脚本模板的结果作为输入参数传递给另一个任务
这是我的WorkflowTemplate
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: dag-wft
spec:
entrypoint: whalesay
templates:
- name: whalesay
inputs:
parameters:
- name: message
default: '["tests/hello", "templates/hello", "manifests/hello"]'
dag:
tasks:
- name: prepare-lst
template: prepare-list-script
arguments:
parameters:
- name: message
value: "{{inputs.parameters.message}}"
- name: templates
depends: prepare-lst
templateRef:
name: final-dag-wft
template: whalesay-final
arguments:
parameters:
- name: fnl_message
value: "{{item}}"
withParam: "{{tasks.prepare-lst.outputs.parameters.templates_lst}}"
- name: manifests
depends: prepare-lst && (templates.Succeeded || templates.Skipped)
templateRef:
name: final-dag-wft
template: whalesay-final
arguments:
parameters:
- name: fnl_message …
Run Code Online (Sandbox Code Playgroud) 我有两个工作流程模板generate-output
和lib-read-outputs
一个工作流程,output-paramter
如下所示
generate-output.yaml
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: generate-output
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
# Generate Json for Outputs
- name: read-outputs
arguments:
parameters:
- name: outdata
value: |
{
"version": 4,
"terraform_version": "0.14.11",
"serial": 0,
"lineage": "732322df-5bd43-6e92-8f46-56c0dddwe83cb4",
"outputs": {
"key_alias_arn": {
"value": "arn:aws:kms:us-west-2:123456789:alias/tetsing-key",
"type": "string",
"sensitive": true
},
"key_arn": {
"value": "arn:aws:kms:us-west-2:123456789:alias/tetsing-key",
"type": "string",
"sensitive": true
}
}
}
template: retrieve-outputs
# Create Json
- name: retrieve-outputs
inputs:
parameters: …
Run Code Online (Sandbox Code Playgroud) 我有一个工作流程,其中使用jsonpath
输出参数的函数从 json 字符串中提取特定值,但由于此错误而失败Error (exit code 255)
这是我的工作流程
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: wf-dev-
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: dev-create
templateRef:
name: dev-create-wft
template: main
arguments:
parameters:
- name: param1
value: "val1"
- name: dev-outputs
depends: dev-create.Succeeded
templateRef:
name: dev-outputs-wft
template: main
arguments:
parameters:
- name: devoutputs
value: "{{=jsonpath(tasks.dev-create.outputs.parameters.devoutputs, '$.alias.value')}}"
Run Code Online (Sandbox Code Playgroud)
在上面的工作流任务中dev-create
调用另一个工作流模板dev-create-wft
,它返回另一个工作流模板的输出
这是我的工作流程模板
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: dev-create-wft
spec:
entrypoint: main
templates:
- name: main
outputs: …
Run Code Online (Sandbox Code Playgroud) 如果我实例化我的子类List<string>
,那么我可以使用Linq的Select
方法.
using System.Linq;
namespace LinqProblem
{
class Program
{
static void Main(string[] args)
{
BetterList list = new BetterList();
list.Select(l => l.ToString() == "abc"); // no compile error
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在子类的定义中使用Select ...
using System.Collections.Generic;
using System.Linq;
namespace LinqProblem
{
class BetterList : List<string>
{
public List<string> Stuff
{
get
{
base.Select(l => l.ToString() == "abc"); // compile error
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
'
List<string>
'不包含'Select'的定义.
为什么会出现这种情况,是否有解决方法?
我想将行从一个表移动到另一个表,delete from [foo] output deleted.[col] into [bar] (col)
看起来是一个不错的选择.
但是列不完全相同.所以我想在目标表中插入一些硬编码值(理想情况下是编程确定的值).
我设置了几张表来演示.
create table delete_output_test (
thing1 int not null,
thing2 varchar(50),
thing3 varchar(50)
)
create table delete_output_test2 (
thing1 int not null,
thing2 varchar(50),
thing3 varchar(50),
thing4 int
)
insert into delete_output_test values (0, 'hello', 'world'),
(1, 'it''s', 'me'),
(2, 'i', 'was'),
(3, 'wondering', 'if')
Run Code Online (Sandbox Code Playgroud)
如果我不太需要,现在从一张桌子移动到另一张桌子工作正常......
delete from delete_output_test2
output deleted.thing1,
deleted.thing2,
deleted.thing3
into delete_output_test
(thing1,
thing2,
thing3)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想填充最后一列怎么办?
delete from delete_output_test2
output deleted.thing1,
deleted.thing2,
deleted.thing3
into delete_output_test
(thing1, …
Run Code Online (Sandbox Code Playgroud) 我试图在浏览器加载网页的上下文中破译“飞行中请求”的含义:
查找第一个交互式窗口,其中有 5 秒的连续时间完全包含在交互式窗口中且不超过2 个进行中的请求
它是指 HTTP 请求吗?如果是这样,飞行中的请求和任何其他类型的请求有什么区别?
看起来,当我使用 删除 Argo cron 工作流时argo cron delete
,根据我的观察,所有以前的工作流(已完成以及仍在运行的工作流)也将被删除。我不完全确定,我还没有找到比https://argoproj.github.io/argo/cli/argo_cron_delete/更详细的文档。
如果我想在更新 cron 工作流的频率时保留所有历史工作流,例如每周一而不是每天运行,该怎么办?进行此类更新的推荐方法是什么?
如果字符串以特定子字符串开头,我想在 Argo 工作流程中执行任务。例如,我的字符串是tests/dev-or.yaml
,如果我的字符串以以下开头,我想执行任务tasks/
这是我的工作流程,但条件没有得到正确验证
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: conditional-
spec:
entrypoint: conditional-example
arguments:
parameters:
- name: should-print
value: "tests/dev-or.yaml"
templates:
- name: conditional-example
inputs:
parameters:
- name: should-print
steps:
- - name: print-hello
template: whalesay
when: "{{inputs.parameters.should-print }} startsWith 'tests/'"
- name: whalesay
container:
image: docker/whalesay:latest
command: [sh, -c]
args: ["cowsay hello"]
Run Code Online (Sandbox Code Playgroud)
以下是我运行工作流程时出现的错误
WorkflowFailed 7s workflow-controller Invalid 'when' expression 'tests/dev-or.yaml startsWith 'tests/'': Unable to access unexported field 'yaml' in token 'or.yaml'
Run Code Online (Sandbox Code Playgroud)
似乎它不接受-
, .yaml …
kubernetes ×7
argoproj ×3
.net ×1
argocd ×1
c# ×1
http ×1
linq ×1
performance ×1
sql ×1
sql-server ×1
t-sql ×1
workflow ×1