mirror of https://github.com/grafana/grafana
K8s: Move standalone apiserver CLI to enterprise (#93799)
parent
e672796632
commit
87c81825b7
@ -1,60 +0,0 @@ |
||||
# grafana apiserver (standalone) |
||||
|
||||
The example-apiserver closely resembles the |
||||
[sample-apiserver](https://github.com/kubernetes/sample-apiserver/tree/master) project in code and thus |
||||
allows the same |
||||
[CLI flags](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/) as kube-apiserver. |
||||
It is currently used for testing our deployment pipelines for aggregated servers. You can optionally omit the |
||||
aggregation path altogether and just run this example apiserver as a standalone process. |
||||
|
||||
## Standalone Mode |
||||
|
||||
### Usage |
||||
|
||||
For setting `--grafana.authn.signing-keys-url`, Grafana must be run with `idForwarding = true` while also ensuring |
||||
you have logged in to the instance at least once. |
||||
|
||||
```shell |
||||
go run ./pkg/cmd/grafana apiserver \ |
||||
--runtime-config=example.grafana.app/v0alpha1=true \ |
||||
--grafana-apiserver-dev-mode \ |
||||
--grafana.authn.signing-keys-url="http://localhost:3000/api/signing-keys/keys" \ |
||||
--verbosity 10 \ |
||||
--secure-port 7443 |
||||
``` |
||||
|
||||
### Verify that all works |
||||
|
||||
In dev mode, the standalone server's loopback kubeconfig is written to `./data/grafana-apiserver/apiserver.kubeconfig`. |
||||
|
||||
```shell |
||||
export KUBECONFIG=./data/grafana-apiserver/apiserver.kubeconfig |
||||
|
||||
kubectl api-resources |
||||
NAME SHORTNAMES APIVERSION NAMESPACED KIND |
||||
dummy example.grafana.app/v0alpha1 true DummyResource |
||||
runtime example.grafana.app/v0alpha1 false RuntimeInfo |
||||
``` |
||||
|
||||
### Observability |
||||
|
||||
Logs, metrics and traces are supported. See `--grafana.log.*`, `--grafana.metrics.*` and `--grafana.tracing.*` flags for details. |
||||
|
||||
```shell |
||||
go run ./pkg/cmd/grafana apiserver \ |
||||
--runtime-config=example.grafana.app/v0alpha1=true \ |
||||
--help |
||||
``` |
||||
|
||||
For example, to enable debug logs, metrics and traces (using [self-instrumentation](../../../../devenv/docker/blocks/self-instrumentation/readme.md)) use the following: |
||||
|
||||
```shell |
||||
go run ./pkg/cmd/grafana apiserver \ |
||||
--runtime-config=example.grafana.app/v0alpha1=true \ |
||||
--secure-port=7443 \ |
||||
--grafana.log.level=debug \ |
||||
--verbosity=10 \ |
||||
--grafana.metrics.enable \ |
||||
--grafana.tracing.jaeger.address=http://localhost:14268/api/traces \ |
||||
--grafana.tracing.sampler-param=1 |
||||
``` |
@ -1,157 +0,0 @@ |
||||
package apiserver |
||||
|
||||
import ( |
||||
"context" |
||||
"os" |
||||
"sync" |
||||
|
||||
"github.com/spf13/cobra" |
||||
"go.opentelemetry.io/otel" |
||||
"go.opentelemetry.io/otel/trace" |
||||
genericapiserver "k8s.io/apiserver/pkg/server" |
||||
"k8s.io/component-base/cli" |
||||
|
||||
"github.com/grafana/grafana/pkg/cmd/grafana-server/commands" |
||||
"github.com/grafana/grafana/pkg/infra/log" |
||||
"github.com/grafana/grafana/pkg/infra/tracing" |
||||
"github.com/grafana/grafana/pkg/server" |
||||
"github.com/grafana/grafana/pkg/services/apiserver/standalone" |
||||
) |
||||
|
||||
func newCommandStartStandaloneAPIServer(o *APIServerOptions, stopCh <-chan struct{}) *cobra.Command { |
||||
devAcknowledgementNotice := "The apiserver command is in heavy development. The entire setup is subject to change without notice" |
||||
runtimeConfig := "" |
||||
|
||||
factory, err := server.InitializeAPIServerFactory() |
||||
if err != nil { |
||||
return nil |
||||
} |
||||
o.factory = factory |
||||
|
||||
cmd := &cobra.Command{ |
||||
Use: "apiserver [api group(s)]", |
||||
Short: "Run the grafana apiserver", |
||||
Long: "Run a standalone kubernetes based apiserver that can be aggregated by a root apiserver. " + |
||||
devAcknowledgementNotice, |
||||
Example: "grafana apiserver --runtime-config=example.grafana.app/v0alpha1=true", |
||||
RunE: func(c *cobra.Command, args []string) error { |
||||
if err := log.SetupConsoleLogger("debug"); err != nil { |
||||
return nil |
||||
} |
||||
|
||||
if err := o.Validate(); err != nil { |
||||
return err |
||||
} |
||||
|
||||
runtime, err := standalone.ReadRuntimeConfig(runtimeConfig) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
apis, err := o.factory.GetEnabled(runtime) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
// Currently TracingOptions.ApplyTo, which will configure/initialize tracing,
|
||||
// happens after loadAPIGroupBuilders. Hack to workaround this for now to allow
|
||||
// the tracer to be initialized at a later stage, when tracer is available.
|
||||
// TODO: Fix so that TracingOptions.ApplyTo happens before or during loadAPIGroupBuilders.
|
||||
tracer := newLateInitializedTracingService() |
||||
|
||||
ctx, cancel := context.WithCancel(c.Context()) |
||||
go func() { |
||||
<-stopCh |
||||
cancel() |
||||
}() |
||||
|
||||
// Load each group from the args
|
||||
if err := o.loadAPIGroupBuilders(ctx, tracer, apis); err != nil { |
||||
return err |
||||
} |
||||
|
||||
// Finish the config (a noop for now)
|
||||
if err := o.Complete(); err != nil { |
||||
return err |
||||
} |
||||
|
||||
// o.Config(tracer) definitely needs to happen before we override the tracer below
|
||||
// using tracer.InitTracer with the real tracer
|
||||
config, err := o.Config(tracer) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
if o.Options.TracingOptions.TracingService != nil { |
||||
tracer.InitTracer(o.Options.TracingOptions.TracingService) |
||||
} |
||||
|
||||
defer o.factory.Shutdown() |
||||
|
||||
if err := o.RunAPIServer(ctx, config); err != nil { |
||||
return err |
||||
} |
||||
|
||||
return nil |
||||
}, |
||||
} |
||||
|
||||
cmd.Flags().StringVar(&runtimeConfig, "runtime-config", "", "A set of key=value pairs that enable or disable built-in APIs.") |
||||
|
||||
o.AddFlags(cmd.Flags()) |
||||
|
||||
return cmd |
||||
} |
||||
|
||||
func RunCLI(opts commands.ServerOptions) int { |
||||
stopCh := genericapiserver.SetupSignalHandler() |
||||
|
||||
commands.SetBuildInfo(opts) |
||||
|
||||
options := newAPIServerOptions(os.Stdout, os.Stderr) |
||||
cmd := newCommandStartStandaloneAPIServer(options, stopCh) |
||||
|
||||
return cli.Run(cmd) |
||||
} |
||||
|
||||
type lateInitializedTracingProvider struct { |
||||
trace.TracerProvider |
||||
tracer *lateInitializedTracingService |
||||
} |
||||
|
||||
func (tp lateInitializedTracingProvider) Tracer(name string, options ...trace.TracerOption) trace.Tracer { |
||||
return tp.tracer.getTracer() |
||||
} |
||||
|
||||
type lateInitializedTracingService struct { |
||||
tracing.Tracer |
||||
mutex sync.RWMutex |
||||
} |
||||
|
||||
func newLateInitializedTracingService() *lateInitializedTracingService { |
||||
ts := &lateInitializedTracingService{ |
||||
Tracer: tracing.NewNoopTracerService(), |
||||
} |
||||
|
||||
tp := &lateInitializedTracingProvider{ |
||||
tracer: ts, |
||||
} |
||||
|
||||
otel.SetTracerProvider(tp) |
||||
|
||||
return ts |
||||
} |
||||
|
||||
func (s *lateInitializedTracingService) getTracer() tracing.Tracer { |
||||
s.mutex.RLock() |
||||
t := s.Tracer |
||||
s.mutex.RUnlock() |
||||
return t |
||||
} |
||||
|
||||
func (s *lateInitializedTracingService) InitTracer(tracer *tracing.TracingService) { |
||||
s.mutex.Lock() |
||||
s.Tracer = tracer |
||||
s.mutex.Unlock() |
||||
} |
||||
|
||||
var _ tracing.Tracer = &lateInitializedTracingService{} |
@ -1,15 +0,0 @@ |
||||
--- |
||||
apiVersion: apiregistration.k8s.io/v1 |
||||
kind: APIService |
||||
metadata: |
||||
name: v0alpha1.example.grafana.app |
||||
spec: |
||||
version: v0alpha1 |
||||
insecureSkipTLSVerify: true |
||||
group: example.grafana.app |
||||
groupPriorityMinimum: 1000 |
||||
versionPriority: 15 |
||||
service: |
||||
name: example-apiserver |
||||
namespace: grafana |
||||
port: 7443 |
@ -1,8 +0,0 @@ |
||||
apiVersion: service.grafana.app/v0alpha1 |
||||
kind: ExternalName |
||||
metadata: |
||||
name: example-apiserver |
||||
namespace: grafana |
||||
spec: |
||||
host: localhost |
||||
|
@ -1,3 +0,0 @@ |
||||
resources: |
||||
- apiservice.yaml |
||||
- externalname.yaml |
@ -1,201 +0,0 @@ |
||||
package apiserver |
||||
|
||||
import ( |
||||
"context" |
||||
"fmt" |
||||
"io" |
||||
"net" |
||||
"path" |
||||
|
||||
"github.com/grafana/pyroscope-go/godeltaprof/http/pprof" |
||||
"github.com/spf13/pflag" |
||||
"k8s.io/apimachinery/pkg/runtime/schema" |
||||
utilerrors "k8s.io/apimachinery/pkg/util/errors" |
||||
genericapiserver "k8s.io/apiserver/pkg/server" |
||||
"k8s.io/apiserver/pkg/server/mux" |
||||
"k8s.io/client-go/tools/clientcmd" |
||||
netutils "k8s.io/utils/net" |
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log" |
||||
"github.com/grafana/grafana/pkg/infra/tracing" |
||||
grafanaAPIServer "github.com/grafana/grafana/pkg/services/apiserver" |
||||
"github.com/grafana/grafana/pkg/services/apiserver/builder" |
||||
"github.com/grafana/grafana/pkg/services/apiserver/standalone" |
||||
standaloneoptions "github.com/grafana/grafana/pkg/services/apiserver/standalone/options" |
||||
"github.com/grafana/grafana/pkg/services/apiserver/utils" |
||||
"github.com/grafana/grafana/pkg/setting" |
||||
) |
||||
|
||||
const ( |
||||
dataPath = "data/grafana-apiserver" // same as grafana core
|
||||
) |
||||
|
||||
// APIServerOptions contains the state for the apiserver
|
||||
type APIServerOptions struct { |
||||
factory standalone.APIServerFactory |
||||
builders []builder.APIGroupBuilder |
||||
Options *standaloneoptions.Options |
||||
AlternateDNS []string |
||||
logger log.Logger |
||||
|
||||
StdOut io.Writer |
||||
StdErr io.Writer |
||||
} |
||||
|
||||
func newAPIServerOptions(out, errOut io.Writer) *APIServerOptions { |
||||
logger := log.New("grafana-apiserver") |
||||
|
||||
return &APIServerOptions{ |
||||
logger: logger, |
||||
StdOut: out, |
||||
StdErr: errOut, |
||||
Options: standaloneoptions.New(logger, grafanaAPIServer.Codecs.LegacyCodec()), |
||||
} |
||||
} |
||||
|
||||
func (o *APIServerOptions) loadAPIGroupBuilders(ctx context.Context, tracer tracing.Tracer, apis []schema.GroupVersion) error { |
||||
o.builders = []builder.APIGroupBuilder{} |
||||
for _, gv := range apis { |
||||
api, err := o.factory.MakeAPIServer(ctx, tracer, gv) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
o.builders = append(o.builders, api) |
||||
} |
||||
|
||||
if len(o.builders) < 1 { |
||||
return fmt.Errorf("no apis matched ") |
||||
} |
||||
|
||||
// Install schemas
|
||||
for _, b := range o.builders { |
||||
if err := b.InstallSchema(grafanaAPIServer.Scheme); err != nil { |
||||
return err |
||||
} |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (o *APIServerOptions) Config(tracer tracing.Tracer) (*genericapiserver.RecommendedConfig, error) { |
||||
if err := o.Options.RecommendedOptions.SecureServing.MaybeDefaultWithSelfSignedCerts( |
||||
"localhost", o.AlternateDNS, []net.IP{netutils.ParseIPSloppy("127.0.0.1")}, |
||||
); err != nil { |
||||
return nil, fmt.Errorf("error creating self-signed certificates: %v", err) |
||||
} |
||||
|
||||
o.Options.RecommendedOptions.Authentication.RemoteKubeConfigFileOptional = true |
||||
|
||||
// TODO: determine authorization, currently insecure because Authorization provided by recommended options doesn't work
|
||||
// reason: an aggregated server won't be able to post subjectaccessreviews (Grafana doesn't have this kind)
|
||||
// exact error: the server could not find the requested resource (post subjectaccessreviews.authorization.k8s.io)
|
||||
o.Options.RecommendedOptions.Authorization = nil |
||||
|
||||
o.Options.RecommendedOptions.Admission = nil |
||||
o.Options.RecommendedOptions.Etcd = nil |
||||
|
||||
if o.Options.RecommendedOptions.CoreAPI.CoreAPIKubeconfigPath == "" { |
||||
o.Options.RecommendedOptions.CoreAPI = nil |
||||
} |
||||
|
||||
serverConfig := genericapiserver.NewRecommendedConfig(grafanaAPIServer.Codecs) |
||||
|
||||
if err := o.Options.ApplyTo(serverConfig); err != nil { |
||||
return nil, fmt.Errorf("failed to apply options to server config: %w", err) |
||||
} |
||||
|
||||
if factoryOptions := o.factory.GetOptions(); factoryOptions != nil { |
||||
err := factoryOptions.ApplyTo(serverConfig) |
||||
if err != nil { |
||||
return nil, fmt.Errorf("factory's applyTo func failed: %s", err.Error()) |
||||
} |
||||
} |
||||
|
||||
serverConfig.DisabledPostStartHooks = serverConfig.DisabledPostStartHooks.Insert("generic-apiserver-start-informers") |
||||
serverConfig.DisabledPostStartHooks = serverConfig.DisabledPostStartHooks.Insert("priority-and-fairness-config-consumer") |
||||
|
||||
// Add OpenAPI specs for each group+version
|
||||
err := builder.SetupConfig( |
||||
grafanaAPIServer.Scheme, |
||||
serverConfig, |
||||
o.builders, |
||||
setting.BuildStamp, |
||||
setting.BuildVersion, |
||||
setting.BuildCommit, |
||||
setting.BuildBranch, |
||||
o.factory.GetBuildHandlerChainFunc(tracer, o.builders), |
||||
) |
||||
return serverConfig, err |
||||
} |
||||
|
||||
func (o *APIServerOptions) AddFlags(fs *pflag.FlagSet) { |
||||
o.Options.AddFlags(fs) |
||||
|
||||
if factoryOptions := o.factory.GetOptions(); factoryOptions != nil { |
||||
factoryOptions.AddFlags(fs) |
||||
} |
||||
} |
||||
|
||||
// Validate validates APIServerOptions
|
||||
func (o *APIServerOptions) Validate() error { |
||||
errors := make([]error, 0) |
||||
|
||||
if factoryOptions := o.factory.GetOptions(); factoryOptions != nil { |
||||
errors = append(errors, factoryOptions.ValidateOptions()...) |
||||
} |
||||
|
||||
if errs := o.Options.Validate(); len(errs) > 0 { |
||||
errors = append(errors, errs...) |
||||
} |
||||
|
||||
return utilerrors.NewAggregate(errors) |
||||
} |
||||
|
||||
// Complete fills in fields required to have valid data
|
||||
func (o *APIServerOptions) Complete() error { |
||||
return nil |
||||
} |
||||
|
||||
func (o *APIServerOptions) RunAPIServer(ctx context.Context, config *genericapiserver.RecommendedConfig) error { |
||||
delegationTarget := genericapiserver.NewEmptyDelegate() |
||||
completedConfig := config.Complete() |
||||
|
||||
server, err := completedConfig.New("standalone-apiserver", delegationTarget) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
// Install the API Group+version
|
||||
// #TODO figure out how to configure storage type in o.Options.StorageOptions
|
||||
err = builder.InstallAPIs(grafanaAPIServer.Scheme, grafanaAPIServer.Codecs, server, config.RESTOptionsGetter, o.builders, o.Options.StorageOptions, |
||||
o.Options.MetricsOptions.MetricsRegisterer, nil, nil, nil, // no need for server lock in standalone
|
||||
) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
// write the local config to disk
|
||||
if o.Options.ExtraOptions.DevMode { |
||||
if err = clientcmd.WriteToFile( |
||||
utils.FormatKubeConfig(server.LoopbackClientConfig), |
||||
path.Join(dataPath, "apiserver.kubeconfig"), |
||||
); err != nil { |
||||
return err |
||||
} |
||||
} |
||||
|
||||
if config.EnableProfiling { |
||||
deltaProfiling{}.Install(server.Handler.NonGoRestfulMux) |
||||
} |
||||
|
||||
return server.PrepareRun().RunWithContext(ctx) |
||||
} |
||||
|
||||
// deltaProfiling adds godeltapprof handlers for pprof under /debug/pprof.
|
||||
type deltaProfiling struct{} |
||||
|
||||
// Install register godeltapprof handlers to the given mux.
|
||||
func (d deltaProfiling) Install(c *mux.PathRecorderMux) { |
||||
c.UnlistedHandleFunc("/debug/pprof/delta_heap", pprof.Heap) |
||||
c.UnlistedHandleFunc("/debug/pprof/delta_block", pprof.Block) |
||||
c.UnlistedHandleFunc("/debug/pprof/delta_mutex", pprof.Mutex) |
||||
} |
@ -1,6 +0,0 @@ |
||||
# apiserver-certificates |
||||
|
||||
These certificates are used for development and testing ONLY. They are generated using the script under |
||||
[hack/make-aggregator-pki.sh](./hack/make-aggregator-pki.sh). |
||||
|
||||
The CA, server and client certificates are each 10 years of expiration. |
@ -1,24 +0,0 @@ |
||||
-----BEGIN CERTIFICATE----- |
||||
MIID9zCCAt+gAwIBAgIUeRrA5l+Rl4LkHPP1DmMFlYzrhW4wDQYJKoZIhvcNAQEL |
||||
BQAwgYoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApOZXcgU3dlZGVuMRMwEQYDVQQH |
||||
DApTdG9ja2hvbG0gMRAwDgYDVQQKDAdHcmFmYW5hMQwwCgYDVQQLDANSJkQxEDAO |
||||
BgNVBAMMB3Rlc3QtY2ExHzAdBgkqhkiG9w0BCQEWEHRlc3RAZ3JhZmFuYS5hcHAw |
||||
HhcNMjQwODA1MjMxMzUzWhcNMzQwODAzMjMxMzUzWjCBijELMAkGA1UEBhMCVVMx |
||||
EzARBgNVBAgMCk5ldyBTd2VkZW4xEzARBgNVBAcMClN0b2NraG9sbSAxEDAOBgNV |
||||
BAoMB0dyYWZhbmExDDAKBgNVBAsMA1ImRDEQMA4GA1UEAwwHdGVzdC1jYTEfMB0G |
||||
CSqGSIb3DQEJARYQdGVzdEBncmFmYW5hLmFwcDCCASIwDQYJKoZIhvcNAQEBBQAD |
||||
ggEPADCCAQoCggEBANj6qsutYwof0e0zHrp35Dey+kQxi+VTr/sAKlSoyySP4fmQ |
||||
9Qn8mDY4HyJ1oOJFpFAlD0Qp1xGdbvcrlvjoieqmfenW342fza0wqS5K8qkd2rJ7 |
||||
khdAE2mACZTFSjmAa8+1rIRWnR0SaHBmDgdxBfNkET+n+cX+WsDMhmzNvPoPDS/V |
||||
8LaNih/eOUzb/5hamvD8CNLKakes0u/EsdxOsGFWCkpE1mg9yg0YPms5qUAj9pdV |
||||
iPH8B5zA1JoukZCrVGPv6R76fJI1LEohiASNFt9cgs2dhdk6QHzGyqNq3T3Cw8yI |
||||
Cug/Kk9DGqwq9OeXtADa4hhPebj04C4hxk0AT2UCAwEAAaNTMFEwHQYDVR0OBBYE |
||||
FBBn2SXiiItJQsJZ7MTvIn1s1t3jMB8GA1UdIwQYMBaAFBBn2SXiiItJQsJZ7MTv |
||||
In1s1t3jMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBABcCcwsg |
||||
jrcNZheAaKXtdcZT01+doQhaOvhZQhY5L+bCnB0wkBXRJzv8ne+KgLx7auFQP8/2 |
||||
OoPgaiA0R+XtImCkyBd+cr4mo2tYVpHt9+B0HaYGzGoXt0dre47ihlgkqoSwmgvG |
||||
9++pfrbQGRd5Xb/j0468sd5uQy1PPhsjCzFZTuxXcaAN13MDNikYjjn5mc5coklu |
||||
hCFH54PgP/PUDXxI0v/QUjNOj7hAdMkqOjzFD9Fze1KjtS3aSZvaaZVrM3x/YS8y |
||||
1IUgyocgoOKCqBOeEict+g/xghFDe7r2Dlgps/hPD1ojijBl83g5i079jW4y9jm+ |
||||
osFOTGnRx2u0CpE= |
||||
-----END CERTIFICATE----- |
@ -1,28 +0,0 @@ |
||||
-----BEGIN PRIVATE KEY----- |
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDY+qrLrWMKH9Ht |
||||
Mx66d+Q3svpEMYvlU6/7ACpUqMskj+H5kPUJ/Jg2OB8idaDiRaRQJQ9EKdcRnW73 |
||||
K5b46Inqpn3p1t+Nn82tMKkuSvKpHdqye5IXQBNpgAmUxUo5gGvPtayEVp0dEmhw |
||||
Zg4HcQXzZBE/p/nF/lrAzIZszbz6Dw0v1fC2jYof3jlM2/+YWprw/AjSympHrNLv |
||||
xLHcTrBhVgpKRNZoPcoNGD5rOalAI/aXVYjx/AecwNSaLpGQq1Rj7+ke+nySNSxK |
||||
IYgEjRbfXILNnYXZOkB8xsqjat09wsPMiAroPypPQxqsKvTnl7QA2uIYT3m49OAu |
||||
IcZNAE9lAgMBAAECggEAYUTyNy+J1BqSrd66WkZv6SZTeimp+Mrs+71FvMEUnFXi |
||||
LFJ2/xydEcVT88s+reEheYo7j0egcfWdLrH8UqZQWYB8ts0MV715YzgKx8Vyhizr |
||||
gxLRWZnwed2brfVJwoBXFHzxkzwO398GMckWZfCdhdBoyRwg5UkS3xZw9qq+mmw8 |
||||
hvt88sDzHwnk/9rMY6KLNhWNiCSAxU65AlpktWRGy2e9wAtyzN+WX/iQwsiAyhk2 |
||||
TV2bHQxRE7FT9hg4UBxzWruYRj4jkLKdH4tVqVKLsV7KutAOiYj3hCjYzOac/5QG |
||||
XrTRhN/ewAqJCTOI9K8BVT27l3QxREcq480auDwIawKBgQDzOr6+ILgPdqdGX9Nu |
||||
HoLnNuU6OdFsTJ3qXSp4AGv8ufq47PJmTp3F2ZN9RTDr6Fih7UKhApVvFOy6/Hlr |
||||
vb0MbL9FOe+2ejtnVmNi13AMexW+nmnOs1oSghXYIbt51/n+5bFmzAo6RFDEG0YT |
||||
mtRWMj4mifMI0XH31yRk+Yjp6wKBgQDkXxdG0OmoDwlrlbHjVOpEg7/A0diBHfb9 |
||||
yh4MbaVmd6rGgdNkJYq1qB6ctJcLYpKq1QGgj6FyNDNyY/T4lIxRuSHqC2v1Mjt/ |
||||
TaL1BhMsH2Q6+bT8mlmM4cNNgSVHfISJv2mMuKfEqb+uY0y8UU6/lYmwzC5rH4bs |
||||
TgPNSLmH7wKBgQCk8F9M2y81/UZt6Kmd8T7fwFAt7etgP4yO02LrQY35Mb0eDkBK |
||||
tGE1O9hSiMsmDseb9yLJwNDJJS1rl65XK7G5bT0/mow9+CG0b9axvlqTfBxAyXgC |
||||
3YjlKCXcDPPvKlCzU9u7U/5TiOQkOEKLJOF9GlEfHUkb37wjT1e0yarYxQKBgFNF |
||||
nT40RU8DlKLHJeNH/lhXVh9gJTsHix2Fiqlrfck8T2gsxMEas1aD5A2uB/mdyu9B |
||||
1mMOnIcBI9VNP3E48WWHRSeLXKU+2NUVoRsJSQpos+qRTP5i5c5qMAXd1pMXg1ib |
||||
FEi8uGgMoZlcGgn89+MCCwANo8tp5o/Z7qb3Ire/AoGANmc8BAGgKanJVAfu7gDU |
||||
AgxRg5T0/C6vpWh5k/gFS7AQqgnx8EcRYtuCD4Er5GFRdcyb9AuZccyKzWI5JS89 |
||||
YOmJPrfDd7VzBsrOjwJCXcV6tUUq6yO4Ra8vKlIw7T+mMYZh7xWwGnT8UA+X9F+7 |
||||
yV6kPpraMD/dFbo2TZoNMjc= |
||||
-----END PRIVATE KEY----- |
@ -1,27 +0,0 @@ |
||||
-----BEGIN CERTIFICATE----- |
||||
MIIEjDCCA3SgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx |
||||
EzARBgNVBAgMCk5ldyBTd2VkZW4xEzARBgNVBAcMClN0b2NraG9sbSAxEDAOBgNV |
||||
BAoMB0dyYWZhbmExDDAKBgNVBAsMA1ImRDEQMA4GA1UEAwwHdGVzdC1jYTEfMB0G |
||||
CSqGSIb3DQEJARYQdGVzdEBncmFmYW5hLmFwcDAeFw0yNDA4MDUyMzEzNTRaFw0z |
||||
NDA4MDMyMzEzNTRaMC8xFDASBgNVBAMMC2RldmVsb3BtZW50MRcwFQYDVQQKDA5z |
||||
eXN0ZW06bWFzdGVyczCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMz3 |
||||
SSM62uPCNG7mbdlgE0bYcpT8f1ZFmyaauXzbqdTF0/VxGCh9YVBFnqlAdfAUFasN |
||||
HBLQz63PniOWbzmhXZBkrCF/nozg7PgiXJ7aM5ppJyYulOI3sldH49V8KWzcGiJo |
||||
ZE13kKIlCqnOanErj4RnaxVJvMmWOlt6Zn/ljkDFvwypaOeIX/YO1zuZ95BqGpDh |
||||
u4CXipKeCM0AjXNvKrHCi5QbNEF0FMyvsX+s76wZtZSpB7vbIfj/h5Z4Scfyovmy |
||||
cZeqgL2mDAnosKw8/KYAgkcArMHoScTfdCjWthJQlPybJKgMKOJI9OehuP1a89A9 |
||||
t+T/T8ZT75x0YADw+56WDcsYGECiaixrkpB0aiPBtgDm1i1z7ooqSfAfZa0PEgPT |
||||
L680TK66qXI2GFtNqUkU6+xZEfvuxOdZRXkuIVeQ4UMqaiW9y37ppvKzX4llOD2D |
||||
VP86D0JxCCuJqxlzSAGbxK61c8mdqM1SKAa5O5Kl0KHxVkGk4zHYtrHqWsy6YOIM |
||||
CqLMA2vLAeqYwSEn2eQBkTNdhSulrB6JPNBDPNB9+wX5EOX3w+x9lRxn59kQgKyV |
||||
anf1cm1UYeqjsLPhBjpuwVtHhEAc8uJrSZBM3oKPSYEYxwEo+QG8rcKIpjV9gtCu |
||||
T3e/WBWlDVBm0NwbxtY/rYc5ggPHMtPhFxBDhjJpAgMBAAGjVzBVMBMGA1UdJQQM |
||||
MAoGCCsGAQUFBwMCMB0GA1UdDgQWBBQ+z7tF4/VANXrXgsY0PVQFFo6csjAfBgNV |
||||
HSMEGDAWgBQQZ9kl4oiLSULCWezE7yJ9bNbd4zANBgkqhkiG9w0BAQsFAAOCAQEA |
||||
NagU3hqJr5wEU79202Rj+aqbzWJlz1jvZVR6PHILB0deTtvYk1EXeVgyjwmz7PW3 |
||||
DLYcpwgW3bTdxhejduFNzKazDOZZ2blUlZlHs1PoBb/ipnw4g+ozO+ZyGs05gCu8 |
||||
DrsxUKX7bpVcKGfPNVg8L4xZbanizO1XUiv6PDBBRZhKXSl+KO9+aN2C/yRnYmpV |
||||
9dyuMI9nFoMB0K7rxTxiRCIPIWs8nsGouLa6lg6/I+xTAjV0IqNz0rQ66UWJOr3x |
||||
vLGFdMMaDUSbsNlu18/sCJd+G0rkh24YE6e3I1wGqE9jr4iYsMhkhfp0u4Qojmfp |
||||
3/7IGZYzvVIN/PvSFBBgZw== |
||||
-----END CERTIFICATE----- |
@ -1,27 +0,0 @@ |
||||
-----BEGIN CERTIFICATE REQUEST----- |
||||
MIIEmjCCAoICAQAwLzEUMBIGA1UEAwwLZGV2ZWxvcG1lbnQxFzAVBgNVBAoMDnN5 |
||||
c3RlbTptYXN0ZXJzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzPdJ |
||||
Izra48I0buZt2WATRthylPx/VkWbJpq5fNup1MXT9XEYKH1hUEWeqUB18BQVqw0c |
||||
EtDPrc+eI5ZvOaFdkGSsIX+ejODs+CJcntozmmknJi6U4jeyV0fj1XwpbNwaImhk |
||||
TXeQoiUKqc5qcSuPhGdrFUm8yZY6W3pmf+WOQMW/DKlo54hf9g7XO5n3kGoakOG7 |
||||
gJeKkp4IzQCNc28qscKLlBs0QXQUzK+xf6zvrBm1lKkHu9sh+P+HlnhJx/Ki+bJx |
||||
l6qAvaYMCeiwrDz8pgCCRwCswehJxN90KNa2ElCU/JskqAwo4kj056G4/Vrz0D23 |
||||
5P9PxlPvnHRgAPD7npYNyxgYQKJqLGuSkHRqI8G2AObWLXPuiipJ8B9lrQ8SA9Mv |
||||
rzRMrrqpcjYYW02pSRTr7FkR++7E51lFeS4hV5DhQypqJb3Lfumm8rNfiWU4PYNU |
||||
/zoPQnEIK4mrGXNIAZvErrVzyZ2ozVIoBrk7kqXQofFWQaTjMdi2sepazLpg4gwK |
||||
oswDa8sB6pjBISfZ5AGRM12FK6WsHok80EM80H37BfkQ5ffD7H2VHGfn2RCArJVq |
||||
d/VybVRh6qOws+EGOm7BW0eEQBzy4mtJkEzego9JgRjHASj5AbytwoimNX2C0K5P |
||||
d79YFaUNUGbQ3BvG1j+thzmCA8cy0+EXEEOGMmkCAwEAAaAmMCQGCSqGSIb3DQEJ |
||||
DjEXMBUwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBAB7x |
||||
82Hy942/7nSbz9gJUsJ70sYcre0VRduIMzP1Ytk/ni+1QXDZSmdSrgR0cbTL4VIZ |
||||
zSt5Bp2vxBJqHmGPOXv5oWI+nGrfWzmzBGoGNk4cdNW2ZZCn6Om4L16gLYIlxmm1 |
||||
vgCgnPOYMEi5qtgG6676wSX7gf5+j1gWVDEwNFil8wBUIlA9QRbc2NN0T6479Z4b |
||||
4tUHzUpGuf788OPUqAdxpkH1xZBKW8HEGsk1+NdHgb5krE2ElwvN9qWX5f2DzzwL |
||||
sQf3A2IrO4lrso4RHao4X3V+/DOZCx+FK/oXqzyoS4YNnNy6B0377LgYkuuJsbOo |
||||
IFC7vRhBORvAXEXD/scLEsGKuQzs1vLLiwOp7pBOcGZzxOoqoXc2A6h64qpZKriq |
||||
T1rK6rmrttaXqYUokjbg/ggpcXCC1BGxsoRvGQoN6aQNV27zUh2wpZqpCpVLoN21 |
||||
eCqM9LVoPMCRqn7ItXE9oJhasPlKDO6amHL3CtxjvU2meXoa+nCia8lL4Sb9pSkB |
||||
O5eX4k3H/m4zjrpbqp7UdnidcYn4zfrjRBr65bqNr1sOxwUDWOa0kqaOKrgqwhWn |
||||
ld6zkuekuwzrOK4+Dpf5ybWnVFi8WSz6k9TqQIaeMrzeCBVboufl/ygoIRsTqp7N |
||||
WcKuZdUx8t16hFZ/NgpHRgfZI9pYdzi2vNSZ6WMM |
||||
-----END CERTIFICATE REQUEST----- |
@ -1,52 +0,0 @@ |
||||
-----BEGIN PRIVATE KEY----- |
||||
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 |
||||
nL1C44m2dHWfIuDuGDs008g/12A53A== |
||||
-----END PRIVATE KEY----- |
@ -1,28 +0,0 @@ |
||||
-----BEGIN CERTIFICATE----- |
||||
MIIE0jCCA7qgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx |
||||
EzARBgNVBAgMCk5ldyBTd2VkZW4xEzARBgNVBAcMClN0b2NraG9sbSAxEDAOBgNV |
||||
BAoMB0dyYWZhbmExDDAKBgNVBAsMA1ImRDEQMA4GA1UEAwwHdGVzdC1jYTEfMB0G |
||||
CSqGSIb3DQEJARYQdGVzdEBncmFmYW5hLmFwcDAeFw0yNDA4MDUyMzEzNTVaFw0z |
||||
NDA4MDMyMzEzNTVaMCkxEjAQBgNVBAMMCWxvY2FsaG9zdDETMBEGA1UECgwKYWdn |
||||
cmVnYXRlZDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMbgGuvCKonn |
||||
9KgW58wqgxiykVbbmT82HmhgOBw5CSg7lVnKQlRzfvUtwZX7UhHXYxOCu0no7RqD |
||||
Y19QiGOx6SQlaXSMxqPL1PpWMQdX6j/I/H1pHMJ8Ynyd956VlhKUOIQBJMVd46Bg |
||||
6IEU4izuJ9uqEuHQrO8lb2eaTXAjsOmtIImxBI7xFsxp42wJyo6ptGetyaNCw7UF |
||||
e8xYmBVSLyfiN/drBx/lcwMiDgzfzf8BsavC96Fa/HujXkybAIyVid2DxKODPT9+ |
||||
7MA1ZY0/Nz3ySKSxIIbfL+1cPihR2GGy1Qwa/GuuJSGAwzy6D/9am5/K3yR927Bk |
||||
OgMUCIlpGlSDY1qFd79o/n9BJ9FJmlTMgIZ6RokaXAU2uaiE6v7YPYGkXoIz3ncc |
||||
SBprVom2h3RmM3qDbmXio1gGsDL/2SI+Hpnq2zhCzL28K+bZA6ukYpCNyyaYF9O6 |
||||
X6qi56zGCw/igTJgaYKMsNMSoX+3eHSFxj5JeF4bWcC4qTqmzvfz0HhvX+jjky/V |
||||
LHCh9ddH1umT/Ss/IxaNarXxXHoUmN33FgFQ+tML4eTvosG6IxUdJ/34qBT+dWk4 |
||||
zNIhStTUNiYPbcSfv8qKLHhMAuZOLsTATLsFQt7bzGZwV8HAuCiqzjg9p4R/dRjE |
||||
OLhQLZfKkYl99Mgli6v/hooEBSORCulVAgMBAAGjgaIwgZ8wPgYDVR0RBDcwNYIo |
||||
djBhbHBoYTEuZXhhbXBsZS5ncmFmYW5hLmFwcC5kZWZhdWx0LnN2Y4IJbG9jYWxo |
||||
b3N0MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUFvrZ |
||||
B0vSR3B7HcNPCZrZ2H7sFw0wHwYDVR0jBBgwFoAUEGfZJeKIi0lCwlnsxO8ifWzW |
||||
3eMwDQYJKoZIhvcNAQELBQADggEBAGYZYrY+eFmgwFp/ohIcWnekdOiCr7qjnmRo |
||||
LyNU/EbFz0HUV+yTrtoXLjv8S9D9Yc029Dgj2f31Hp7cOGjUfd0t1DgTBChcFgVr |
||||
E5ZbhmKEM0tQiBMI6mHvy6hFT+nc9/yftnndHRUyR4xm6E1dMFqpMyMdYKojRmbn |
||||
F6znVTcjBr4OiDnfTUkqYO8kc3I0qvA5ou4jXAJ9mu3UEbEjwc6C2/Mrr48a42Df |
||||
rHrwqwnM3DC2+SWVocctk1PRZqMFWypJ9U/HbKPbId79YyHNsI0XtxizV2sX5oXD |
||||
1NPPEBeEXZ3Nv/gn4d0h57UoBML9165fRRQSe7CkIl8kZigHGCg= |
||||
-----END CERTIFICATE----- |
@ -1,29 +0,0 @@ |
||||
-----BEGIN CERTIFICATE REQUEST----- |
||||
MIIE3jCCAsYCAQAwKTESMBAGA1UEAwwJbG9jYWxob3N0MRMwEQYDVQQKDAphZ2dy |
||||
ZWdhdGVkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxuAa68Iqief0 |
||||
qBbnzCqDGLKRVtuZPzYeaGA4HDkJKDuVWcpCVHN+9S3BlftSEddjE4K7SejtGoNj |
||||
X1CIY7HpJCVpdIzGo8vU+lYxB1fqP8j8fWkcwnxifJ33npWWEpQ4hAEkxV3joGDo |
||||
gRTiLO4n26oS4dCs7yVvZ5pNcCOw6a0gibEEjvEWzGnjbAnKjqm0Z63Jo0LDtQV7 |
||||
zFiYFVIvJ+I392sHH+VzAyIODN/N/wGxq8L3oVr8e6NeTJsAjJWJ3YPEo4M9P37s |
||||
wDVljT83PfJIpLEght8v7Vw+KFHYYbLVDBr8a64lIYDDPLoP/1qbn8rfJH3bsGQ6 |
||||
AxQIiWkaVINjWoV3v2j+f0En0UmaVMyAhnpGiRpcBTa5qITq/tg9gaRegjPedxxI |
||||
GmtWibaHdGYzeoNuZeKjWAawMv/ZIj4emerbOELMvbwr5tkDq6RikI3LJpgX07pf |
||||
qqLnrMYLD+KBMmBpgoyw0xKhf7d4dIXGPkl4XhtZwLipOqbO9/PQeG9f6OOTL9Us |
||||
cKH110fW6ZP9Kz8jFo1qtfFcehSY3fcWAVD60wvh5O+iwbojFR0n/fioFP51aTjM |
||||
0iFK1NQ2Jg9txJ+/yooseEwC5k4uxMBMuwVC3tvMZnBXwcC4KKrOOD2nhH91GMQ4 |
||||
uFAtl8qRiX30yCWLq/+GigQFI5EK6VUCAwEAAaBwMG4GCSqGSIb3DQEJDjFhMF8w |
||||
PgYDVR0RBDcwNYIodjBhbHBoYTEuZXhhbXBsZS5ncmFmYW5hLmFwcC5kZWZhdWx0 |
||||
LnN2Y4IJbG9jYWxob3N0MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAN |
||||
BgkqhkiG9w0BAQsFAAOCAgEAGmr6CnGfcm+DapmhQnQLyq0HyCqKD0PKKamofQLb |
||||
YVMiCF/zKDV4+gIs2kMK3uWeZ9r4xDa9nEgBw6U2vi14AI79hmpETCrfvK6hterI |
||||
Znb2TQMYnUY3rt26DFNf3/21/jb/1cn/9z55TaHJGqqlJmvB1LfYJoMN8t6A6xg4 |
||||
J8TYjBuwQQOqFAPRuxmGag44PSC9V5e6gajz56RPyZz2kmdbfPZRNCnqileDWZla |
||||
7pilwP8QAhrJCPP25edc/5hP2WNTEH/GTa5FFmkNMKEHn6+dnBuMu5w1SygKUYWz |
||||
37qE7jntZC/RGVZ//npwsVyaa+NbgJNjhg/EMj+sWb/Eet2ETq7v9FCM0QG3HNUk |
||||
6d6af2YHI3Fo89y5ty1DOydBa5lIxy6gDTwameJYoTem71nPlRtU2b4VFBWZ4xwE |
||||
ac7Xmon+Z7tOHVwcCPp1cTwJ2TNwha0JxsW0C1g3QG59ILU5FMPlqOuDJi41uWql |
||||
Q56O+a6MnK7GfGxBMMf4FSlbV3xjUGxqyGy5KwIcsy+u/3axCWPUcoz3g0pApbGO |
||||
pfsu5Ptr/xMtYjLRXbEcH9Byqx/LrBvD2upwNnlfMtgWIlg/EnZ26Mgardu/NwQq |
||||
3fpYv00VWbvBE/B/5p5zmEpA67COFejiwVTsbeN345Ue2mq59DNg6BZmaxKH3Sbq |
||||
Kz8= |
||||
-----END CERTIFICATE REQUEST----- |
@ -1,52 +0,0 @@ |
||||
-----BEGIN PRIVATE KEY----- |
||||
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 |
||||
C+DUGz2rplZQ/4PtNOcz7reeAFvu6A== |
||||
-----END PRIVATE KEY----- |
Loading…
Reference in new issue