mirror of
https://github.com/fluxcd/flux2.git
synced 2026-02-25 09:01:48 +00:00
Merge pull request #790 from fluxcd/certs-for-imagerepo
Give image repository a cert-secret-ref flag
This commit is contained in:
commit
6c9c9c7578
2 changed files with 66 additions and 3 deletions
|
|
@ -34,13 +34,39 @@ var createImageRepositoryCmd = &cobra.Command{
|
||||||
Short: "Create or update an ImageRepository object",
|
Short: "Create or update an ImageRepository object",
|
||||||
Long: `The create image repository command generates an ImageRepository resource.
|
Long: `The create image repository command generates an ImageRepository resource.
|
||||||
An ImageRepository object specifies an image repository to scan.`,
|
An ImageRepository object specifies an image repository to scan.`,
|
||||||
|
Example: ` # Create an ImageRepository object to scan the alpine image repository:
|
||||||
|
flux create image repository alpine-repo --image alpine --interval 20m
|
||||||
|
|
||||||
|
# Create an image repository that uses an image pull secret (assumed to
|
||||||
|
# have been created already):
|
||||||
|
flux create image repository myapp-repo \
|
||||||
|
--secret-ref image-pull \
|
||||||
|
--image ghcr.io/example.com/myapp --interval 5m
|
||||||
|
|
||||||
|
# Create a TLS secret for a local image registry using a self-signed
|
||||||
|
# host certificate, and use it to scan an image. ca.pem is a file
|
||||||
|
# containing the CA certificate used to sign the host certificate.
|
||||||
|
flux create secret tls local-registry-cert --ca-file ./ca.pem
|
||||||
|
flux create image repository app-repo \
|
||||||
|
--cert-secret-ref local-registry-cert \
|
||||||
|
--image local-registry:5000/app --interval 5m
|
||||||
|
|
||||||
|
# Create a TLS secret with a client certificate and key, and use it
|
||||||
|
# to scan a private image registry.
|
||||||
|
flux create secret tls client-cert \
|
||||||
|
--cert-file client.crt --key-file client.key
|
||||||
|
flux create image repository app-repo \
|
||||||
|
--cert-secret-ref client-cert \
|
||||||
|
--image registry.example.com/private/app --interval 5m
|
||||||
|
`,
|
||||||
RunE: createImageRepositoryRun,
|
RunE: createImageRepositoryRun,
|
||||||
}
|
}
|
||||||
|
|
||||||
type imageRepoFlags struct {
|
type imageRepoFlags struct {
|
||||||
image string
|
image string
|
||||||
secretRef string
|
secretRef string
|
||||||
timeout time.Duration
|
certSecretRef string
|
||||||
|
timeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
var imageRepoArgs = imageRepoFlags{}
|
var imageRepoArgs = imageRepoFlags{}
|
||||||
|
|
@ -49,6 +75,7 @@ func init() {
|
||||||
flags := createImageRepositoryCmd.Flags()
|
flags := createImageRepositoryCmd.Flags()
|
||||||
flags.StringVar(&imageRepoArgs.image, "image", "", "the image repository to scan; e.g., library/alpine")
|
flags.StringVar(&imageRepoArgs.image, "image", "", "the image repository to scan; e.g., library/alpine")
|
||||||
flags.StringVar(&imageRepoArgs.secretRef, "secret-ref", "", "the name of a docker-registry secret to use for credentials")
|
flags.StringVar(&imageRepoArgs.secretRef, "secret-ref", "", "the name of a docker-registry secret to use for credentials")
|
||||||
|
flags.StringVar(&imageRepoArgs.certSecretRef, "cert-ref", "", "the name of a secret to use for TLS certificates")
|
||||||
// NB there is already a --timeout in the global flags, for
|
// NB there is already a --timeout in the global flags, for
|
||||||
// controlling timeout on operations while e.g., creating objects.
|
// controlling timeout on operations while e.g., creating objects.
|
||||||
flags.DurationVar(&imageRepoArgs.timeout, "scan-timeout", 0, "a timeout for scanning; this defaults to the interval if not set")
|
flags.DurationVar(&imageRepoArgs.timeout, "scan-timeout", 0, "a timeout for scanning; this defaults to the interval if not set")
|
||||||
|
|
@ -94,6 +121,11 @@ func createImageRepositoryRun(cmd *cobra.Command, args []string) error {
|
||||||
Name: imageRepoArgs.secretRef,
|
Name: imageRepoArgs.secretRef,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if imageRepoArgs.certSecretRef != "" {
|
||||||
|
repo.Spec.CertSecretRef = &meta.LocalObjectReference{
|
||||||
|
Name: imageRepoArgs.certSecretRef,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if createArgs.export {
|
if createArgs.export {
|
||||||
return printExport(exportImageRepository(&repo))
|
return printExport(exportImageRepository(&repo))
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,40 @@ An ImageRepository object specifies an image repository to scan.
|
||||||
flux create image repository <name> [flags]
|
flux create image repository <name> [flags]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
```
|
||||||
|
# Create an ImageRepository object to scan the alpine image repository:
|
||||||
|
flux create image repository alpine-repo --image alpine --interval 20m
|
||||||
|
|
||||||
|
# Create an image repository that uses an image pull secret (assumed to
|
||||||
|
# have been created already):
|
||||||
|
flux create image repository myapp-repo \
|
||||||
|
--secret-ref image-pull \
|
||||||
|
--image ghcr.io/example.com/myapp --interval 5m
|
||||||
|
|
||||||
|
# Create a TLS secret for a local image registry using a self-signed
|
||||||
|
# host certificate, and use it to scan an image. ca.pem is a file
|
||||||
|
# containing the CA certificate used to sign the host certificate.
|
||||||
|
flux create secret tls local-registry-cert --ca-file ./ca.pem
|
||||||
|
flux create image repository app-repo \
|
||||||
|
--cert-secret-ref local-registry-cert \
|
||||||
|
--image local-registry:5000/app --interval 5m
|
||||||
|
|
||||||
|
# Create a TLS secret with a client certificate and key, and use it
|
||||||
|
# to scan a private image registry.
|
||||||
|
flux create secret tls client-cert \
|
||||||
|
--cert-file client.crt --key-file client.key
|
||||||
|
flux create image repository app-repo \
|
||||||
|
--cert-secret-ref client-cert \
|
||||||
|
--image registry.example.com/private/app --interval 5m
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
### Options
|
### Options
|
||||||
|
|
||||||
```
|
```
|
||||||
|
--cert-ref string the name of a secret to use for TLS certificates
|
||||||
-h, --help help for repository
|
-h, --help help for repository
|
||||||
--image string the image repository to scan; e.g., library/alpine
|
--image string the image repository to scan; e.g., library/alpine
|
||||||
--scan-timeout duration a timeout for scanning; this defaults to the interval if not set
|
--scan-timeout duration a timeout for scanning; this defaults to the interval if not set
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue