Skip to content
Snippets Groups Projects
Commit 3feda21f authored by kaiyou's avatar kaiyou
Browse files

First working etcd&apiserver running

parent 6c67a9f1
No related branches found
No related tags found
No related merge requests found
package main
import (
"forge.tedomum.net/acides/hepto/hepto/pkg/components"
"context"
"forge.tedomum.net/acides/hepto/hepto/pkg/wrappers"
"go.etcd.io/etcd/server/v3/embed"
"github.com/sirupsen/logrus"
)
func main() {
components.Apiserver()
ctx := context.Background()
etcdConfig := embed.NewConfig()
etcdConfig.Dir = "/tmp/etcd"
etcd, _ := wrappers.ETCd(ctx, etcdConfig)
api, _ := wrappers.APIServer(ctx, []string{})
logrus.Infof("etcd: %v, api: %v", etcd, api)
select {
case <-api.Context().Done():
break
case <-etcd.Context().Done():
break
}
}
......@@ -3,7 +3,8 @@ module forge.tedomum.net/acides/hepto/hepto
go 1.17
require (
k8s.io/component-base v0.0.0
github.com/sirupsen/logrus v1.8.1
go.etcd.io/etcd/server/v3 v3.5.0
k8s.io/kubernetes v1.23.3
)
......@@ -21,23 +22,41 @@ require (
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/GoogleCloudPlatform/k8s-cloud-provider v1.16.1-0.20210702024009-ea6160c1d0e3 // indirect
github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect
github.com/Microsoft/go-winio v0.4.17 // indirect
github.com/Microsoft/hcsshim v0.8.22 // indirect
github.com/NYTimes/gziphandler v1.1.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e // indirect
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e // indirect
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
github.com/aws/aws-sdk-go v1.38.49 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.2.0 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/cespare/xxhash/v2 v2.1.1 // indirect
github.com/checkpoint-restore/go-criu/v5 v5.0.0 // indirect
github.com/cilium/ebpf v0.6.2 // indirect
github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 // indirect
github.com/container-storage-interface/spec v1.5.0 // indirect
github.com/containerd/cgroups v1.0.1 // indirect
github.com/containerd/console v1.0.2 // indirect
github.com/containerd/containerd v1.4.11 // indirect
github.com/containerd/ttrpc v1.0.2 // indirect
github.com/containernetworking/cni v0.8.1 // indirect
github.com/coreos/go-oidc v2.1.0+incompatible // indirect
github.com/coreos/go-semver v0.3.0 // indirect
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
github.com/cyphar/filepath-securejoin v0.2.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/docker/distribution v2.7.1+incompatible // indirect
github.com/docker/docker v20.10.7+incompatible // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/emicklei/go-restful v2.9.5+incompatible // indirect
github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
github.com/felixge/httpsnoop v1.0.1 // indirect
github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
......@@ -46,11 +65,15 @@ require (
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.5 // indirect
github.com/go-openapi/swag v0.19.14 // indirect
github.com/go-ozzo/ozzo-validation v3.5.0+incompatible // indirect
github.com/godbus/dbus/v5 v5.0.4 // indirect
github.com/gofrs/uuid v4.0.0+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.5.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/btree v1.0.1 // indirect
github.com/google/cadvisor v0.43.0 // indirect
github.com/google/cel-go v0.9.0 // indirect
github.com/google/go-cmp v0.5.5 // indirect
github.com/google/gofuzz v1.1.0 // indirect
......@@ -58,23 +81,39 @@ require (
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
github.com/googleapis/gnostic v0.5.5 // indirect
github.com/gophercloud/gophercloud v0.1.0 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
github.com/heketi/heketi v10.3.0+incompatible // indirect
github.com/imdario/mergo v0.3.5 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/karrick/godirwalk v1.16.1 // indirect
github.com/libopenstorage/openstorage v1.0.0 // indirect
github.com/lithammer/dedent v1.1.0 // indirect
github.com/mailru/easyjson v0.7.6 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 // indirect
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect
github.com/mitchellh/mapstructure v1.4.1 // indirect
github.com/moby/spdystream v0.2.0 // indirect
github.com/moby/sys/mountinfo v0.4.1 // indirect
github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/mrunalp/fileutils v0.5.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.1 // indirect
github.com/opencontainers/runc v1.0.2 // indirect
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect
github.com/opencontainers/selinux v1.8.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 // indirect
......@@ -82,15 +121,28 @@ require (
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.28.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
github.com/quobyte/api v0.1.8 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021 // indirect
github.com/seccomp/libseccomp-golang v0.9.1 // indirect
github.com/soheilhy/cmux v0.1.5 // indirect
github.com/spf13/cobra v1.2.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/stoewer/go-strcase v1.2.0 // indirect
github.com/storageos/go-api v2.2.0+incompatible // indirect
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
github.com/vishvananda/netlink v1.1.0 // indirect
github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect
github.com/vmware/govmomi v0.20.3 // indirect
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
go.etcd.io/etcd/api/v3 v3.5.0 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect
go.etcd.io/etcd/client/v2 v2.305.0 // indirect
go.etcd.io/etcd/client/v3 v3.5.0 // indirect
go.etcd.io/etcd/pkg/v3 v3.5.0 // indirect
go.etcd.io/etcd/raft/v3 v3.5.0 // indirect
go.opencensus.io v0.23.0 // indirect
go.opentelemetry.io/contrib v0.20.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 // indirect
......@@ -115,6 +167,7 @@ require (
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
google.golang.org/api v0.46.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 // indirect
......@@ -134,11 +187,14 @@ require (
k8s.io/client-go v0.0.0 // indirect
k8s.io/cloud-provider v0.0.0 // indirect
k8s.io/cluster-bootstrap v0.0.0 // indirect
k8s.io/component-base v0.0.0 // indirect
k8s.io/component-helpers v0.0.0 // indirect
k8s.io/cri-api v0.0.0 // indirect
k8s.io/csi-translation-lib v0.0.0 // indirect
k8s.io/klog/v2 v2.30.0 // indirect
k8s.io/kube-aggregator v0.0.0 // indirect
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect
k8s.io/kube-scheduler v0.0.0 // indirect
k8s.io/kubelet v0.0.0 // indirect
k8s.io/legacy-cloud-providers v0.0.0 // indirect
k8s.io/mount-utils v0.0.0 // indirect
......@@ -151,6 +207,7 @@ require (
)
replace (
// google.golang.org/grpc => google.golang.org/grpc v1.29.0
k8s.io/api v0.0.0 => k8s.io/api v0.0.0-20220115053135-041d3961b32a
k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.0.0-20220115064227-e6ecc4ac203b
k8s.io/apimachinery v0.0.0 => k8s.io/apimachinery v0.23.3-rc.0
......@@ -177,5 +234,4 @@ replace (
k8s.io/mount-utils v0.0.0 => k8s.io/mount-utils v0.23.3-rc.0
k8s.io/pod-security-admission v0.0.0 => k8s.io/pod-security-admission v0.22.0-beta.0.0.20220115073753-849d5af9bcfd
k8s.io/sample-apiserver v0.0.0 => k8s.io/sample-apiserver v0.0.0-20220115063031-568f7f14069f
)
This diff is collapsed.
package components
import (
"k8s.io/component-base/cli"
"k8s.io/kubernetes/cmd/kube-apiserver/app"
)
func Apiserver() {
command := app.NewAPIServerCommand()
cli.Run(command)
}
package wrappers
import (
"context"
"go.etcd.io/etcd/server/v3/embed"
)
func ETCd(ctx context.Context, config *embed.Config) (*Wrapper, error) {
server, err := embed.StartEtcd(config)
if err != nil {
return nil, err
}
errors := make(chan error)
go func() {
select {
case err := <- server.Err():
errors <- err
return
case <- ctx.Done():
server.Close()
return
}
}()
return &Wrapper{
ctx: ctx,
err: errors,
}, nil
}
package wrappers
import (
"context"
apiserver "k8s.io/kubernetes/cmd/kube-apiserver/app"
kubelet "k8s.io/kubernetes/cmd/kubelet/app"
)
func Kubelet(ctx context.Context, args []string) (*Wrapper, error) {
command := kubelet.NewKubeletCommand()
command.SetArgs(args)
errors := make(chan error)
go func() {
err := command.ExecuteContext(ctx)
errors <- err
}()
return &Wrapper{
ctx: ctx,
err: errors,
}, nil
}
func APIServer(ctx context.Context, args []string) (*Wrapper, error) {
command := apiserver.NewAPIServerCommand()
command.SetArgs(args)
errors := make(chan error)
go func() {
result := command.ExecuteContext(ctx)
errors <- result
}()
return &Wrapper{
ctx: ctx,
err: errors,
}, nil
}
package wrappers
import (
"context"
)
type Wrapper struct {
err <-chan error
ctx context.Context
}
func (w *Wrapper) Err() <-chan error {
return w.err
}
func (w *Wrapper) Context() context.Context {
return w.ctx
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment