Merge pull request #129 from fluxcd/fluxcd/pkg/runtime-v0.8.0

Update fluxcd/pkg/runtime to v0.8.0
This commit is contained in:
Stefan Prodan 2021-01-22 11:28:27 +02:00 committed by GitHub
commit 23c46000ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 77 additions and 95 deletions

View File

@ -3,7 +3,7 @@ module github.com/fluxcd/notification-controller/api
go 1.15 go 1.15
require ( require (
github.com/fluxcd/pkg/apis/meta v0.6.0 github.com/fluxcd/pkg/apis/meta v0.7.0
k8s.io/api v0.20.2 k8s.io/api v0.20.2
k8s.io/apimachinery v0.20.2 k8s.io/apimachinery v0.20.2
sigs.k8s.io/controller-runtime v0.8.0 sigs.k8s.io/controller-runtime v0.8.0

View File

@ -88,8 +88,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fluxcd/pkg/apis/meta v0.6.0 h1:3ETc/Yz4qXGKLj+Iti6vKFwVE024WX+Jr+jIHlxj7zs= github.com/fluxcd/pkg/apis/meta v0.7.0 h1:5e8gm4OLqjuKWdrOIY5DEEsjcwzyJFK8rCDesJ+V8IY=
github.com/fluxcd/pkg/apis/meta v0.6.0/go.mod h1:yHuY8kyGHYz22I0jQzqMMGCcHViuzC/WPdo9Gisk8Po= github.com/fluxcd/pkg/apis/meta v0.7.0/go.mod h1:yHuY8kyGHYz22I0jQzqMMGCcHViuzC/WPdo9Gisk8Po=
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=

View File

@ -17,7 +17,7 @@ limitations under the License.
package v1beta1 package v1beta1
import ( import (
corev1 "k8s.io/api/core/v1" "github.com/fluxcd/pkg/apis/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
@ -25,7 +25,7 @@ import (
type AlertSpec struct { type AlertSpec struct {
// Send events using this provider // Send events using this provider
// +required // +required
ProviderRef corev1.LocalObjectReference `json:"providerRef"` ProviderRef meta.LocalObjectReference `json:"providerRef"`
// Filter events based on severity, defaults to ('info'). // Filter events based on severity, defaults to ('info').
// If set to 'info' no events will be filtered. // If set to 'info' no events will be filtered.

View File

@ -17,7 +17,7 @@ limitations under the License.
package v1beta1 package v1beta1
import ( import (
corev1 "k8s.io/api/core/v1" "github.com/fluxcd/pkg/apis/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
@ -51,7 +51,7 @@ type ProviderSpec struct {
// Secret reference containing the provider webhook URL // Secret reference containing the provider webhook URL
// using "address" as data key // using "address" as data key
// +optional // +optional
SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"` SecretRef *meta.LocalObjectReference `json:"secretRef,omitempty"`
} }
const ( const (

View File

@ -17,7 +17,6 @@ limitations under the License.
package v1beta1 package v1beta1
import ( import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fluxcd/pkg/apis/meta" "github.com/fluxcd/pkg/apis/meta"
@ -43,7 +42,7 @@ type ReceiverSpec struct {
// Secret reference containing the token used // Secret reference containing the token used
// to validate the payload authenticity // to validate the payload authenticity
// +required // +required
SecretRef corev1.LocalObjectReference `json:"secretRef,omitempty"` SecretRef meta.LocalObjectReference `json:"secretRef,omitempty"`
// This flag tells the controller to suspend subsequent events handling. // This flag tells the controller to suspend subsequent events handling.
// Defaults to false. // Defaults to false.

View File

@ -21,7 +21,7 @@ limitations under the License.
package v1beta1 package v1beta1
import ( import (
corev1 "k8s.io/api/core/v1" "github.com/fluxcd/pkg/apis/meta"
"k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime" runtime "k8s.io/apimachinery/pkg/runtime"
) )
@ -207,7 +207,7 @@ func (in *ProviderSpec) DeepCopyInto(out *ProviderSpec) {
*out = *in *out = *in
if in.SecretRef != nil { if in.SecretRef != nil {
in, out := &in.SecretRef, &out.SecretRef in, out := &in.SecretRef, &out.SecretRef
*out = new(corev1.LocalObjectReference) *out = new(meta.LocalObjectReference)
**out = **in **out = **in
} }
} }

View File

@ -95,9 +95,10 @@ spec:
description: Send events using this provider description: Send events using this provider
properties: properties:
name: name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names description: Name of the referent
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string type: string
required:
- name
type: object type: object
summary: summary:
description: Short description of the impact and affected cluster. description: Short description of the impact and affected cluster.

View File

@ -62,9 +62,10 @@ spec:
using "address" as data key using "address" as data key
properties: properties:
name: name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names description: Name of the referent
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string type: string
required:
- name
type: object type: object
type: type:
description: Type of provider description: Type of provider

View File

@ -93,9 +93,10 @@ spec:
the payload authenticity the payload authenticity
properties: properties:
name: name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names description: Name of the referent
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string type: string
required:
- name
type: object type: object
suspend: suspend:
description: This flag tells the controller to suspend subsequent description: This flag tells the controller to suspend subsequent

View File

@ -76,9 +76,7 @@ AlertSpec
<td> <td>
<code>providerRef</code><br> <code>providerRef</code><br>
<em> <em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core"> github.com/fluxcd/pkg/apis/meta.LocalObjectReference
Kubernetes core/v1.LocalObjectReference
</a>
</em> </em>
</td> </td>
<td> <td>
@ -275,9 +273,7 @@ string
<td> <td>
<code>secretRef</code><br> <code>secretRef</code><br>
<em> <em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core"> github.com/fluxcd/pkg/apis/meta.LocalObjectReference
Kubernetes core/v1.LocalObjectReference
</a>
</em> </em>
</td> </td>
<td> <td>
@ -404,9 +400,7 @@ e.g. &lsquo;push&rsquo; for GitHub or &lsquo;Push Hook&rsquo; for GitLab.</p>
<td> <td>
<code>secretRef</code><br> <code>secretRef</code><br>
<em> <em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core"> github.com/fluxcd/pkg/apis/meta.LocalObjectReference
Kubernetes core/v1.LocalObjectReference
</a>
</em> </em>
</td> </td>
<td> <td>
@ -467,9 +461,7 @@ ReceiverStatus
<td> <td>
<code>providerRef</code><br> <code>providerRef</code><br>
<em> <em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core"> github.com/fluxcd/pkg/apis/meta.LocalObjectReference
Kubernetes core/v1.LocalObjectReference
</a>
</em> </em>
</td> </td>
<td> <td>
@ -714,9 +706,7 @@ string
<td> <td>
<code>secretRef</code><br> <code>secretRef</code><br>
<em> <em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core"> github.com/fluxcd/pkg/apis/meta.LocalObjectReference
Kubernetes core/v1.LocalObjectReference
</a>
</em> </em>
</td> </td>
<td> <td>
@ -822,9 +812,7 @@ e.g. &lsquo;push&rsquo; for GitHub or &lsquo;Push Hook&rsquo; for GitLab.</p>
<td> <td>
<code>secretRef</code><br> <code>secretRef</code><br>
<em> <em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core"> github.com/fluxcd/pkg/apis/meta.LocalObjectReference
Kubernetes core/v1.LocalObjectReference
</a>
</em> </em>
</td> </td>
<td> <td>

View File

@ -11,4 +11,4 @@ This is the v1alpha1 API specification for defining events handling and dispatch
## Go Client ## Go Client
* [github.com/fluxcd/pkg/recorder](https://github.com/fluxcd/pkg/tree/master/recorder) * [github.com/fluxcd/pkg/recorder](https://github.com/fluxcd/pkg/tree/main/recorder)

View File

@ -10,7 +10,7 @@ Spec:
type AlertSpec struct { type AlertSpec struct {
// Send events using this provider // Send events using this provider
// +required // +required
ProviderRef corev1.LocalObjectReference `json:"providerRef"` ProviderRef meta.LocalObjectReference `json:"providerRef"`
// Filter events based on severity, defaults to ('info'). // Filter events based on severity, defaults to ('info').
// +kubebuilder:validation:Enum=info;error // +kubebuilder:validation:Enum=info;error

View File

@ -33,7 +33,7 @@ type ProviderSpec struct {
// Secret reference containing the provider webhook URL // Secret reference containing the provider webhook URL
// +optional // +optional
SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"` SecretRef *meta.LocalObjectReference `json:"secretRef,omitempty"`
} }
``` ```
@ -133,11 +133,15 @@ spec:
``` ```
#### Authentication #### Authentication
GitHub. GitLab, and Azure DevOps use personal access tokens to authenticate with their API.
- [GitHub personal access token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token) GitHub. GitLab, and Azure DevOps use personal access tokens to authenticate with their API:
- [GitLab personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)
- [Azure DevOps personal access token](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page) - [GitHub personal access token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token)
Both provider types require a secret in the same format, with the personal access token as the value for the token key. - [GitLab personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)
- [Azure DevOps personal access token](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page)
The providers require a secret in the same format, with the personal access token as the value for the token key:
```yaml ```yaml
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
@ -148,9 +152,11 @@ data:
token: <personal-access-tokens> token: <personal-access-tokens>
``` ```
Bitbucket authenticates using an [app password](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/). It requires Bitbucket authenticates using an [app password](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/).
both the username and the password when authenticating. There for the token needs to be passed with the format `<username>:<app-password>`. It requires both the username and the password when authenticating.
There for the token needs to be passed with the format `<username>:<app-password>`.
A token that is not in this format will cause the provider to fail. A token that is not in this format will cause the provider to fail.
```yaml ```yaml
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret

View File

@ -9,7 +9,7 @@ reconciliation for a group of resources.
type ReceiverSpec struct { type ReceiverSpec struct {
// Type of webhook sender, used to determine // Type of webhook sender, used to determine
// the validation procedure and payload deserialization. // the validation procedure and payload deserialization.
// +kubebuilder:validation:Enum=generic;github;gitlab;harbor;dockerhub;quay // +kubebuilder:validation:Enum=generic;generic-hmac;github;gitlab;bitbucket;harbor;dockerhub;quay;gcr;nexus
// +required // +required
Type string `json:"type"` Type string `json:"type"`
@ -25,7 +25,7 @@ type ReceiverSpec struct {
// Secret reference containing the token used // Secret reference containing the token used
// to validate the payload authenticity // to validate the payload authenticity
// +required // +required
SecretRef corev1.LocalObjectReference `json:"secretRef,omitempty"` SecretRef meta.LocalObjectReference `json:"secretRef,omitempty"`
// This flag tells the controller to suspend subsequent events handling. // This flag tells the controller to suspend subsequent events handling.
// Defaults to false. // Defaults to false.
@ -121,51 +121,38 @@ spec:
namespace: default namespace: default
``` ```
This generic receiver performs token validation. The controller uses the `X-Signature` header to get This generic receiver verifies that the request is legitimate using HMAC.
the hash signature. The signature should be prefixed with the hash function(`sha1`, `sha256`, or `sha512`) like this: The controller uses the `X-Signature` header to get the hash signature.
The signature should be prefixed with the hash function(`sha1`, `sha256`, or `sha512`) like this:
`<hash-function>=<hash-signation>`. `<hash-function>=<hash-signation>`.
1. Generate hash using open ssl and sha1 1. Generate hash signature using OpenSSL:
```sh ```sh
echo -n '<body-of-request>' | openssl dgst -sha1 -hmac "aHR0cHM6Ly9ob29rcy5zbGFjay5jb20vc2VydmljZXMv" echo -n '<request-body>' | openssl dgst -sha1 -hmac "<secret-key>"
``` ```
You can use the flag `sha256` or `sha512` if you want a different hash function
This would output the hash. You can use the flag `sha256` or `sha512` if you want a different hash function.
2. Send a POST request to the webhook url 2. Send a HTTP POST request to the webhook URL:
```
curl <webhook-url> \ ```sh
-X POST \ curl <webhook-url> -X POST -H "X-Signature: sha1=<generated-hash>" -d '<request-body>'
-H "X-Signature: sha1=<generated-hash>" \
-d '<body-of-request>'
``` ```
Generate hash signature using Go: Generate hash signature using Go:
```go ```go
package main func sign(payload, key string) string {
h := hmac.New(sha1.New, []byte(key))
import ( h.Write([]byte(payload))
"crypto/hmac"
"fmt"
"crypto/sha1"
)
// input is the body of the request
// key is your secret token
func GetSignature(input, key string) string {
key_for_sign := []byte(key)
h := hmac.New(sha1.New, key_for_sign)
h.Write([]byte(input))
return fmt.Sprintf("%x", h.Sum(nil)) return fmt.Sprintf("%x", h.Sum(nil))
} }
// Don't forget to set request Headers // set headers
// req.Header.Set("X-Signature", fmt.Sprintf("sha1=%s", <returned string>)) req.Header.Set("X-Signature", fmt.Sprintf("sha1=%s", sign(payload, key)))
``` ```
### GitHub receiver ### GitHub receiver
```yaml ```yaml

8
go.mod
View File

@ -5,12 +5,12 @@ go 1.15
replace github.com/fluxcd/notification-controller/api => ./api replace github.com/fluxcd/notification-controller/api => ./api
require ( require (
github.com/fluxcd/image-reflector-controller/api v0.3.0 github.com/fluxcd/image-reflector-controller/api v0.4.0
github.com/fluxcd/notification-controller/api v0.6.2 github.com/fluxcd/notification-controller/api v0.6.2
github.com/fluxcd/pkg/apis/meta v0.6.0 github.com/fluxcd/pkg/apis/meta v0.7.0
github.com/fluxcd/pkg/recorder v0.0.6 github.com/fluxcd/pkg/recorder v0.0.6
github.com/fluxcd/pkg/runtime v0.7.0 github.com/fluxcd/pkg/runtime v0.8.0
github.com/fluxcd/source-controller/api v0.6.2 github.com/fluxcd/source-controller/api v0.7.0
github.com/go-logr/logr v0.3.0 github.com/go-logr/logr v0.3.0
github.com/google/go-github/v32 v32.1.0 github.com/google/go-github/v32 v32.1.0
github.com/hashicorp/go-retryablehttp v0.6.8 github.com/hashicorp/go-retryablehttp v0.6.8

16
go.sum
View File

@ -97,16 +97,16 @@ github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fluxcd/image-reflector-controller/api v0.3.0 h1:ZG/gb+XUQWX6FSvuzpvxz4kgdRp1mfRJIQyaHx4XMrQ= github.com/fluxcd/image-reflector-controller/api v0.4.0 h1:/7mxmTsjmwmzTchWG06FaTki4hbN4qrVXdT5l/Yio5A=
github.com/fluxcd/image-reflector-controller/api v0.3.0/go.mod h1:tE+oSbiM0bXDhmt1Jrg5o9pdFmXCBxlpPn1GQSCzXv0= github.com/fluxcd/image-reflector-controller/api v0.4.0/go.mod h1:MS3mGjZLnzZsfSqVLGbp0WNJr/k8XRFpw4G6ApLFTbc=
github.com/fluxcd/pkg/apis/meta v0.6.0 h1:3ETc/Yz4qXGKLj+Iti6vKFwVE024WX+Jr+jIHlxj7zs= github.com/fluxcd/pkg/apis/meta v0.7.0 h1:5e8gm4OLqjuKWdrOIY5DEEsjcwzyJFK8rCDesJ+V8IY=
github.com/fluxcd/pkg/apis/meta v0.6.0/go.mod h1:yHuY8kyGHYz22I0jQzqMMGCcHViuzC/WPdo9Gisk8Po= github.com/fluxcd/pkg/apis/meta v0.7.0/go.mod h1:yHuY8kyGHYz22I0jQzqMMGCcHViuzC/WPdo9Gisk8Po=
github.com/fluxcd/pkg/recorder v0.0.6 h1:me/n8syeeGXz50OXoPX3jgIj9AtinvhHdKT9Dy+MbHs= github.com/fluxcd/pkg/recorder v0.0.6 h1:me/n8syeeGXz50OXoPX3jgIj9AtinvhHdKT9Dy+MbHs=
github.com/fluxcd/pkg/recorder v0.0.6/go.mod h1:IfQxfVRSNsWs3B0Yp5B6ObEWwKHILlAx8N7XkoDdhFg= github.com/fluxcd/pkg/recorder v0.0.6/go.mod h1:IfQxfVRSNsWs3B0Yp5B6ObEWwKHILlAx8N7XkoDdhFg=
github.com/fluxcd/pkg/runtime v0.7.0 h1:AMzqHGae0zqDQAmKwa1htjStk2wphwWF0xQw/zD3FY4= github.com/fluxcd/pkg/runtime v0.8.0 h1:cnSBZJLcXlKgjXpFFFExu+4ZncIxmPgNIx+ErLcCLnA=
github.com/fluxcd/pkg/runtime v0.7.0/go.mod h1:1dzGFwtowST5AIW5i9f0Pn0fMhCmOHFyBizuPJSKX+s= github.com/fluxcd/pkg/runtime v0.8.0/go.mod h1:tQwEN+RESjJmtwSSv7I+6bkNM9raIXpGsCjruaIVX6A=
github.com/fluxcd/source-controller/api v0.6.2 h1:xgKZg0Ajeh/jPPePZJriDUgzxgCXIFBPqZso9obtpko= github.com/fluxcd/source-controller/api v0.7.0 h1:QDpr6ZjHtTxw+mc+mZ1p9qRujHb+PzPdoQP3YgWlqOA=
github.com/fluxcd/source-controller/api v0.6.2/go.mod h1:LzLXD6RfQ+4Es+gUuIZE4NCSW2WkWIK91EnVBCMvbQw= github.com/fluxcd/source-controller/api v0.7.0/go.mod h1:u2sdc/QDm0tzXHL7mZVj928hc3MMU+4mKCuAQg+94Bk=
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=

13
main.go
View File

@ -17,7 +17,6 @@ limitations under the License.
package main package main
import ( import (
goflag "flag"
"os" "os"
flag "github.com/spf13/pflag" flag "github.com/spf13/pflag"
@ -28,6 +27,7 @@ import (
crtlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics" crtlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
imagev1 "github.com/fluxcd/image-reflector-controller/api/v1alpha1" imagev1 "github.com/fluxcd/image-reflector-controller/api/v1alpha1"
"github.com/fluxcd/pkg/runtime/client"
"github.com/fluxcd/pkg/runtime/logger" "github.com/fluxcd/pkg/runtime/logger"
"github.com/fluxcd/pkg/runtime/metrics" "github.com/fluxcd/pkg/runtime/metrics"
"github.com/fluxcd/pkg/runtime/probes" "github.com/fluxcd/pkg/runtime/probes"
@ -62,6 +62,7 @@ func main() {
enableLeaderElection bool enableLeaderElection bool
concurrent int concurrent int
watchAllNamespaces bool watchAllNamespaces bool
clientOptions client.Options
logOptions logger.Options logOptions logger.Options
) )
@ -77,11 +78,8 @@ func main() {
"Watch for custom resources in all namespaces, if set to false it will only watch the runtime namespace.") "Watch for custom resources in all namespaces, if set to false it will only watch the runtime namespace.")
flag.Bool("log-json", false, "Set logging to JSON format.") flag.Bool("log-json", false, "Set logging to JSON format.")
flag.CommandLine.MarkDeprecated("log-json", "Please use --log-encoding=json instead.") flag.CommandLine.MarkDeprecated("log-json", "Please use --log-encoding=json instead.")
{ clientOptions.BindFlags(flag.CommandLine)
var fs goflag.FlagSet logOptions.BindFlags(flag.CommandLine)
logOptions.BindFlags(&fs)
flag.CommandLine.AddGoFlagSet(&fs)
}
flag.Parse() flag.Parse()
log := logger.NewLogger(logOptions) log := logger.NewLogger(logOptions)
@ -95,7 +93,8 @@ func main() {
watchNamespace = os.Getenv("RUNTIME_NAMESPACE") watchNamespace = os.Getenv("RUNTIME_NAMESPACE")
} }
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ restConfig := client.GetConfigOrDie(clientOptions)
mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
Scheme: scheme, Scheme: scheme,
MetricsBindAddress: metricsAddr, MetricsBindAddress: metricsAddr,
HealthProbeBindAddress: healthAddr, HealthProbeBindAddress: healthAddr,