Giter VIP home page Giter VIP logo

foundation's People

Contributors

anikiej avatar dependabot[bot] avatar edganiukov avatar ghuntley avatar gmichelo avatar htr avatar hugosantos avatar mantas-sidlauskas avatar n-g avatar nichtverstehen avatar nicolasalt avatar szferi avatar vkarunx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

foundation's Issues

go, node, etc should be pinned per workspace

At the moment we lookup the per-semantic version (e.g. "1.18") latest version, but that's problematic as it may yield non-reproducibility. I.e. an unknown bug in Go 1.18.1 may surface in a user's codebase which wasn't present with Go 1.18, and they won't have control what version is used.

We could either pin versions at the server level, or continue to use the workspace configuration as a lock file.

grpc-gateway is generated even if no service exports as HTTP

% fn deploy api/server
Failed:
  failed to resolve ingress:
    {
     "path": "/",
     "kind": "grpc-gateway",
     "owner": "namespacelabs.dev/ea-example/api/server",
     "service": "grpc-gateway-1088nk7bp49rpynz6hqshk6epx"
    }: ingress definition without port

if no service sets exportServicesAsHttp and the server does not depend on

		"namespacelabs.dev/foundation/std/go/grpc/gateway",

configmaps should be immutable

this will allow performing deployment updates atomically. if the new config is wrong, the new deployment will fail to scale up, and thus the old deployment won't scale down. And because the previous configmap has not been modified, the previous deployment can continue running.

This introduces a trade-off in that deployments are potentially no longer zero-action (unless the naming scheme is content based).

k3d doesn't work against zfs

And we don't tell users about it, and it also doesn't fail. It just hangs forever because there's no node to schedule to.

main.fn.go should be refactored to use per-package codegen

I moved std/server/tracing to std/monitoring/tracing and that yielded code changes in std/testdata/gogrpcserver. That's unexpected, when the server doesn't directly depend on it. Ideally all changes should have happened within std/go/grpc as that's where the direct dependency lies.

`fn` is too big (78209594)

$ go install github.com/bradfitz/shotizam@latest
$ nix-shell -p sqlite
shotizam --sqlite ~/go/bin/fn
sqlite> .width 80
sqlite> .mode column
sqlite> select func, sum(size) from bin where func <> '' group by 1 order by 2 desc limit 40;
Func                                                                              sum(size)
--------------------------------------------------------------------------------  ---------
k8s.io/api/core/v1.init                                                           114444
go.opentelemetry.io/otel/semconv/v1%2e7%2e0.init                                  74031
github.com/jhump/protoreflect/desc/protoparse.(*protoParserImpl).Parse            54220
golang.org/x/tools/internal/imports.init                                          37032
k8s.io/api/core/v1.(*PodSpec).Unmarshal                                           33570
github.com/googleapis/gnostic/openapiv2.NewSchema                                 32402
k8s.io/api/extensions/v1beta1.init                                                28147
k8s.io/api/core/v1.(*VolumeSource).Unmarshal                                      27305
github.com/googleapis/gnostic/openapiv2.(*Schema).ToRawInfo                       26873
github.com/googleapis/gnostic/openapiv2.NewFormDataParameterSubSchema             26384
github.com/googleapis/gnostic/openapiv2.NewQueryParameterSubSchema                26369
github.com/googleapis/gnostic/openapiv2.NewPathParameterSubSchema                 26122
github.com/googleapis/gnostic/openapiv2.NewHeaderParameterSubSchema               25432
unicode.init                                                                      23988
github.com/googleapis/gnostic/openapiv2.NewHeader                                 22656
go/types.(*Checker).builtin                                                       21813
github.com/googleapis/gnostic/openapiv2.NewPrimitivesItems                        20943
k8s.io/api/core/v1.(*PersistentVolumeSource).Unmarshal                            20795
k8s.io/apimachinery/pkg/apis/meta/v1.init                                         20722
cuelang.org/go/internal/core/adt.BinOp                                            20349
golang.org/x/net/html.inBodyIM                                                    20064
k8s.io/api/extensions/v1beta1.(*PodSecurityPolicySpec).Unmarshal                  19686
k8s.io/api/policy/v1beta1.(*PodSecurityPolicySpec).Unmarshal                      19681
github.com/googleapis/gnostic/openapiv2.(*FormDataParameterSubSchema).ToRawInfo   19515
github.com/googleapis/gnostic/openapiv2.(*QueryParameterSubSchema).ToRawInfo      19513
k8s.io/api/core/v1.(*EphemeralContainerCommon).Unmarshal                          19369
k8s.io/api/core/v1.(*Container).Unmarshal                                         19354
github.com/googleapis/gnostic/openapiv2.(*PathParameterSubSchema).ToRawInfo       19317
github.com/miekg/dns.init                                                         19039
net/http.init                                                                     18767
github.com/googleapis/gnostic/openapiv2.(*HeaderParameterSubSchema).ToRawInfo     18639
k8s.io/api/apps/v1beta2.init                                                      18607
cuelang.org/go/cue.Value.Expr                                                     18206
k8s.io/api/core/v1.(*ServiceSpec).Unmarshal                                       17919
k8s.io/api/apps/v1.init                                                           17755
github.com/googleapis/gnostic/openapiv2.NewOperation                              17745
cuelang.org/go/internal/core/convert.convertRec                                   17561
namespacelabs.dev/foundation/runtime/kubernetes.boundEnv.prepareServerDeployment  17484
k8s.io/apimachinery/pkg/apis/meta/v1.(*ObjectMeta).Unmarshal                      17416
go/types.(*Checker).stmt                                                          17220

Consider renaming the "Service" concept to something else

gRPC and Kubernetes have "services" with different meanings. The user always needs to keep in mind the difference, for example in this service definition:

service: fn.#Service & {
  exportService: $proto.services.MyService
}

first two "service"s mean aFoundation service, the other three mean a gRPC service.

cmd/dev: Adapt to package changes more incrementally

	// Changing the graph is fairly heavy-weight at this point, as it will lead to
	// a rebuild of all packages (although they'll likely hit the cache), as well
	// as a full re-deployment, re-port forward, etc. Ideally this would be more
	// incremental by having narrower dependencies. E.g. single server would have
	// a single build, single deployment, etc. And changes to siblings servers
	// would only impact themselves, not all servers.

"fn dev" continues to run even if "fn prepare" was not called before

It reports an error but continues to build something:

fn dev api/server

Failed:
  No registry configured in the environment "dev".

    Run `fn prepare --env=dev` to set it up.

   fn dev web ui running at: http://0.0.0.0:4002


[+] 3.2s 146/149 actions completed (3 waiting)
 buildkit.build-image (3.2s)
 => (buildkit) Image: docker.io/library/node:16.13-alpine@sha256:2f50f4a428f8b5280817c (1.8s)
 => (buildkit) resolve docker.io/library/node:16.13-alpine@sha256:2f50f4a428f8b5280817 (1.8s)

provisioning tools are too big (e.g. `std/monitoring/prometheus/tool`) (47228666)

