Skip to content

linkerd/linkerd-await

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

linkerd-await

A command-wrapper that polls Linkerd for readiness until it becomes ready and only then executes a command.

Usage

linkerd-await 0.2.7
Wait for linkerd to become ready before running a program

USAGE:
    linkerd-await [OPTIONS] [ARGS]

ARGS:
    <CMD>        The command to run after linkerd is ready
    <ARGS>...    Arguments to pass to CMD if specified

OPTIONS:
    -b, --backoff <BACKOFF>    Time to wait after a failed readiness check [default: 1s]
    -h, --help                 Print help information
    -p, --port <PORT>          The port of the local Linkerd proxy admin server [default: 4191]
    -S, --shutdown             Forks the program and triggers proxy shutdown on completion
    -t, --timeout <TIMEOUT>    Causes linked-await to fail when the timeout elapses before the proxy
                               becomes ready
    -v, --verbose              Causes linkerd-await to print an error message when disabled [env:
                               LINKERD_AWAIT_VERBOSE=]
    -V, --version              Print version information

Examples

Dockerfile

# Create a base layer with linkerd-await from a recent release.
FROM docker.io/curlimages/curl:latest as linkerd
ARG LINKERD_AWAIT_VERSION=v0.2.7
RUN curl -sSLo /tmp/linkerd-await https://github.com/linkerd/linkerd-await/releases/download/release%2F${LINKERD_AWAIT_VERSION}/linkerd-await-${LINKERD_AWAIT_VERSION}-amd64 && \
    chmod 755 /tmp/linkerd-await

# Build your application with whatever environment makes sense.
FROM myapp-build as app
WORKDIR /app
RUN make build

# Package the application wrapped by linkerd-await. Note that the binary is
# static so it can be used in `scratch` images:
FROM scratch
COPY --from=linkerd /tmp/linkerd-await /linkerd-await
COPY --from=app /app/myapp /myapp
# In this case, we configure the proxy to be shutdown after `myapp` completes
# running. This is only really needed for jobs where the application is
# expected to complete on its own (namely, `Jobs` and `Cronjobs`)
ENTRYPOINT ["/linkerd-await", "--shutdown", "--"]
CMD  ["/myapp"]

Disabling linkerd-await at runtime

The LINKERD_AWAIT_DISABLED (or LINKERD_DISABLED) environment variable can be set to bypass linkerd-await's readiness checks. This way, linkerd-await may be controlled by overriding a default environment variable:

    # ...
    spec:
      containers:
        - name: myapp
          env:
            - name: LINKERD_AWAIT_DISABLED
              value: "Linkerd is disabled ;("
          # ...