Estou tentando usar kubectl
dentro krew
de um contêiner Docker. Aqui está meu Dockerfile
:
FROM alpine:latest
ENV KUBECTL_VERSION=v1.30.5 KREW_VERSION=v0.4.4
RUN apk update && apk add --no-cache curl bash git \
&& curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
&& chmod +x kubectl && mv kubectl /usr/local/bin/ \
&& curl -fsSL "https://github.com/kubernetes-sigs/krew/releases/download/${KREW_VERSION}/krew-linux_amd64.tar.gz" | tar xz -C /tmp \
&& mv /tmp/krew-* /usr/local/bin/krew \
&& /usr/local/bin/krew install konfig
ENV PATH="/root/.krew/bin:${PATH}"
CMD ["tail", "-f", "/dev/null"]
Passos que segui:
- Construiu a imagem:
docker build -t kubectl-krew .
- Executei o contêiner:
docker run -it kubectl-krew
- Dentro do recipiente:
kubectl version
obras e shows:Client Version: v1.30.5 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 The connection to the server localhost:8080 was refused - did you specify the right host or port?
krew version
mostra:OPTION VALUE GitTag v0.4.4 GitCommit 343e657 IndexURI https://github.com/kubernetes-sigs/krew-index.git BasePath /root/.krew IndexPath /root/.krew/index/default InstallPath /root/.krew/store BinPath /root/.krew/bin DetectedPlatform linux/amd64
- Mas
kubectl krew update
falha com:
error: unknown command "krew" for "kubectl"
A variável de ambiente $PATH
é:
/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
.
Por que não é kubectl krew
reconhecido? Como posso consertar isso?
HAHA!!! Resolvi o problema.
Se você olhar a página de instalação do krew, você encontrará as instruções para instalar
krew
noLinux
. Então, eu preciso executare então finalmente:
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Então, incluí as alterações acima no meu
Dockerfile
abaixo:e agora quando eu corro
kubectl krew version
, eu recebo: