Add option to get latest kubectl stable version and README to describe building local Docker image

Signed-off-by: Eldad Assis <eldada@jfrog.com>
mine
Eldad Assis 2020-09-27 14:15:23 +03:00 committed by Eldad Assis
parent d7b933553c
commit 61cd0a379d
3 changed files with 38 additions and 9 deletions

View File

@ -1,4 +1,6 @@
# Build... # -----------------------------------------------------------------------------
# The base image for building the k9s binary
FROM golang:1.15.2-alpine3.12 AS build FROM golang:1.15.2-alpine3.12 AS build
WORKDIR /k9s WORKDIR /k9s
@ -8,15 +10,15 @@ COPY cmd cmd
RUN apk --no-cache add make git gcc libc-dev curl && make build RUN apk --no-cache add make git gcc libc-dev curl && make build
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Build Image... # Build the final Docker image
FROM alpine:3.12.0 FROM alpine:3.12.0
ARG KUBECTL_VERSION="v1.18.2"
COPY --from=build /k9s/execs/k9s /bin/k9s COPY --from=build /k9s/execs/k9s /bin/k9s
ENV KUBE_LATEST_VERSION="v1.18.2"
RUN apk add --update ca-certificates \ RUN apk add --update ca-certificates \
&& apk add --update -t deps curl vim \ && apk add --update -t deps curl vim \
&& curl -L https://storage.googleapis.com/kubernetes-release/release/${KUBE_LATEST_VERSION}/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl \ && curl -L https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl \
&& chmod +x /usr/local/bin/kubectl \ && chmod +x /usr/local/bin/kubectl \
&& apk del --purge deps \ && apk del --purge deps \
&& rm /var/cache/apk/* && rm /var/cache/apk/*

View File

@ -22,6 +22,9 @@ build: ## Builds the CLI
-ldflags "-w -s -X ${PACKAGE}/cmd.version=${VERSION} -X ${PACKAGE}/cmd.commit=${GIT} -X ${PACKAGE}/cmd.date=${DATE}" \ -ldflags "-w -s -X ${PACKAGE}/cmd.version=${VERSION} -X ${PACKAGE}/cmd.commit=${GIT} -X ${PACKAGE}/cmd.date=${DATE}" \
-a -tags netgo -o execs/${NAME} main.go -a -tags netgo -o execs/${NAME} main.go
kubectl-stable-version: ## Get kubectl latest stable version
@curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt
img: ## Build Docker Image img: ## Build Docker Image
@docker build --rm -t ${IMAGE} . @docker build --rm -t ${IMAGE} .

View File

@ -1,4 +1,4 @@
<img src="assets/k9s.png"> <img src="assets/k9s.png" alt="k9s">
# K9s - Kubernetes CLI To Manage Your Clusters In Style! # K9s - Kubernetes CLI To Manage Your Clusters In Style!
@ -99,6 +99,8 @@ K9s is available on Linux, macOS and Windows platforms.
## Running with Docker ## Running with Docker
### Running the official Docker image
You can run k9s as a Docker container by mounting your `KUBECONFIG`: You can run k9s as a Docker container by mounting your `KUBECONFIG`:
```shell ```shell
@ -111,6 +113,28 @@ K9s is available on Linux, macOS and Windows platforms.
docker run --rm -it -v ~/.kube/config:/root/.kube/config quay.io/derailed/k9s docker run --rm -it -v ~/.kube/config:/root/.kube/config quay.io/derailed/k9s
``` ```
### Building your own Docker image
You can build your own Docker image of k9s from the [Dockerfile](Dockerfile) with the following:
```shell
docker build -t k9s-docker:0.1 .
```
You can get the latest stable `kubectl` version and pass it to the `docker build` command with the `--build-arg` option.
You can use the `--build-arg` option to pass any valid `kubectl` version (like `v1.18.0` or `v1.19.1`).
```shell
KUBECTL_VERSION=$(make kubectl-stable-version 2>/dev/null)
docker build --build-arg KUBECTL_VERSION=${KUBECTL_VERSION} -t k9s-docker:0.1 .
```
Run your container:
```shell
docker run --rm -it -v ~/.kube/config:/root/.kube/config k9s-docker:0.1
```
--- ---
## PreFlight Checks ## PreFlight Checks
@ -630,7 +654,7 @@ roleRef:
Example: Dracula Skin ;) Example: Dracula Skin ;)
<img src="assets/skins/dracula.png"> <img src="assets/skins/dracula.png" alt="Dracula Skin">
You can style K9s based on your own sense of look and style. Skins are YAML files, that enable a user to change the K9s presentation layer. K9s skins are loaded from `$HOME/.k9s/skin.yml`. If a skin file is detected then the skin would be loaded if not the current stock skin remains in effect. You can style K9s based on your own sense of look and style. Skins are YAML files, that enable a user to change the K9s presentation layer. K9s skins are loaded from `$HOME/.k9s/skin.yml`. If a skin file is detected then the skin would be loaded if not the current stock skin remains in effect.
@ -736,9 +760,9 @@ to make this project a reality!
## Meet The Core Team! ## Meet The Core Team!
* [Fernand Galiana](https://github.com/derailed) * [Fernand Galiana](https://github.com/derailed)
* <img src="assets/mail.png" width="16" height="auto"/> fernand@imhotep.io * <img src="assets/mail.png" width="16" height="auto" alt="email"/> fernand@imhotep.io
* <img src="assets/twitter.png" width="16" height="auto"/> [@kitesurfer](https://twitter.com/kitesurfer?lang=en) * <img src="assets/twitter.png" width="16" height="auto" alt="twitter"/> [@kitesurfer](https://twitter.com/kitesurfer?lang=en)
We always enjoy hearing from folks who benefit from our work. We always enjoy hearing from folks who benefit from our work.
--- ---
<img src="assets/imhotep_logo.png" width="32" height="auto"/> &nbsp;© 2020 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0) <img src="assets/imhotep_logo.png" width="32" height="auto" alt="Imhotep"/> &nbsp;© 2020 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0)