Hey , does the garden team offer a garden docker ...
# 🤖|ask-kapa
s
Hey @microscopic-river-74022 , does the garden team offer a garden docker image that includes
kubectl
? How can I use one of the offered garden images with
kubectl
to access my cluster.
m
Please stand by @sparse-portugal-33038 as I search the knowledge base. I normally take about 20 seconds or so. :wave:
---------------------- Yes, the Garden team does offer a Docker image that includes
kubectl
. The image is called
gardendev/garden-gcloud
and it extends the standard
gardendev/garden
image to bundle the
gcloud
binary (Google Cloud CLI) which includes
kubectl
. You can use this image in your CI pipelines, such as in CircleCI, to interact with your Kubernetes cluster. Here's an example of how you can use the
gardendev/garden-gcloud
image in a CircleCI job:
Copy code
yaml
# .circleci/config
jobs:
 preview:
 docker:
 - image: gardendev/garden-gcloud:bonsai-alpine
 environment:
 GARDEN_LOG_LEVEL: verbose # set the log level to your preference here
 steps:
 - checkout
 - configure_kubectl_context
 - run:
 name: Test project
 command: garden test --env=preview
 - run:
 name: Deploy project
 command: garden deploy --env=preview
In this example, the
gardendev/garden-gcloud
image is used to run Garden commands against a Kubernetes cluster. The
kubectl
context is configured as a step in the job, allowing Garden to interact with the cluster. For more information, you can refer to the official Garden documentation on using Garden in CircleCI (). ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
message has been deleted
s
@microscopic-river-74022 does this image include docker? I am trying to tag and push a docker image via the
docker
command but am getting an error about the docker daemon not running. How can I start it in this image?
m
Let me check the knowledge base for you. One moment! :books:
---------------------- The
gardendev/garden-gcloud
image does include Docker, but it doesn't run the Docker daemon by default. This is why you're seeing an error about the Docker daemon not running when you try to run Docker commands. Starting the Docker daemon in a Docker container is a complex task and generally not recommended due to the security implications and the fact that it requires privileged access to the host. It's also worth noting that running Docker inside Docker (a.k.a. "DinD") can lead to some tricky issues. Instead, you might want to consider using the Docker socket from the host. This allows you to run Docker commands inside your container, but they're actually executed by the Docker daemon on the host. Here's an example of how you can do this in a Docker run command:
Copy code
bash
docker run -v /var/run/docker.sock:/var/run/docker.sock -it gardendev/garden-gcloud:bonsai-alpine
In this command,
-v /var/run/docker.sock:/var/run/docker.sock
mounts the Docker socket from the host into the container. However, please be aware that this approach essentially gives the container full control over your Docker daemon, which can have serious security implications. It's generally only recommended for trusted environments. If you're trying to build, tag, and push Docker images as part of your CI/CD pipeline, a better approach might be to use Garden's built-in functionality for this. For example, you can use the
garden publish
command to publish images that have been built in your cluster. You can find more information about this in the Garden documentation (). ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
message has been deleted
s
@microscopic-river-74022 doesn't publishing images via garden just pull it to the local docker process anyway? How is that any different?
m
Let me check the knowledge base for you. One moment! :books:
---------------------- Yes, you're correct. When you use the
garden publish
command, Garden does pull the image from the remote registry to the local Docker daemon, and then pushes it from there. This is done to avoid having to re-implement all the various authentication methods involved in pushing directly from the cluster. It also provides a level of control and security, as it's often not desired to give clusters direct access to push to production registries. However, the difference lies in the fact that with Garden, you're not directly interacting with Docker or managing the Docker daemon yourself. Garden abstracts away these details, allowing you to focus on your application code and not the intricacies of image building and publishing. It also integrates these tasks into a streamlined development workflow, where building and publishing images is just one part of the process. If you're running this in a CI/CD pipeline, you would need to ensure that Docker is running in your CI/CD environment. If you're using the
gardendev/garden-gcloud
image in a Kubernetes-based CI/CD pipeline, you might need to use a sidecar container with Docker or a Docker-in-Docker setup, which can add complexity to your pipeline. For more information, you can refer to the Garden documentation on publishing images (). ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
message has been deleted