$ cd std/monitoring/prometheus/tool
$ go build .
$ shotizam --sqlite ./tool
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite> .width 80
sqlite> .mode column
sqlite> select func, sum(size) from bin where func <> '' group by 1 order by 2 desc limit 40;
Func                                                                              sum(size)
--------------------------------------------------------------------------------  ---------
k8s.io/api/core/v1.init                                                           114444
go.opentelemetry.io/otel/semconv/v1%2e7%2e0.init                                  74031
k8s.io/api/core/v1.(*PodSpec).Unmarshal                                           33570
github.com/googleapis/gnostic/openapiv2.NewSchema                                 32402
k8s.io/api/extensions/v1beta1.init                                                28147
k8s.io/api/core/v1.(*VolumeSource).Unmarshal                                      27305
github.com/googleapis/gnostic/openapiv2.(*Schema).ToRawInfo                       26873
github.com/googleapis/gnostic/openapiv2.NewFormDataParameterSubSchema             26384
github.com/googleapis/gnostic/openapiv2.NewQueryParameterSubSchema                26369
github.com/googleapis/gnostic/openapiv2.NewPathParameterSubSchema                 26122
github.com/googleapis/gnostic/openapiv2.NewHeaderParameterSubSchema               25432
unicode.init                                                                      23988
github.com/googleapis/gnostic/openapiv2.NewHeader                                 22656
github.com/googleapis/gnostic/openapiv2.NewPrimitivesItems                        20943
k8s.io/api/core/v1.(*PersistentVolumeSource).Unmarshal                            20795
k8s.io/apimachinery/pkg/apis/meta/v1.init                                         20722
cuelang.org/go/internal/core/adt.BinOp                                            20349
k8s.io/api/extensions/v1beta1.(*PodSecurityPolicySpec).Unmarshal                  19686
k8s.io/api/policy/v1beta1.(*PodSecurityPolicySpec).Unmarshal                      19681
github.com/googleapis/gnostic/openapiv2.(*FormDataParameterSubSchema).ToRawInfo   19515
github.com/googleapis/gnostic/openapiv2.(*QueryParameterSubSchema).ToRawInfo      19513
k8s.io/api/core/v1.(*EphemeralContainerCommon).Unmarshal                          19369
k8s.io/api/core/v1.(*Container).Unmarshal                                         19354
github.com/googleapis/gnostic/openapiv2.(*PathParameterSubSchema).ToRawInfo       19317
github.com/miekg/dns.init                                                         19039
net/http.init                                                                     18767
github.com/googleapis/gnostic/openapiv2.(*HeaderParameterSubSchema).ToRawInfo     18639
k8s.io/api/apps/v1beta2.init                                                      18607
cuelang.org/go/cue.Value.Expr                                                     18206
k8s.io/api/core/v1.(*ServiceSpec).Unmarshal                                       17919
k8s.io/api/apps/v1.init                                                           17755
github.com/googleapis/gnostic/openapiv2.NewOperation                              17745
cuelang.org/go/internal/core/convert.convertRec                                   17561
k8s.io/apimachinery/pkg/apis/meta/v1.(*ObjectMeta).Unmarshal                      17416
github.com/pelletier/go-toml.(*Decoder).valueFromToml                             16804
github.com/googleapis/gnostic/openapiv2.(*Header).ToRawInfo                       16641
k8s.io/api/core/v1.(*LimitRangeItem).Unmarshal                                    16267
github.com/rs/zerolog.appendFieldList                                             15964
k8s.io/api/core/v1.(*PodSpec).MarshalToSizedBuffer                                15750
github.com/googleapis/gnostic/openapiv2.(*PrimitivesItems).ToRawInfo              15365

sqlite> select what, sum(size) from bin group by 1;
What                                                                              sum(size)
--------------------------------------------------------------------------------  ---------
TODO                                                                              21250385
fixedheader                                                                       1804360
funcdata                                                                          757704
funcname                                                                          2391177
pcdata0-regmap                                                                    918225
pcdata1-stackmap                                                                  514078
pcdata2-inltree                                                                   415211
pcfile                                                                            280382
pcln                                                                              1725919
pcsp                                                                              630537
text                                                                              16540688

sqlite> select pkg, sum(size) from bin where pkg <> '' group by 1 order by 2 desc limit 40;
Pkg                                                                               sum(size)
--------------------------------------------------------------------------------  ---------
k8s.io/api/core/v1                                                                2966669
github.com/googleapis/gnostic/openapiv2                                           776507
k8s.io/api/extensions/v1beta1                                                     717679
k8s.io/apimachinery/pkg/apis/meta/v1                                              686677
runtime                                                                           626044
google.golang.org/protobuf/internal/impl                                          607948
github.com/gogo/protobuf/proto                                                    543242
github.com/miekg/dns                                                              472001
net/http                                                                          444679
k8s.io/api/apps/v1beta2                                                           441845
k8s.io/api/apps/v1                                                                394835
github.com/modern-go/reflect2                                                     376543
github.com/json-iterator/go                                                       363885
cuelang.org/go/internal/core/adt                                                  308625
k8s.io/api/apps/v1beta1                                                           304606
crypto/tls                                                                        297581
k8s.io/api/autoscaling/v2beta2                                                    286246
k8s.io/api/autoscaling/v2                                                         282855
k8s.io/api/networking/v1                                                          274751
k8s.io/api/storage/v1beta1                                                        270853
k8s.io/api/autoscaling/v1                                                         269080
gopkg.in/yaml%2ev3                                                                266964
k8s.io/api/policy/v1beta1                                                         258417
net                                                                               256316
k8s.io/api/flowcontrol/v1alpha1                                                   255593
k8s.io/api/flowcontrol/v1beta1                                                    255076
k8s.io/api/flowcontrol/v1beta2                                                    254244
k8s.io/api/autoscaling/v2beta1                                                    246844
gopkg.in/yaml%2ev2                                                                234381
k8s.io/api/storage/v1                                                             228460
cuelang.org/go/cue                                                                225177
github.com/pelletier/go-toml                                                      223051
github.com/jhump/protoreflect/dynamic                                             216964
math/big                                                                          204866
k8s.io/api/authorization/v1beta1                                                  201456
k8s.io/api/authorization/v1                                                       196644
reflect                                                                           185571
google.golang.org/protobuf/internal/filedesc                                      184235
github.com/rs/zerolog                                                             176777
k8s.io/api/rbac/v1beta1                                                           172386

first run performance seems poor

This was a system that had been previously fn prepared. Building all dependencies took ~100secs, and then deployment took 60sec+?


   Servers deployed:

    [✓] namespacelabs.dev/ea-example/api/server took 68.5s
    [✓] namespacelabs.dev/foundation/std/monitoring/grafana/server took 7ms
    [✓] namespacelabs.dev/foundation/std/monitoring/jaeger took 3.0s
    [✓] namespacelabs.dev/universe/db/postgres/server took 20.0s
    [✓] namespacelabs.dev/foundation/std/monitoring/prometheus/server took 3.0s

kubectl shows

Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  2m38s                 default-scheduler  Successfully assigned dev-ea-example-sdtan/api-backend-1088nk7bp49rpynz6hqshk6epx-7664868744-cgq9s to k3d-fn-server-0
  Normal   Pulling    2m37s                 kubelet            Pulling image "k3d-registry.nslocal.dev:41000/namespacelabs.dev/universe/db/postgres/init@sha256:35e6cde1d537c5226b92b8ca03e76911cca5ae3d723b4233e5bd57a2a3b2aff3"
  Normal   Pulled     2m33s                 kubelet            Successfully pulled image "k3d-registry.nslocal.dev:41000/namespacelabs.dev/universe/db/postgres/init@sha256:35e6cde1d537c5226b92b8ca03e76911cca5ae3d723b4233e5bd57a2a3b2aff3" in 4.422877377s
  Warning  BackOff    106s (x3 over 2m18s)  kubelet            Back-off restarting failed container
  Normal   Pulled     94s (x3 over 2m28s)   kubelet            Container image "k3d-registry.nslocal.dev:41000/namespacelabs.dev/universe/db/postgres/init@sha256:35e6cde1d537c5226b92b8ca03e76911cca5ae3d723b4233e5bd57a2a3b2aff3" already present on machine
  Normal   Created    93s (x4 over 2m32s)   kubelet            Created container init-init-postgres
  Normal   Started    93s (x4 over 2m31s)   kubelet            Started container init-init-postgres
  Normal   Pulling    92s                   kubelet            Pulling image "k3d-registry.nslocal.dev:41000/namespacelabs.dev/ea-example/api/server@sha256:ad4d48e5f8c6556c5832e52c70629edaf2973b031d5728e47e39c888bd2481ac"
  Normal   Pulled     90s                   kubelet            Successfully pulled image "k3d-registry.nslocal.dev:41000/namespacelabs.dev/ea-example/api/server@sha256:ad4d48e5f8c6556c5832e52c70629edaf2973b031d5728e47e39c888bd2481ac" in 1.844780084s
  Normal   Created    89s                   kubelet            Created container api-backend
  Normal   Started    89s                   kubelet            Started container api-backend

Also for postgres, it took a bit:

Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  2m36s  default-scheduler  Successfully assigned dev-ea-example-sdtan/postgresql-422eajpp5jt8pjwfp2vrq5f0ce-0 to k3d-fn-server-0
  Normal  Pulling    2m35s  kubelet            Pulling image "index.docker.io/library/postgres:14.0"
  Normal  Pulled     2m17s  kubelet            Successfully pulled image "index.docker.io/library/postgres:14.0" in 17.960460966s
  Normal  Created    2m16s  kubelet            Created container postgresql
  Normal  Started    2m16s  kubelet            Started container postgresql

It seems it was all image pulling. May make sense to surface this time in fn itself, by e.g. having fn upload the image to k8s.

binary definitions should support multiple layers

Currently:

binary: {
	name:       "ns.tool"
	from: go_package: "."
}

Ideally, we'd have something like:

binary: {
  name: "ns.tool"
  with: [
    { go_binary: "." },
    { data: "foobar/data.txt" }
  ]
}

With an optional short-form:

binary: {
  name: "ns.tool"
  with: { go_binary: "." }
}

Better support for nodejs

