跳到主要内容

69.fifo

PR #1935

Fix line-jumping bug in FIFO implementation

PR #1707

runonce: better container state detection

PR #1961

Rename APIObject ID -> Name everywhere

PR #1746

Overall goal of this is to add a way to configure ssl mutual auth for connections with the kubelet server. In order to do so, this tries to pull together the different places in the APIServer that access the kubelet, and add a single set of flags for configuring both port and ssl.

I'm fairly new to golang (and the k8s codebase), comments on everything extremely welcome.

func NewKubeletClient(config *KubeletConfig) (KubeletClient, error) {
transport := http.DefaultTransport
if config.CAFile != "" {
t, err := NewClientCertTLSTransport(config.CertFile, config.KeyFile, config.CAFile)
if err != nil {
return nil, err
}
transport = t
}

c := &http.Client{Transport: transport}
return &HTTPKubeletClient{
Client: c,
Port: config.Port,
EnableHttps: config.EnableHttps,
}, nil
}

首先,它设置默认的 HTTP 传输为 http.DefaultTransport。然后检查配置(config)中是否设置了 CA 文件(CAFile)。如果设置了,那么就尝试使用客户端证书文件(CertFile),客户端密钥文件(KeyFile)和 CA 文件创建一个新的客户端证书 TLS 传输(NewClientCertTLSTransport)。如果这个过程中发生任何错误,它将返回一个错误并终止函数。

如果没有设置 CA 文件,或者成功创建了 TLS 传输,那么它将创建一个新的 HTTP 客户端,并将之前的传输设置为此客户端的传输方式。

最后,它返回一个新的 HTTPKubeletClient 实例,该实例使用先前创建的 HTTP 客户端,从配置中获取的端口号,以及一个标志表示是否启用 HTTPS。

总的来说,这个函数基于提供的配置创建了一个新的 Kubelet 客户端,这个客户端可以通过 HTTP 或 HTTPS(如果提供了证书和密钥)与 Kubelet 服务器进行通信。

PR #1969

Allow Meta lookup to work across ObjectType and ListMeta