小编Joh*_*han的帖子

Kubernetes在Google容器引擎中加载均衡器SSL终止?

背景:

我对谷歌的云平台很陌生,所以我想确保我没有遗漏任何明显的东西.

我们正在尝试使用GKE和Kubernetes,我们希望通过https公开一些服务.我已经阅读了http(s)负载平衡的文档,这似乎表明你应该维护自己的nginx实例来进行SSL终端和负载平衡.对我而言,这看起来相当复杂(我习惯于在AWS及其负载均衡器(ELB)上工作,该负载均衡器支持多年的SSL终端).

问题:

  1. 是创建和维护一个nginx的实例去,如果路上所有你需要的是SSL终止在GKE?
  2. 如果是这样,这是怎么做到的?该 文件 并没有真正似乎传达出这样的AFAICT.

ssl load-balancing kubernetes google-kubernetes-engine

8
推荐指数
1
解决办法
4425
查看次数

如何正确处理hystrix回退中的预期错误?

我们有一个Hystrix(1.4.x)命令,看起来像这样(使用Spring):

@HystrixCommand(groupKey = "GroupKey", commandKey = "CommandKey", fallbackMethod = "myFallback")
public List<X> findXs(long xId) {
   return externalService.findXsExternally(xId);
}
Run Code Online (Sandbox Code Playgroud)

我们实际上不希望List从fallback方法返回一个(空),而是抛出一个异常,以便我们的调用者findXs知道它externalService已经关闭并且可以相应地采取行动.但与此同时,我们希望利用Hystrix提供的功能.在我们的例子中,我们希望调用者返回错误消息而不是返回列表.在Spring中,后备实现如下:

public List<X> myFallback(long xId) {
    // What to do?? Throw exception!?  
}
Run Code Online (Sandbox Code Playgroud)

myFallback"作品"中抛出异常,但Hystrix会警告我们:

CommandKey失败并且回退失败.

即它会将此解释为后备失败.在我们的情况下,异常应被解释为后备失败而是预期的行为.我们也尝试将抛出的异常包装在一个HystrixBadRequestException但是它似乎不适用于回退(根据文档,这将适用于"运行"方法).

如何在Hystrix中实现异常抛出的回退方法?我们可以安全地忽略警告,还是Hystrix不是这样设计的?

java spring-boot hystrix spring-cloud

8
推荐指数
1
解决办法
7077
查看次数

以编程方式获取Kubernetes中容器所属的pod的名称?

有没有办法以编程方式获取容器属于Kubernetes的pod的名称?如果是这样的话?我正在使用fabric8的java客户端,但卷曲或类似的东西也会很好.

请注意,从那时起我不想使用特定标签找到pod(我假设)如果使用复制控制器缩放,我可能无法找到合适的pod.

java fabric8 kubernetes

8
推荐指数
2
解决办法
5239
查看次数

HATEOAS REST API和域驱动设计,在哪里放置工作流逻辑?

这是RESTful API的后续问题:我应该在哪里编写工作流程?问题的简短摘要(适合我的问题更好)将是这样的:

每个域对象包含与特定有界上下文(X)中的特定对象相关联的业务逻辑.REST API包含将查询或命令的结果转换为通过线路发送的数据的逻辑(例如JSON).当使用HATEOAS和超媒体时,我们希望使用链接建模资源之间的关系.但是为了确定REST API应该返回哪些链接,通常需要求助于业务逻辑/规则.问题是,这些"工作流程规则"属于DDD应用程序的位置?他们是否可能处于不同的有限上下文中,只处理工作流规则(可能与X的"伙伴"式关系)或者它们是否属于X BC?

rest domain-driven-design hateoas hypermedia

7
推荐指数
1
解决办法
1057
查看次数

在 F# 中模拟多态变体?

我是 F# 新手,所以如果这是一个愚蠢的问题或者语法可能有点不对,请提前原谅我。希望无论如何都可以理解问题的要点。

我想要实现的是组合 eg Result's (或 anEither或类似的东西)具有不同错误类型(受歧视联合)的可能性,而无需创建包括其他两个受歧视联合的并在内的明确受歧视联合。

让我举一个例子。

假设我有一个这样Person定义的类型:

type Person =
    { Name: string
      Email: string }
Run Code Online (Sandbox Code Playgroud)

假设您有一个验证名称的函数:

type NameValidationError = 
  | NameTooLong
  | NameTooShort

let validateName person : Result<Person, NameValidationError>
Run Code Online (Sandbox Code Playgroud)

另一个验证电子邮件地址:

type EmailValidationError = 
  | EmailTooLong
  | EmailTooShort

let validateEmail person : Result<Person, EmailValidationError>
Run Code Online (Sandbox Code Playgroud)

现在我想编写validateNameand validateEmail,但问题是 中的错误类型Result有不同的类型。我想要实现的是一个函数(或运算符),它允许我做这样的事情:

let validatedPerson = person |> validateName |>>> validateEmail
Run Code Online (Sandbox Code Playgroud)

|>>>是“魔术运算符”)

通过使用|>>>错误类型validatedPerson将是 …

f# functional-programming polymorphic-variants

7
推荐指数
1
解决办法
239
查看次数

ALL Spring Boot应用程序属性列表

使用Spring Boot时是否有一个application.ymlapplication.properties文件中可用的所有属性的列表?我似乎只找到了常见的.

java spring spring-boot

6
推荐指数
1
解决办法
1595
查看次数

如何将变量传递给ansible中包含的任务?

我有一个ansible文件(my_file.yml),看起来像这样:

---
- name: The name
  hosts: all
  tasks:

    - include:my_tasks.yml
      vars:
          my_var: "{{ my_var }}"
Run Code Online (Sandbox Code Playgroud)

my_tasks.yml 看起来像这样:

- name: Install Curl
  apt: pkg=curl state=installed

- name: My task
  command: bash -c "curl -sSL http://x.com/file-{{ my_var }} > /tmp/file.deb"
Run Code Online (Sandbox Code Playgroud)

我想my_var作为命令行参数传递给ansible,所以我喜欢这样:

ansible-playbook my_file.yml --extra-vars "my_var=1.2.3"
Run Code Online (Sandbox Code Playgroud)

但我最终得到以下错误:

... Failed to template {{ my_var }}: Failed to template {{ my_var }}: recursive loop detected in template string: {{ my_var }}
Run Code Online (Sandbox Code Playgroud)

如果我vars在里面my_file.yml看起来像这样:

- include:my_tasks.yml
  vars:
      my_var: …
Run Code Online (Sandbox Code Playgroud)

ansible ansible-playbook

6
推荐指数
2
解决办法
1万
查看次数

如果提交消息以给定字符串开头,则忽略 Jenkins 作业

如果提交消息以给定字符串开头,我想忽略运行 Jenkins 作业。我尝试添加“其他行为”和“轮询忽略某些消息的提交”:

在此输入图像描述

即,如果提交消息以“doc!”开头,我想忽略该作业(在我的世界中这意味着不运行该作业)。我已经尝试了几个在线正则表达式匹配器,我认为 的正则表达式^doc!.*是正确的。但即使我的提交消息确实以“doc!”开头 该工作由 Jenkins 执行。我究竟做错了什么?

git jenkins

6
推荐指数
1
解决办法
4027
查看次数

使用 Spring Webflux 时在后台运行 Mono 并返回响应

这个问题与Spring Web Flux 中的立即返回有关,但我认为不一样(至少那里的答案对我来说并不令人满意)。

我有一个函数返回一个Mono,当被调用时会启动一个长时间运行的工作。当调用 Spring Webflux HTTP API 时会调用此函数。下面是一个例子:

@PutMapping("/{jobId}")
fun startNewJob(@PathVariable("jobId") jobId: String,
                request: ServerHttpRequest): Mono<ResponseEntity<Unit>> {
    val longRunningJob : Mono<Job> = startNewJob(jobId)
    longRunningJob.map { job ->
        val jobUri = generateJobUri(request, job.id)
        ResponseEntity.created(jobURI).build<Unit>()
    }
}
Run Code Online (Sandbox Code Playgroud)

上面代码的问题是“201 Created”是在长时间运行的作业完成创建的。我想longRunningJob在后台启动并立即返回“201 Created”。

我也许可以做这样的事情:

@PutMapping("/{jobId}")
fun startNewJob(@PathVariable("jobId") jobId: String,
                request: ServerHttpRequest): Mono<ResponseEntity<Unit>> {

    startNewJob(jobId)
        .subscribeOn(Schedulers.newSingle("thread"))
        .subscribe()

    val jobUri = generateJobUri(request, job.id)
    val response = ResponseEntity.created(jobURI).build<Unit>()
    Mono.just(response)
}
Run Code Online (Sandbox Code Playgroud)

但对我来说,必须subscribe()手动调用似乎不太习惯(例如,intellij 抱怨我subscribe()在非阻塞范围内调用)。没有更好的方法来组合两个“流”而不使用显式subscribe?如果是这样,我如何修改 …

spring-boot project-reactor spring-webflux

6
推荐指数
1
解决办法
3180
查看次数

当在 MacOSX 上找不到“dotnet”时,让 F# 在 VSCode 中工作?

我对 dotnet 和 vscode 完全陌生,所以我可能会错过一些微不足道的东西。我只想让 F# 在我的 Mac 上的 VSCode 中运行。我首先尝试从brew安装dotnet:

brew cask install dotnet-sdk
Run Code Online (Sandbox Code Playgroud)

这似乎从命令行工作得很好,因为我可以同时执行dotnet newdotnet build

dotnet new console -lang F# -o myproj
Run Code Online (Sandbox Code Playgroud)

现在我安装了同样来自brew的Visual Studio Code:

brew cask install visual-studio-code
Run Code Online (Sandbox Code Playgroud)

然后我安装了Ionide-fsharp插件,myproj从 vscode 打开该文件夹并重新启动它。然后我受到的欢迎是:

错误

FSharp.dotnetRoot然后我在设置中搜索并尝试配置它:

在此输入图像描述

但这没有帮助(我也尝试将文件夹设置为/usr/local/share/dotnet/usr/local/share/dotnet/sdk/3.1.100没有任何效果)。

所以我完全卸载了brew中的所有内容(包括擦除我的~/.vscode文件夹),并重新安装了微软官方文档中的所有内容。在文档中,它说 F# 支持应该内置到 macosx 上的 vscode 中,但当我再次打开该文件夹时,它仍然建议我安装 Ionide-fsharp,所以我服从了。但我又遇到了完全相同的问题。

所以我的问题是:如何在 MacOSX 上安装支持 F# 的 vscode?

这是我的 vscode“about”的输出:

Version: 1.41.0
Commit: 9579eda04fdb3a9bba2750f15193e5fafe16b959
Date: 2019-12-11T17:58:38.338Z
Electron: 6.1.5
Chrome: 76.0.3809.146 …
Run Code Online (Sandbox Code Playgroud)

macos f# .net-core visual-studio-code ionide

6
推荐指数
0
解决办法
895
查看次数