cert-manager/cmd/controller/start.go
Louis Taylor cf872a9fc9
Add prometheus metrics
Count certificate requests

Add certificate_expiry_time_seconds metric

Register certificate_expiry_time_seconds metric, fix kind switch and fix metric status result

Export nameForIssuer and remove unneccessary switch

Refactor metrics into controller context

Move metrics collection into functions

Move error checking for metrics collection back into sync function

Remove space

Add TODO

Move update certificate expiry function to metrics package

Refactor metrics functionality

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Run dep ensure

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Fix build

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Refactor

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Fix reporting errors

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Add comments

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Remove unused issuerType

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Update dep inputs-digest

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Don't update status

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Make metrics package level var

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Add prometheusMetricsServerMaxHeaderBytes comment

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Add failures metric

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Remove issue metrics

TODO: hopefully revert this at some point.
Signed-off-by: Louis Taylor <louis@kragniz.eu>

Assign metrics

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Update dep digest

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Fix copyright header

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Remove old metrics server

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Update bazel files

Signed-off-by: Louis Taylor <louis@kragniz.eu>

Clean up

Signed-off-by: Louis Taylor <louis@kragniz.eu>
2018-11-26 13:13:44 +00:00

102 lines
3.3 KiB
Go

/*
Copyright 2018 The Jetstack cert-manager contributors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"fmt"
"io"
"github.com/golang/glog"
"github.com/spf13/cobra"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
_ "k8s.io/client-go/plugin/pkg/client/auth"
"github.com/jetstack/cert-manager/cmd/controller/app"
"github.com/jetstack/cert-manager/cmd/controller/app/options"
_ "github.com/jetstack/cert-manager/pkg/controller/acmechallenges"
_ "github.com/jetstack/cert-manager/pkg/controller/acmechallenges/scheduler"
_ "github.com/jetstack/cert-manager/pkg/controller/acmeorders"
_ "github.com/jetstack/cert-manager/pkg/controller/certificates"
_ "github.com/jetstack/cert-manager/pkg/controller/clusterissuers"
_ "github.com/jetstack/cert-manager/pkg/controller/ingress-shim"
_ "github.com/jetstack/cert-manager/pkg/controller/issuers"
_ "github.com/jetstack/cert-manager/pkg/issuer/acme"
_ "github.com/jetstack/cert-manager/pkg/issuer/ca"
_ "github.com/jetstack/cert-manager/pkg/issuer/selfsigned"
_ "github.com/jetstack/cert-manager/pkg/issuer/vault"
"github.com/jetstack/cert-manager/pkg/util"
)
type CertManagerControllerOptions struct {
ControllerOptions *options.ControllerOptions
StdOut io.Writer
StdErr io.Writer
}
func NewCertManagerControllerOptions(out, errOut io.Writer) *CertManagerControllerOptions {
o := &CertManagerControllerOptions{
ControllerOptions: options.NewControllerOptions(),
StdOut: out,
StdErr: errOut,
}
return o
}
// NewCommandStartCertManagerController is a CLI handler for starting cert-manager
func NewCommandStartCertManagerController(out, errOut io.Writer, stopCh <-chan struct{}) *cobra.Command {
o := NewCertManagerControllerOptions(out, errOut)
cmd := &cobra.Command{
Use: "cert-manager-controller",
Short: fmt.Sprintf("Automated TLS controller for Kubernetes (%s) (%s)", util.AppVersion, util.AppGitCommit),
Long: `
cert-manager is a Kubernetes addon to automate the management and issuance of
TLS certificates from various issuing sources.
It will ensure certificates are valid and up to date periodically, and attempt
to renew certificates at an appropriate time before expiry.`,
// TODO: Refactor this function from this package
Run: func(cmd *cobra.Command, args []string) {
if err := o.Validate(args); err != nil {
glog.Fatalf("error validating options: %s", err.Error())
}
glog.Infof("starting cert-manager %s (revision %s)", util.AppVersion, util.AppGitCommit)
o.RunCertManagerController(stopCh)
},
}
flags := cmd.Flags()
o.ControllerOptions.AddFlags(flags)
return cmd
}
func (o CertManagerControllerOptions) Validate(args []string) error {
errors := []error{}
errors = append(errors, o.ControllerOptions.Validate())
return utilerrors.NewAggregate(errors)
}
func (o CertManagerControllerOptions) RunCertManagerController(stopCh <-chan struct{}) {
app.Run(o.ControllerOptions, stopCh)
}