This is a broad topic, here is a list of things to tackle with priorities:

  • Node.js service - Node.js service communication.
  • Fix hot reload protocol (hot reload doesn't work at the moment).
  • #434
  • Don't require full package name for local types in "availableIn".
  • gRPC gateway/ingress with Envoy: #85
  • Make port forwarded for a particular deployment sticky: #29
  • #433
  • #428
  • #429
  • Tests for demo apps.
  • #430
  • #431
  • #432
  • #424

nginx fails with read-only filesystem

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/03/04 17:05:32 [warn] 1#1: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2022/03/04 17:05:32 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (30: Read-only file system)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (30: Read-only file system)

When deploying to AWS, container images seems to be uploaded to the default AWS region, not necessarily matching the region configured via `fn prepare`

# Set up us-west-1 as the default
aws configure

# Create a cluster in eu-west-1
eksctl create cluster -n zerotwo -r eu-west-1
aws eks update-kubeconfig --region eu-west-1 --name zerotwo

# Prepare Foundation
fn prepare --env=prod [email protected] --aws_profile=default

# Try to deploy. It uses "us-west-1", not "eu-west-1"
fn deploy --env=prod web/server api/server --use_prebuilts=false

Failed:
  failed to resolve prepare:
    failed to resolve namespacelabs.dev/ea-example/web/server:config:
      HEAD https://922014153962.dkr.ecr.us-west-1.amazonaws.com/v2/namespacelabs.dev/ea-example/web/server/manifests/sha256:890a8aa62eb2ddac102d7e806520e8959085c58e0da3f8a7629ce555b4a216b5: unexpected status code 401 Unauthorized (HEAD responses have no body, use GET for details)

Wev UI: display the "grpcurl" call command for each gRPC method

So the user can easily issue a gRPC request to a running server.

Copying a command that can potentially mutate something can be dangerous, options:

  • Copy the "list" command per service instead of per method.
  • Copy a command with # in the beginning, so accidental pasting it to the console wouldn't do anything.

hide/fade/dont port forward irrelevant ports

fn dev web/server yields

   Services exported (port forwarded):

    [✓] Jaeger/collector          127.0.0.1:46327 --> 14268           # namespacelabs.dev/foundation/std/monitoring/jaeger
    [✓] Jaeger/frontend           http://127.0.0.1:44581              # namespacelabs.dev/foundation/std/monitoring/jaeger
    [✓] api-backend/grpc-gateway  http://127.0.0.1:41069              # namespacelabs.dev/ea-example/api/server
    [✓] postgresql/postgres       127.0.0.1:37265 --> 5432            # namespacelabs.dev/universe/db/postgres/server
    [✓] Prometheus/prometheus     http://127.0.0.1:45213              # namespacelabs.dev/foundation/std/monitoring/prometheus/server
    [✓] todos                     grpcurl -plaintext 127.0.0.1:37097  # namespacelabs.dev/ea-example/api/todos
    [✓] trends                    grpcurl -plaintext 127.0.0.1:39899  # namespacelabs.dev/ea-example/api/trends
    [✓] Grafana/web               http://127.0.0.1:43515              # namespacelabs.dev/foundation/std/monitoring/grafana/server

    [✓] web-server/http           http://127.0.0.1:33107              # namespacelabs.dev/ea-example/web/server

   Ingress endpoints forwarded to your workstation:

    [✓] http://web-server.dev.nslocal.host:40080
    [✓] http://grpc-gateway-1088nk7bp49rpynz6hqshk6epx.dev.nslocal.host:40080
    [✓] grpcurl -plaintext todos-grpc.dev.nslocal.host:40080 # not currently working, see namespacelabs/legacy-foundation#341

When it comes to web/http, what's setup for the user is really the ingress addresses. web-server/http is even in bold, which may seem to indicate it's important, but it's not. It's an implementation detail and users shouldn't be using this port forward.

Some of the services above are also internal and not really relevant.

So am inclined to hide them by default (perhaps with an option to port forward all ports), the outcome would be:

   Services exported to your workstation (port forwarded):

    [✓] Jaeger/frontend           http://127.0.0.1:44581              # namespacelabs.dev/foundation/std/monitoring/jaeger
    [✓] postgresql/postgres       127.0.0.1:37265 --> 5432            # namespacelabs.dev/universe/db/postgres/server
    [✓] Prometheus/prometheus     http://127.0.0.1:45213              # namespacelabs.dev/foundation/std/monitoring/prometheus/server
    [✓] todos                     grpcurl -plaintext 127.0.0.1:37097  # namespacelabs.dev/ea-example/api/todos
    [✓] trends                    grpcurl -plaintext 127.0.0.1:39899  # namespacelabs.dev/ea-example/api/trends
    [✓] Grafana/web               http://127.0.0.1:43515              # namespacelabs.dev/foundation/std/monitoring/grafana/server

   Ingress endpoints forwarded to your workstation:

    [✓] http://web-server.dev.nslocal.host:40080
    [✓] http://grpc-gateway-1088nk7bp49rpynz6hqshk6epx.dev.nslocal.host:40080
    [✓] grpcurl -plaintext todos-grpc.dev.nslocal.host:40080 # not currently working, see namespacelabs/legacy-foundation#341

Should also add a human label to services or make them more self-explanatory, e.g. "prometheus/frontend" vs "prometheus/prometheus".

push versionedfs as input to buildkit solve, instead of getting local access to fs

I.e. push a precomputed input we have a digest on, instead of letting buildkit slurp the filesystem.

This would yield full visibility into reproducibility of buildkit invocations, without having to move all orchestration to buildkit itself.

I did give this a first try, by implementing a filesync provider that implements the "local" provider. But buildkit's client tries to be too clever and does client-side parsing of all ops (!) to look for Source ops, and if there's a local one without a "local dir" marked, it bails out.

from buildkit's client/solve.go:

if src := op.GetSource(); src != nil {
    if strings.HasPrefix(src.Identifier, "local://") {
        name := strings.TrimPrefix(src.Identifier, "local://")
        d, ok := localDirs[name]
        if !ok {
            return nil, errors.Errorf("local directory %s not enabled", name)
        }
        dirs = append(dirs, filesync.SyncedDir{Name: name, Dir: d, Map: resetUIDAndGID})
    }
}

The super simple filesync implementation to read from a fs.FS: https://gist.github.com/hugosantos/2e495a966d1ad7bfdb7b230e415dbbf6

Writing to stderr from provisioning tools does not show up in fn output

Add

	fmt.Fprintf(os.Stderr, "Foo string: Grafana tool runs")

to std/monitoring/grafana/tool/main.go

run ea-example % fn deploy api/server --use_prebuilts=false --log_actions

output

Mar  7 10:37:20.524 UTC namespacelabs.dev/ea-example/api/server package.parse took=2ms
Mar  7 10:37:20.526 UTC namespacelabs.dev/foundation/std/go/grpc/gateway package.parse took=466us
Mar  7 10:37:20.526 UTC namespacelabs.dev/foundation/std/go/grpc/gateway package.load took=543us
Mar  7 10:37:20.527 UTC namespacelabs.dev/foundation/std/go/grpc package.parse took=1ms
Mar  7 10:37:20.527 UTC namespacelabs.dev/ea-example/api/summer package.parse took=1ms
Mar  7 10:37:20.528 UTC namespacelabs.dev/ea-example/api/summer package.load took=2ms
Mar  7 10:37:20.528 UTC namespacelabs.dev/foundation/std/go/core package.parse took=794us
Mar  7 10:37:20.529 UTC namespacelabs.dev/foundation/std/go/core package.load took=1ms
Mar  7 10:37:20.529 UTC namespacelabs.dev/foundation/std/go/grpc/metrics package.parse took=332us
Mar  7 10:37:20.529 UTC namespacelabs.dev/ea-example/api/todos package.parse took=4ms
Mar  7 10:37:20.529 UTC namespacelabs.dev/foundation/std/go/grpc/interceptors package.parse took=444us
Mar  7 10:37:20.530 UTC namespacelabs.dev/foundation/std/go/grpc/interceptors package.load took=663us
Mar  7 10:37:20.532 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server package.parse took=324us
Mar  7 10:37:20.532 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server package.load took=461us
Mar  7 10:37:20.532 UTC namespacelabs.dev/universe/db/postgres/server package.parse took=339us
Mar  7 10:37:20.532 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/tool package.parse took=171us
Mar  7 10:37:20.532 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/tool package.load took=249us
Mar  7 10:37:20.532 UTC namespacelabs.dev/foundation/std/monitoring/prometheus package.parse took=2ms
Mar  7 10:37:20.532 UTC namespacelabs.dev/universe/db/postgres/server/creds/tool package.parse took=205us
Mar  7 10:37:20.533 UTC namespacelabs.dev/universe/db/postgres/server/creds/tool package.load took=243us
Mar  7 10:37:20.533 UTC namespacelabs.dev/universe/db/postgres/server/creds package.parse took=570us
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server package.parse took=262us
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server package.load took=377us
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/grafana/tool package.parse took=430us
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/grafana/tool package.load took=496us
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/grafana package.parse took=1ms
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/grafana package.load took=1ms
Mar  7 10:37:20.533 UTC namespacelabs.dev/foundation/std/monitoring/prometheus package.load took=3ms
Mar  7 10:37:20.534 UTC namespacelabs.dev/universe/db/postgres/creds package.parse took=884us
Mar  7 10:37:20.534 UTC namespacelabs.dev/foundation/std/go/grpc/metrics package.load took=4ms
Mar  7 10:37:20.534 UTC namespacelabs.dev/foundation/std/monitoring/jaeger package.parse took=418us
Mar  7 10:37:20.535 UTC namespacelabs.dev/foundation/std/monitoring/jaeger package.load took=548us
Mar  7 10:37:20.535 UTC namespacelabs.dev/foundation/std/server/tracing package.parse took=971us
Mar  7 10:37:20.535 UTC namespacelabs.dev/foundation/std/server/tracing package.load took=1ms
Mar  7 10:37:20.535 UTC namespacelabs.dev/foundation/std/go/grpc package.load took=10ms
Mar  7 10:37:20.536 UTC namespacelabs.dev/foundation/std/secrets/kubernetes package.parse took=445us
Mar  7 10:37:20.536 UTC namespacelabs.dev/foundation/std/secrets/kubernetes package.load took=547us
Mar  7 10:37:20.536 UTC namespacelabs.dev/foundation/std/secrets package.parse took=2ms
Mar  7 10:37:20.536 UTC namespacelabs.dev/foundation/std/secrets package.load took=2ms
Mar  7 10:37:20.537 UTC namespacelabs.dev/universe/db/postgres/creds package.load took=4ms
Mar  7 10:37:20.537 UTC namespacelabs.dev/universe/db/postgres/server/creds package.load took=5ms
Mar  7 10:37:20.537 UTC namespacelabs.dev/universe/db/postgres/server package.load took=5ms
Mar  7 10:37:20.537 UTC namespacelabs.dev/universe/db/postgres/incluster/tool package.parse took=127us
Mar  7 10:37:20.537 UTC namespacelabs.dev/universe/db/postgres/incluster/tool package.load took=214us
Mar  7 10:37:20.537 UTC namespacelabs.dev/universe/db/postgres/incluster package.parse took=8ms
Mar  7 10:37:20.538 UTC namespacelabs.dev/universe/db/postgres/tool package.parse took=160us
Mar  7 10:37:20.539 UTC namespacelabs.dev/universe/db/postgres/tool package.load took=195us
Mar  7 10:37:20.539 UTC namespacelabs.dev/universe/db/postgres/init package.parse took=138us
Mar  7 10:37:20.539 UTC namespacelabs.dev/universe/db/postgres/init package.load took=171us
Mar  7 10:37:20.539 UTC namespacelabs.dev/universe/db/postgres package.parse took=779us
Mar  7 10:37:20.539 UTC namespacelabs.dev/universe/db/postgres package.load took=837us
Mar  7 10:37:20.539 UTC namespacelabs.dev/universe/db/postgres/incluster package.load took=9ms
Mar  7 10:37:20.540 UTC namespacelabs.dev/ea-example/api/todos package.load took=14ms
Mar  7 10:37:20.540 UTC namespacelabs.dev/ea-example/api/server package.load took=17ms
Mar  7 10:37:20.540 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.parse took=300us
Mar  7 10:37:20.540 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.load took=400us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.eval.provisioning took=66us
Mar  7 10:37:20.541 UTC namespacelabs.dev/universe/db/postgres/creds package.eval.provisioning took=96us
Mar  7 10:37:20.541 UTC namespacelabs.dev/universe/db/postgres package.eval.provisioning took=150us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/go/grpc/interceptors package.eval.provisioning took=136us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/go/grpc package.eval.provisioning took=151us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/go/grpc/gateway package.eval.provisioning took=164us
Mar  7 10:37:20.541 UTC namespacelabs.dev/universe/db/postgres/incluster package.eval.provisioning took=194us
Mar  7 10:37:20.541 UTC namespacelabs.dev/ea-example/api/todos package.eval.provisioning took=187us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/go/grpc/metrics package.eval.provisioning took=220us
Mar  7 10:37:20.541 UTC namespacelabs.dev/ea-example/api/summer package.eval.provisioning took=235us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/monitoring/grafana package.eval.provisioning took=366us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/go/core package.eval.provisioning took=387us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/server/tracing package.eval.provisioning took=517us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/monitoring/prometheus package.eval.provisioning took=578us
Mar  7 10:37:20.541 UTC namespacelabs.dev/universe/db/postgres/creds package.eval.provisioning took=193us
Mar  7 10:37:20.541 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.eval.provisioning took=236us
Mar  7 10:37:20.542 UTC namespacelabs.dev/universe/db/postgres/server/creds package.eval.provisioning took=544us
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.eval.provisioning took=629us
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.eval.provisioning took=598us
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/secrets package.eval.provisioning took=1ms
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server stack.compute took=1ms
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/runtime/kubernetes package.eval.provisioning took=311us
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server stack.compute took=981us
Mar  7 10:37:20.542 UTC namespacelabs.dev/foundation/std/monitoring/jaeger stack.compute took=1ms
Mar  7 10:37:20.543 UTC namespacelabs.dev/foundation/std/secrets package.eval.provisioning took=1ms
Mar  7 10:37:20.543 UTC namespacelabs.dev/universe/db/postgres/server stack.compute took=2ms
Mar  7 10:37:20.543 UTC namespacelabs.dev/ea-example/api/server stack.compute took=2ms
Mar  7 10:37:20.543 UTC namespacelabs.dev/ea-example/api/server graph.compute took=2ms
Mar  7 10:37:20.548 UTC module.contents.load absPath="/Users/niklas/NSL/ea-example" fs.stats={"FileCount":33} waited=91us took=4ms
Mar  7 10:37:20.552 UTC module.contents.observe waited=4ms took=3ms
Mar  7 10:37:20.557 UTC module.contents.load absPath="/Users/niklas/NSL/universe" fs.stats={"FileCount":51} waited=93us took=3ms
Mar  7 10:37:20.560 UTC module.contents.observe waited=3ms took=3ms
Mar  7 10:37:20.561 UTC namespacelabs.dev/ea-example/api/server namespacelabs.dev/foundation/std/monitoring/grafana/server namespacelabs.dev/foundation/std/monitoring/jaeger namespacelabs.dev/foundation/std/monitoring/prometheus/server namespacelabs.dev/universe/db/postgres/server server.provision took=17ms
Mar  7 10:37:20.561 UTC namespacelabs.dev/ea-example/api/server fn.deploy.prepare-server-image platforms=[{"architecture":"arm64","os":"linux","variant":"v8"}] took=453us
Mar  7 10:37:20.562 UTC deploy.compute-ingress waited=69us took=435us
Mar  7 10:37:20.574 UTC cache.load.pre (buildkit.build-image) inputs.digest="sha256:0f1b4d1e3fa75fc665a7ea5d519e9dcf1c252403f1ceabc1a6f6b0e9785e72be" cached=true took=11ms
Mar  7 10:37:20.574 UTC buildkit.build-image
Mar  7 10:37:20.575 UTC cache.load.pre (image.make-layer) label="grpcurl" inputs.digest="sha256:dc1f08b8575e7f7e8e1a1d80d3a55da6907ae42e11e0fff0d1f07747dd24111f" cached=true took=11ms
Mar  7 10:37:20.575 UTC image.make-layer label="grpcurl"
Mar  7 10:37:20.575 UTC cache.load.pre (image.fetch) platform="linux/arm64/v8" ref="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" inputs.digest="sha256:da00ef64e0cd42a5bf1de21ac6f58dd763d2de07616d54ff629683e0c331d971" cached=true took=11ms
Mar  7 10:37:20.575 UTC image.fetch platform="linux/arm64/v8" ref="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a"
Mar  7 10:37:20.589 UTC cache.load.pre (artifacts.fsops.merge) inputs.digest="sha256:45d212eda838195e5a1806fda5ec6bfa386b0d2cfc97959b133538622ed3a291" cached=true took=3ms
Mar  7 10:37:20.589 UTC artifacts.fsops.merge
Mar  7 10:37:20.592 UTC namespacelabs.dev/ea-example/api/todos namespacelabs.dev/ea-example/api/summer namespacelabs.dev/ea-example/api/server workspace.codegen took=26ms
Mar  7 10:37:20.593 UTC module.contents.post-codegen waited=643us took=28ms
Mar  7 10:37:20.634 UTC module.contents.load absPath="/Users/niklas/NSL/foundation" fs.stats={"FileCount":532} waited=2ms took=65ms
Mar  7 10:37:20.677 UTC module.contents.observe waited=76ms took=35ms
Mar  7 10:37:23.068 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build1903818681/ns.tool","./std/monitoring/prometheus/tool"] took=2.4s
Mar  7 10:37:23.148 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build2365049923/setup-postgres","./db/postgres/tool"] took=2.6s
Mar  7 10:37:23.152 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build2407824066/setup-postgres-server","./db/postgres/server/creds/tool"] took=2.6s
Mar  7 10:37:23.348 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build2311021657/setup-incluster-postgres","./db/postgres/incluster/tool"] took=2.8s
Mar  7 10:37:23.397 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build369157224/ns.tool","./std/monitoring/grafana/tool"] took=2.7s
Mar  7 10:37:23.485 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build1229340339/init-postgres","./db/postgres/init"] took=2.9s
Mar  7 10:37:23.550 UTC go.build.binary binary="ns.tool" module_path="." source_path="std/monitoring/prometheus/tool" platform="linux/arm64/v8" waited=114ms took=2.9s
Mar  7 10:37:23.555 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:eab23ffdf7ee427ef48ac744c2edbc6799d91ed481d14fc42b8861d3e586d894" cached=true took=4ms
Mar  7 10:37:23.555 UTC image.make-layer label="binary"
Mar  7 10:37:23.558 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:fdaa5a557ed7973f5785854473b12914cab01653dac1bee6091e622c6813aa3a" cached=true took=3ms
Mar  7 10:37:23.558 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:23.558 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/foundation/std/monitoring/prometheus/tool","modulePath":".","module":"namespacelabs.dev/foundation","goVersion":"1.17","sourcePath":"std/monitoring/prometheus/tool","binaryName":"ns.tool","capabilities":null} waited=3.0s took=52us
Mar  7 10:37:23.559 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/tool Binary namespacelabs.dev/foundation/std/monitoring/prometheus/tool [fn.build] waited=3.0s took=36us
Mar  7 10:37:23.562 UTC namespacelabs.dev/foundation/std/monitoring/prometheus cache.load.post (provision.invoke) inputs.digest="sha256:51a378902014b805d8aa3d158c6fe4570b98b3457208356ce0a3961a2ad8eab0" cached=false took=3ms
Mar  7 10:37:23.585 UTC go.build.binary binary="setup-postgres" module_path="." source_path="db/postgres/tool" platform="linux/arm64/v8" waited=649us took=3.0s
Mar  7 10:37:23.589 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:79d96b82abdb546a30371aa02c5a9bf693618587db635c48ae191b733d327bec" cached=true took=3ms
Mar  7 10:37:23.589 UTC image.make-layer label="binary"
Mar  7 10:37:23.596 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:76d53215527c1fa8bbef9f1b5a5704c76446f2249da882ab50bbd6155bf402e4" cached=true took=7ms
Mar  7 10:37:23.596 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:23.597 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/universe/db/postgres/tool","modulePath":".","module":"namespacelabs.dev/universe","goVersion":"1.17","sourcePath":"db/postgres/tool","binaryName":"setup-postgres","capabilities":null} waited=3.0s took=50us
Mar  7 10:37:23.597 UTC namespacelabs.dev/universe/db/postgres/tool Binary namespacelabs.dev/universe/db/postgres/tool [fn.build] waited=3.0s took=42us
Mar  7 10:37:23.600 UTC namespacelabs.dev/universe/db/postgres cache.load.post (provision.invoke) inputs.digest="sha256:43136f779dbe68bb21b37eaaab518a7f9876a174e42dfc137e075362a5043dd8" cached=false took=3ms
Mar  7 10:37:23.683 UTC go.build.binary binary="setup-postgres-server" module_path="." source_path="db/postgres/server/creds/tool" platform="linux/arm64/v8" waited=570us took=3.1s
Mar  7 10:37:23.694 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:b104f4a93a1576aa7dde2e1dbc6e2bfe1299a73c985215bb06b524c7894f7cea" cached=true took=10ms
Mar  7 10:37:23.694 UTC image.make-layer label="binary"
Mar  7 10:37:23.697 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:7e07afeabd77db8ae40fb1128acfb840ee6cda19563bbfa8ab749d72a1023a8a" cached=true took=3ms
Mar  7 10:37:23.697 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:23.698 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/universe/db/postgres/server/creds/tool","modulePath":".","module":"namespacelabs.dev/universe","goVersion":"1.17","sourcePath":"db/postgres/server/creds/tool","binaryName":"setup-postgres-server","capabilities":null} waited=3.1s took=45us
Mar  7 10:37:23.698 UTC namespacelabs.dev/universe/db/postgres/server/creds/tool Binary namespacelabs.dev/universe/db/postgres/server/creds/tool [fn.build] waited=3.1s took=35us
Mar  7 10:37:23.701 UTC namespacelabs.dev/universe/db/postgres/server/creds cache.load.post (provision.invoke) inputs.digest="sha256:ca9d84a9a81a3376c15cd5a0c6a0eb3732edcecb73d22b3c3b1efa3c1cdda68b" cached=false took=3ms
Mar  7 10:37:23.785 UTC docker.image-load ref="namespacelabs.dev/foundation/std/monitoring/prometheus/tool:local" digest="sha256:c6fc36512b4e65f87209c5f77dc0a628584ad12c73e52649eb1569f4dee10976" config="sha256:dd43f3be3ab0b1fd4ffba0148b77ae9ed9175c3a6e2287a2c505a9c61504ec78" took=222ms
Mar  7 10:37:23.791 UTC docker.image-load ref="namespacelabs.dev/universe/db/postgres/server/creds/tool:local" digest="sha256:1e3839957e395bc4bfbffe1bbf5a7ec8192d249e1be01a9b599b8183044665d2" config="sha256:d7b3ef54205ff47f739b1201814a92b69df52e1bb93dd73ba10aa2347060439d" took=88ms
Mar  7 10:37:23.791 UTC docker.image-load ref="namespacelabs.dev/universe/db/postgres/tool:local" digest="sha256:426d85414a147295dbc20b3350d8410e027271fd6150da37bbfdaf22290b4d57" config="sha256:2e7e0fc60ab086aa962ef53d51a4c296dcded6c03652cbb822998ce90b7b07aa" took=189ms
Mar  7 10:37:23.852 UTC go.build.binary binary="setup-incluster-postgres" module_path="." source_path="db/postgres/incluster/tool" platform="linux/arm64/v8" waited=679us took=3.3s
Mar  7 10:37:23.857 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:9700df1f8317b520791dff6fcf884979add747940e080e520c94fee0d1b6488e" cached=true took=4ms
Mar  7 10:37:23.857 UTC image.make-layer label="binary"
Mar  7 10:37:23.860 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:ab6cab034774e157a040b5806de1043e970c384775fd79484152e4c8d1fdf010" cached=true took=3ms
Mar  7 10:37:23.860 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:23.860 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/universe/db/postgres/incluster/tool","modulePath":".","module":"namespacelabs.dev/universe","goVersion":"1.17","sourcePath":"db/postgres/incluster/tool","binaryName":"setup-incluster-postgres","capabilities":null} waited=3.3s took=53us
Mar  7 10:37:23.861 UTC namespacelabs.dev/universe/db/postgres/incluster/tool Binary namespacelabs.dev/universe/db/postgres/incluster/tool [fn.build] waited=3.3s took=41us
Mar  7 10:37:23.864 UTC namespacelabs.dev/universe/db/postgres/incluster cache.load.post (provision.invoke) inputs.digest="sha256:3f1fbc60eeacb1f7f06641159e33bf671c01c2db4723b2171a5b90787fc55565" cached=false took=3ms
Mar  7 10:37:23.921 UTC docker.image-load ref="namespacelabs.dev/universe/db/postgres/incluster/tool:local" digest="sha256:eb57f83ad8580df7825360063b0933b4ef4f9e0d48bf648af5d2d103b9f6edb9" config="sha256:318819baf2527c4fe5c26acaaaeed3e832a49de735a3432e2f73887d2dd54bea" took=55ms
Mar  7 10:37:23.932 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build1478444987/server","./api/server"] took=3.3s
Mar  7 10:37:23.948 UTC go.build.binary binary="init-postgres" module_path="." source_path="db/postgres/init" platform="linux/arm64/v8" waited=613us took=3.4s
Mar  7 10:37:23.958 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:b053a16f70c40af45ba847260e428443c8ed748afd4706b5a018f30c32bbee8b" cached=true took=10ms
Mar  7 10:37:23.958 UTC image.make-layer label="binary"
Mar  7 10:37:23.962 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:1c091ddfe0efa5022845e9ec7095cff214c34f0865ea3d5531b6d0284f169b19" cached=true took=3ms
Mar  7 10:37:23.962 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:23.963 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/universe/db/postgres/init","modulePath":".","module":"namespacelabs.dev/universe","goVersion":"1.17","sourcePath":"db/postgres/init","binaryName":"init-postgres","capabilities":null} waited=3.4s took=5us
Mar  7 10:37:23.963 UTC namespacelabs.dev/universe/db/postgres/init Binary namespacelabs.dev/universe/db/postgres/init [fn.build] waited=3.4s took=6us
Mar  7 10:37:24.034 UTC go.build.binary binary="ns.tool" module_path="." source_path="std/monitoring/grafana/tool" platform="linux/arm64/v8" waited=112ms took=3.4s
Mar  7 10:37:24.038 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:17efbc8aa51dbe2a4a54f0c2a865a044687efd9453e2583e8cf25727256a7a66" cached=true took=4ms
Mar  7 10:37:24.038 UTC image.make-layer label="binary"
Mar  7 10:37:24.042 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:c3457a14bacdd69b5994ca603bee82a55dfbdc192db0d15c3f52f9eeb4ddc7d4" cached=false took=3ms
Mar  7 10:37:24.052 UTC oci.write-image ref="k3d-registry.nslocal.dev:41000/namespacelabs.dev/universe/db/postgres/init:6987i9nej9h16" took=88ms
Mar  7 10:37:24.052 UTC image.publish publish="fn.publish.registry" tag="k3d-registry.nslocal.dev:41000/namespacelabs.dev/universe/db/postgres/init:6987i9nej9h16" waited=3.4s took=88ms
Mar  7 10:37:24.073 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build1076430038/ns.tool","./std/secrets/kubernetes"] took=3.4s
Mar  7 10:37:24.077 UTC local.exec command="/Users/niklas/Library/Caches/fn/sdk/go/1.17.7/go/bin/go" args=["build","-v","-o=/Users/niklas/Library/Caches/fn/tmp/go/build2930583674/ns.tool","./std/secrets/kubernetes"] took=3.4s
Mar  7 10:37:24.276 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 waited=3.5s took=234ms
Mar  7 10:37:24.276 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/foundation/std/monitoring/grafana/tool","modulePath":".","module":"namespacelabs.dev/foundation","goVersion":"1.17","sourcePath":"std/monitoring/grafana/tool","binaryName":"ns.tool","capabilities":null} waited=3.7s took=51us
Mar  7 10:37:24.276 UTC namespacelabs.dev/foundation/std/monitoring/grafana/tool Binary namespacelabs.dev/foundation/std/monitoring/grafana/tool [fn.build] waited=3.7s took=265us
Mar  7 10:37:24.280 UTC namespacelabs.dev/foundation/std/monitoring/grafana cache.load.post (provision.invoke) inputs.digest="sha256:89c08b51879f7f0f1b94044c6ba3c7fbba2e08538770b06a3dbd8004156a3c54" cached=false took=3ms
Mar  7 10:37:24.282 UTC cache.store (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 digests=[{"Algorithm":"sha256","Hex":"c3457a14bacdd69b5994ca603bee82a55dfbdc192db0d15c3f52f9eeb4ddc7d4"}] took=6ms
Mar  7 10:37:24.286 UTC docker.image-load ref="namespacelabs.dev/foundation/std/monitoring/grafana/tool:local" digest="sha256:a862c9a46165acb152e37f461f75085f01558c9e1cab1f7749852cf4d8803192" config="sha256:c135a338e047a8209ca5a3cd7845453599dd3d22894f3d2198c300420bf1127a" took=4ms
Mar  7 10:37:24.380 UTC go.build.binary binary="server" module_path="." source_path="api/server" platform="linux/arm64/v8" waited=30ms took=3.8s
Mar  7 10:37:24.384 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:c4a424e9744e788ff56385621277fd0fb36fb668a03abed647f3fdd892887392" cached=true took=4ms
Mar  7 10:37:24.384 UTC image.make-layer label="binary"
Mar  7 10:37:24.388 UTC cache.load.post (image.make) base="(buildkit)" len(layers)=2 inputs.digest="sha256:f306b6e2307f09c4c10a8426fe19b498670e695e92dd7d0eb67d1c936b9ab86b" cached=true took=3ms
Mar  7 10:37:24.388 UTC image.make base="(buildkit)" len(layers)=2
Mar  7 10:37:24.388 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/ea-example/api/server","modulePath":".","module":"namespacelabs.dev/ea-example","goVersion":"1.17","sourcePath":"api/server","binaryName":"server","capabilities":["grpc","server"]} waited=3.8s took=11us
Mar  7 10:37:24.388 UTC namespacelabs.dev/ea-example/api/server Server namespacelabs.dev/ea-example/api/server [fn.build] waited=3.8s took=2us
Mar  7 10:37:24.450 UTC oci.write-image ref="k3d-registry.nslocal.dev:41000/namespacelabs.dev/ea-example/api/server:6987i9nej9h16" took=61ms
Mar  7 10:37:24.450 UTC image.publish publish="fn.publish.registry" tag="k3d-registry.nslocal.dev:41000/namespacelabs.dev/ea-example/api/server:6987i9nej9h16" waited=3.8s took=61ms
Mar  7 10:37:24.450 UTC server.build waited=3.9s took=28us
Mar  7 10:37:24.513 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:dd43f3be3ab0b1fd4ffba0148b77ae9ed9175c3a6e2287a2c505a9c61504ec78","/ns.tool"] took=727ms
Mar  7 10:37:24.513 UTC container.execute command=["/ns.tool"] imageName="namespacelabs.dev/foundation/std/monitoring/prometheus/tool" digest="sha256:c6fc36512b4e65f87209c5f77dc0a628584ad12c73e52649eb1569f4dee10976" config="sha256:dd43f3be3ab0b1fd4ffba0148b77ae9ed9175c3a6e2287a2c505a9c61504ec78" args=null took=949ms
Mar  7 10:37:24.513 UTC namespacelabs.dev/foundation/std/monitoring/prometheus provision.invoke waited=3.0s took=951ms
Mar  7 10:37:24.520 UTC namespacelabs.dev/foundation/std/monitoring/prometheus cache.store (provision.invoke) digests=[{"Algorithm":"sha256","Hex":"51a378902014b805d8aa3d158c6fe4570b98b3457208356ce0a3961a2ad8eab0"}] took=6ms
Mar  7 10:37:24.528 UTC go.build.binary binary="ns.tool" module_path="." source_path="std/secrets/kubernetes" platform="linux/arm64/v8" waited=112ms took=3.9s
Mar  7 10:37:24.531 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:d7b3ef54205ff47f739b1201814a92b69df52e1bb93dd73ba10aa2347060439d","/setup-postgres-server"] took=740ms
Mar  7 10:37:24.531 UTC container.execute command=["/setup-postgres-server"] imageName="namespacelabs.dev/universe/db/postgres/server/creds/tool" digest="sha256:1e3839957e395bc4bfbffe1bbf5a7ec8192d249e1be01a9b599b8183044665d2" config="sha256:d7b3ef54205ff47f739b1201814a92b69df52e1bb93dd73ba10aa2347060439d" args=null took=829ms
Mar  7 10:37:24.531 UTC namespacelabs.dev/universe/db/postgres/server/creds provision.invoke waited=3.1s took=830ms
Mar  7 10:37:24.532 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:10a28f2f1186b36e2b5f7e8a7bf72c8c6a9fcb127ba10e51e9d8e2accc5ea73c" cached=true took=4ms
Mar  7 10:37:24.532 UTC image.make-layer label="binary"
Mar  7 10:37:24.536 UTC go.build.binary binary="ns.tool" module_path="." source_path="std/secrets/kubernetes" platform="linux/arm64/v8" waited=114ms took=3.9s
Mar  7 10:37:24.536 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:e5280420d3ff7faf175a6994b88203b8e30a59b625d32d4cf72398e7b319b36c" cached=true took=3ms
Mar  7 10:37:24.536 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:24.536 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/foundation/std/secrets/kubernetes","modulePath":".","module":"namespacelabs.dev/foundation","goVersion":"1.17","sourcePath":"std/secrets/kubernetes","binaryName":"ns.tool","capabilities":null} waited=4.0s took=37us
Mar  7 10:37:24.536 UTC namespacelabs.dev/foundation/std/secrets/kubernetes Binary namespacelabs.dev/foundation/std/secrets/kubernetes [fn.build] waited=4.0s took=34us
Mar  7 10:37:24.537 UTC namespacelabs.dev/universe/db/postgres/server/creds cache.store (provision.invoke) digests=[{"Algorithm":"sha256","Hex":"ca9d84a9a81a3376c15cd5a0c6a0eb3732edcecb73d22b3c3b1efa3c1cdda68b"}] took=6ms
Mar  7 10:37:24.539 UTC docker.image-load ref="namespacelabs.dev/foundation/std/secrets/kubernetes:local" digest="sha256:28a7e7094ae68965309f8c9130e855cc1e40ada00d728fafc2ea516ce57e0e79" config="sha256:143e3399fe5e1e5b2b08d9e55b3c12cb70e6360e674ab0847fe3d37d60a6a175" took=2ms
Mar  7 10:37:24.542 UTC cache.load.post (image.make-layer) label="binary" inputs.digest="sha256:10a28f2f1186b36e2b5f7e8a7bf72c8c6a9fcb127ba10e51e9d8e2accc5ea73c" cached=true took=6ms
Mar  7 10:37:24.543 UTC image.make-layer label="binary"
Mar  7 10:37:24.548 UTC cache.load.post (image.make) base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1 inputs.digest="sha256:e5280420d3ff7faf175a6994b88203b8e30a59b625d32d4cf72398e7b319b36c" cached=true took=3ms
Mar  7 10:37:24.548 UTC image.make base="docker.io/library/alpine:3.14@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a" len(layers)=1
Mar  7 10:37:24.549 UTC go.make-binary-image binary={"packageName":"namespacelabs.dev/foundation/std/secrets/kubernetes","modulePath":".","module":"namespacelabs.dev/foundation","goVersion":"1.17","sourcePath":"std/secrets/kubernetes","binaryName":"ns.tool","capabilities":null} waited=4.0s took=15us
Mar  7 10:37:24.549 UTC namespacelabs.dev/foundation/std/secrets/kubernetes Binary namespacelabs.dev/foundation/std/secrets/kubernetes [fn.build] waited=4.0s took=3us
Mar  7 10:37:24.553 UTC docker.image-load ref="namespacelabs.dev/foundation/std/secrets/kubernetes:local" digest="sha256:28a7e7094ae68965309f8c9130e855cc1e40ada00d728fafc2ea516ce57e0e79" config="sha256:143e3399fe5e1e5b2b08d9e55b3c12cb70e6360e674ab0847fe3d37d60a6a175" took=2ms
Mar  7 10:37:24.556 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:318819baf2527c4fe5c26acaaaeed3e832a49de735a3432e2f73887d2dd54bea","/setup-incluster-postgres"] took=635ms
Mar  7 10:37:24.556 UTC container.execute command=["/setup-incluster-postgres"] imageName="namespacelabs.dev/universe/db/postgres/incluster/tool" digest="sha256:eb57f83ad8580df7825360063b0933b4ef4f9e0d48bf648af5d2d103b9f6edb9" config="sha256:318819baf2527c4fe5c26acaaaeed3e832a49de735a3432e2f73887d2dd54bea" args=null took=690ms
Mar  7 10:37:24.557 UTC namespacelabs.dev/universe/db/postgres/incluster provision.invoke waited=3.3s took=693ms
Mar  7 10:37:24.564 UTC namespacelabs.dev/universe/db/postgres/incluster cache.store (provision.invoke) digests=[{"Algorithm":"sha256","Hex":"3f1fbc60eeacb1f7f06641159e33bf671c01c2db4723b2171a5b90787fc55565"}] took=6ms
Mar  7 10:37:24.585 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:2e7e0fc60ab086aa962ef53d51a4c296dcded6c03652cbb822998ce90b7b07aa","/setup-postgres"] took=793ms
Mar  7 10:37:24.585 UTC container.execute command=["/setup-postgres"] imageName="namespacelabs.dev/universe/db/postgres/tool" digest="sha256:426d85414a147295dbc20b3350d8410e027271fd6150da37bbfdaf22290b4d57" config="sha256:2e7e0fc60ab086aa962ef53d51a4c296dcded6c03652cbb822998ce90b7b07aa" args=null took=983ms
Mar  7 10:37:24.585 UTC namespacelabs.dev/universe/db/postgres provision.invoke waited=3.0s took=984ms
Mar  7 10:37:24.591 UTC namespacelabs.dev/universe/db/postgres cache.store (provision.invoke) digests=[{"Algorithm":"sha256","Hex":"43136f779dbe68bb21b37eaaab518a7f9876a174e42dfc137e075362a5043dd8"}] took=5ms
Mar  7 10:37:24.780 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:c135a338e047a8209ca5a3cd7845453599dd3d22894f3d2198c300420bf1127a","/ns.tool"] took=494ms
Mar  7 10:37:24.780 UTC container.execute command=["/ns.tool"] imageName="namespacelabs.dev/foundation/std/monitoring/grafana/tool" digest="sha256:a862c9a46165acb152e37f461f75085f01558c9e1cab1f7749852cf4d8803192" config="sha256:c135a338e047a8209ca5a3cd7845453599dd3d22894f3d2198c300420bf1127a" args=null took=499ms
Mar  7 10:37:24.781 UTC namespacelabs.dev/foundation/std/monitoring/grafana provision.invoke waited=3.7s took=500ms
Mar  7 10:37:24.786 UTC namespacelabs.dev/foundation/std/monitoring/grafana cache.store (provision.invoke) digests=[{"Algorithm":"sha256","Hex":"89c08b51879f7f0f1b94044c6ba3c7fbba2e08538770b06a3dbd8004156a3c54"}] took=5ms
Mar  7 10:37:24.976 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:143e3399fe5e1e5b2b08d9e55b3c12cb70e6360e674ab0847fe3d37d60a6a175","/ns.tool"] took=437ms
Mar  7 10:37:24.976 UTC container.execute command=["/ns.tool"] imageName="namespacelabs.dev/foundation/std/secrets/kubernetes" digest="sha256:28a7e7094ae68965309f8c9130e855cc1e40ada00d728fafc2ea516ce57e0e79" config="sha256:143e3399fe5e1e5b2b08d9e55b3c12cb70e6360e674ab0847fe3d37d60a6a175" args=null took=439ms
Mar  7 10:37:24.976 UTC namespacelabs.dev/foundation/std/secrets provision.invoke waited=4.0s took=440ms
Mar  7 10:37:25.023 UTC docker.run args=["run","--rm","--pull=never","-i","-w","/","--net=none","sha256:143e3399fe5e1e5b2b08d9e55b3c12cb70e6360e674ab0847fe3d37d60a6a175","/ns.tool"] took=470ms
Mar  7 10:37:25.023 UTC container.execute command=["/ns.tool"] imageName="namespacelabs.dev/foundation/std/secrets/kubernetes" digest="sha256:28a7e7094ae68965309f8c9130e855cc1e40ada00d728fafc2ea516ce57e0e79" config="sha256:143e3399fe5e1e5b2b08d9e55b3c12cb70e6360e674ab0847fe3d37d60a6a175" args=null took=473ms
Mar  7 10:37:25.023 UTC namespacelabs.dev/foundation/std/secrets provision.invoke waited=4.0s took=474ms
Mar  7 10:37:25.023 UTC provision.invoke-handlers waited=4.5s took=38us
Mar  7 10:37:25.027 UTC namespacelabs.dev/ea-example/api/server namespacelabs.dev/foundation/std/monitoring/grafana/server namespacelabs.dev/foundation/std/monitoring/jaeger namespacelabs.dev/foundation/std/monitoring/prometheus/server namespacelabs.dev/universe/db/postgres/server server.provision waited=4.5s took=3ms
Mar  7 10:37:25.027 UTC deploy.make-graph waited=4.5s took=70us
Mar  7 10:37:25.034 UTC Namespace [kubernetes.apply] resource="namespaces" name="dev" namespace="" took=7ms
Mar  7 10:37:25.039 UTC Grafana ConfigMap [kubernetes.apply] resource="configmaps" name="grafana.foundation.namespacelabs.dev" namespace="dev" took=4ms
Mar  7 10:37:25.042 UTC Prometheus ClusterRole [kubernetes.apply] resource="clusterroles" name="fn:prometheus" namespace="" took=3ms
Mar  7 10:37:25.046 UTC Prometheus ClusterRoleBinding [kubernetes.apply] resource="clusterrolebindings" name="fn:prometheus" namespace="" took=3ms
Mar  7 10:37:25.050 UTC Prometheus ConfigMap [kubernetes.apply] resource="configmaps" name="prometheus.foundation.namespacelabs.dev" namespace="dev" took=3ms
Mar  7 10:37:25.053 UTC server secrets [kubernetes.apply] resource="secrets" name="1088nk7bp49rpynz6hqshk6epx.secrets.namespacelabs.dev" namespace="dev" took=3ms
Mar  7 10:37:25.057 UTC Postgres Init ConfigMap [kubernetes.apply] resource="configmaps" name="incluster.init.postgres.foundation.namespacelabs.dev" namespace="dev" took=3ms
Mar  7 10:37:25.061 UTC server secrets [kubernetes.apply] resource="secrets" name="422eajpp5jt8pjwfp2vrq5f0ce.secrets.namespacelabs.dev" namespace="dev" took=3ms
Mar  7 10:37:25.064 UTC namespacelabs.dev/ea-example/api/server Service Account [kubernetes.apply] resource="serviceaccounts" name="api-backend-1088nk7bp49rpynz6hqshk6epx" namespace="dev" took=3ms
Mar  7 10:37:25.072 UTC namespacelabs.dev/ea-example/api/server Server Deployment [kubernetes.apply] resource="deployments" name="api-backend-1088nk7bp49rpynz6hqshk6epx" namespace="dev" took=7ms
Mar  7 10:37:25.079 UTC namespacelabs.dev/ea-example/api/server Service grpc-api [kubernetes.apply] resource="services" name="grpc-api-1088nk7bp49rpynz6hqshk6epx" namespace="dev" took=6ms
Mar  7 10:37:25.086 UTC namespacelabs.dev/ea-example/api/server Service grpc-gateway [kubernetes.apply] resource="services" name="grpc-gateway-1088nk7bp49rpynz6hqshk6epx" namespace="dev" took=7ms
Mar  7 10:37:25.091 UTC namespacelabs.dev/ea-example/api/server Service summer [kubernetes.apply] resource="services" name="summer" namespace="dev" took=4ms
Mar  7 10:37:25.096 UTC namespacelabs.dev/ea-example/api/server Service todos [kubernetes.apply] resource="services" name="todos" namespace="dev" took=4ms
Mar  7 10:37:25.099 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server Service Account [kubernetes.apply] resource="serviceaccounts" name="grafana-4dt58k5hmmwh5sq878msdwpn74" namespace="dev" took=3ms
Mar  7 10:37:25.104 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server Server Deployment [kubernetes.apply] resource="deployments" name="grafana-4dt58k5hmmwh5sq878msdwpn74" namespace="dev" took=4ms
Mar  7 10:37:25.110 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server Service web [kubernetes.apply] resource="services" name="web-4dt58k5hmmwh5sq878msdwpn74" namespace="dev" took=5ms
Mar  7 10:37:25.113 UTC namespacelabs.dev/foundation/std/monitoring/jaeger Service Account [kubernetes.apply] resource="serviceaccounts" name="jaeger-23crtq628x848gfajbfhv6btj8" namespace="dev" took=3ms
Mar  7 10:37:25.119 UTC namespacelabs.dev/foundation/std/monitoring/jaeger Server Deployment [kubernetes.apply] resource="deployments" name="jaeger-23crtq628x848gfajbfhv6btj8" namespace="dev" took=5ms
Mar  7 10:37:25.125 UTC namespacelabs.dev/foundation/std/monitoring/jaeger Service collector [kubernetes.apply] resource="services" name="collector-23crtq628x848gfajbfhv6btj8" namespace="dev" took=5ms
Mar  7 10:37:25.130 UTC namespacelabs.dev/foundation/std/monitoring/jaeger Service frontend [kubernetes.apply] resource="services" name="frontend-23crtq628x848gfajbfhv6btj8" namespace="dev" took=5ms
Mar  7 10:37:25.135 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server Service Account [kubernetes.apply] resource="serviceaccounts" name="prometheus-04ntvj9zen9ns6ha76mvfb9z4a" namespace="dev" took=4ms
Mar  7 10:37:25.140 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server Server Deployment [kubernetes.apply] resource="deployments" name="prometheus-04ntvj9zen9ns6ha76mvfb9z4a" namespace="dev" took=5ms
Mar  7 10:37:25.145 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server Service prometheus [kubernetes.apply] resource="services" name="prometheus-04ntvj9zen9ns6ha76mvfb9z4a" namespace="dev" took=4ms
Mar  7 10:37:25.149 UTC namespacelabs.dev/universe/db/postgres/server Service Account [kubernetes.apply] resource="serviceaccounts" name="postgresql-422eajpp5jt8pjwfp2vrq5f0ce" namespace="dev" took=3ms
Mar  7 10:37:25.154 UTC namespacelabs.dev/universe/db/postgres/server Server StatefulSet [kubernetes.apply] resource="statefulsets" name="postgresql-422eajpp5jt8pjwfp2vrq5f0ce" namespace="dev" took=5ms
Mar  7 10:37:25.162 UTC namespacelabs.dev/universe/db/postgres/server Service postgres [kubernetes.apply] resource="services" name="postgres-422eajpp5jt8pjwfp2vrq5f0ce" namespace="dev" took=7ms
Mar  7 10:37:25.213 UTC namespacelabs.dev/ea-example/api/server Ingress api-backend-grpc-gateway-1088nk7bp49rpynz6hqshk6epx [kubernetes.apply] resource="ingresses" name="api-backend-grpc-gateway-1088nk7bp49rpynz6hqshk6epx" namespace="dev" took=51ms
Mar  7 10:37:25.263 UTC namespacelabs.dev/ea-example/api/server Ingress grpc-api-1088nk7bp49rpynz6hqshk6epx [kubernetes.apply] resource="ingresses" name="grpc-api-1088nk7bp49rpynz6hqshk6epx" namespace="dev" took=49ms
Mar  7 10:37:25.318 UTC namespacelabs.dev/ea-example/api/server Ingress todos [kubernetes.apply] resource="ingresses" name="todos" namespace="dev" took=54ms
Mar  7 10:37:25.318 UTC namespacelabs.dev/ea-example/api/server namespacelabs.dev/foundation/std/monitoring/grafana/server namespacelabs.dev/foundation/std/monitoring/jaeger namespacelabs.dev/foundation/std/monitoring/prometheus/server namespacelabs.dev/universe/db/postgres/server server.deploy took=290ms
Mar  7 10:37:25.318 UTC namespacelabs.dev/ea-example/api/server server.start took=12us
Mar  7 10:37:25.318 UTC namespacelabs.dev/foundation/std/monitoring/prometheus/server server.start took=16us
Mar  7 10:37:25.318 UTC namespacelabs.dev/foundation/std/monitoring/grafana/server server.start took=8us
Mar  7 10:37:25.318 UTC namespacelabs.dev/foundation/std/monitoring/jaeger server.start took=12us
Mar  7 10:37:25.319 UTC go.build.cleanup took=855us
Mar  7 10:37:25.319 UTC go.build.cleanup took=454us
Mar  7 10:37:25.319 UTC go.build.cleanup took=382us
Mar  7 10:37:25.320 UTC go.build.cleanup took=514us
Mar  7 10:37:25.320 UTC go.build.cleanup took=447us
Mar  7 10:37:25.321 UTC go.build.cleanup took=698us
  
   Server Deployment:
  
    [✓] namespacelabs.dev/ea-example/api/server (no updated required)
    [✓] namespacelabs.dev/foundation/std/monitoring/grafana/server (no updated required)
    [✓] namespacelabs.dev/foundation/std/monitoring/jaeger (no updated required)
    [✓] namespacelabs.dev/foundation/std/monitoring/prometheus/server (no updated required)
  
Mar  7 10:37:25.322 UTC go.build.cleanup took=928us
Mar  7 10:37:25.323 UTC go.build.cleanup took=724us
Mar  7 10:37:25.323 UTC go.build.cleanup took=703us
Mar  7 10:37:25.323 UTC fn deploy [fn.do] took=4.8s
  
  You can inspect the logs of api-backend using `fn logs api/server --env=dev`.
  

"fn tidy" doesn't add a missing dependency to "workspace.ns.textproto"

If "workspace.ns.textproto" doesn't contain any dependencies:

module_name: "namespacelabs.dev/mypackage"

Then "fn generate" says use "fn tidy", but "fn tidy" does nothing:

> fn generate

failed to parse myservice: namespacelabs.dev/foundation/std/fn: missing entry in workspace.ns.textpb: run:
  fn tidy

> fn tidy

failed to parse myservice: namespacelabs.dev/foundation/std/fn: missing entry in workspace.ns.textpb: run:
  fn tidy
failed to parse myservice: namespacelabs.dev/foundation/std/fn: missing entry in workspace.ns.textpb: run:
  fn tidy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.