From 71504141665202f39c44f815ed6680b31148fa3d Mon Sep 17 00:00:00 2001 From: k8s-infra-cherrypick-robot <90416843+k8s-infra-cherrypick-robot@users.noreply.github.com> Date: Fri, 8 Sep 2023 00:42:14 -0700 Subject: [PATCH] Add document to configure podman to use tilt (#1398) Co-authored-by: Karthik K N --- Makefile | 18 ++++ docs/book/src/SUMMARY.md | 1 + docs/book/src/developer/tilt-with-podman.md | 39 +++++++++ hack/kind-install.sh | 95 +++++++++++++++++++++ 4 files changed, 153 insertions(+) create mode 100644 docs/book/src/developer/tilt-with-podman.md create mode 100755 hack/kind-install.sh diff --git a/Makefile b/Makefile index c56844194..a2c89f409 100644 --- a/Makefile +++ b/Makefile @@ -56,6 +56,9 @@ PULL_BASE_REF ?= $(RELEASE_TAG) # PULL_BASE_REF will be provided by Prow RELEASE_ALIAS_TAG ?= $(PULL_BASE_REF) RELEASE_DIR := out +# kind +CAPI_KIND_CLUSTER_NAME ?= capi-test + # image name used to build the cmd/capibmadm TOOLCHAIN_IMAGE := toolchain @@ -548,3 +551,18 @@ clean-release: ## Remove the release folder .PHONY: clean-generated-conversions clean-generated-conversions: ## Remove files generated by conversion-gen from the mentioned dirs (IFS=','; for i in $(SRC_DIRS); do find $$i -type f -name 'zz_generated.conversion*' -exec rm -f {} \;; done) + +.PHONY: clean-kind +clean-kind: ## Cleans up the kind cluster with the name $CAPI_KIND_CLUSTER_NAME + kind delete cluster --name="$(CAPI_KIND_CLUSTER_NAME)" || true + +## -------------------------------------- +## Kind +## -------------------------------------- + +##@ kind: + +.PHONY: kind-cluster +kind-cluster: ## Create a new kind cluster designed for development with Tilt + hack/kind-install.sh + diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md index 8287eae27..fb3696ecb 100644 --- a/docs/book/src/SUMMARY.md +++ b/docs/book/src/SUMMARY.md @@ -27,6 +27,7 @@ - [Image Commands](./topics/capibmadm/vpc/image.md) - [Key Commands](./topics/capibmadm/vpc/key.md) - [Developer Guide](./developer/index.md) + - [Podman setup for tilt](./developer/tilt-with-podman.md) - [Rapid iterative development with Tilt](./developer/tilt.md) - [Guide for API conversions](./developer/conversion.md) - [Release Process](./developer/release.md) diff --git a/docs/book/src/developer/tilt-with-podman.md b/docs/book/src/developer/tilt-with-podman.md new file mode 100644 index 000000000..3cbc3381f --- /dev/null +++ b/docs/book/src/developer/tilt-with-podman.md @@ -0,0 +1,39 @@ +# Podman setup to use tilt + + +## Prerequisites + +1. Install Podman: Instruction can be found [here](https://podman.io/docs/installation) +2. Emulate docker cli with Podman: Instructions can be found [here](https://podman-desktop.io/docs/migrating-from-docker/emulating-docker-cli-with-podman) + +## 1. Create Podman machine + +```shell +$ podman machine init +$ podman machine start +``` + +## 2. Configure podman to use local registry + +```shell +$ podman machine ssh +$ sudo vi /etc/containers/registries.conf + +## at the end of the file add below content + +[[registry]] +location = "localhost:5001" +insecure = true +``` +Restart Podman machine + +```shell +podman machine stop +podman machine start +``` + +## 3. Create a kind cluster + +```shell +$ make kind-cluster +``` \ No newline at end of file diff --git a/hack/kind-install.sh b/hack/kind-install.sh new file mode 100755 index 000000000..0dfbd0ed0 --- /dev/null +++ b/hack/kind-install.sh @@ -0,0 +1,95 @@ +#!/bin/sh + +# Copyright 2023 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit +set -o nounset +set -o pipefail + +KIND_CLUSTER_NAME=${CAPI_KIND_CLUSTER_NAME:-"capi-test"} + + +# 1. If kind cluster already exists exit. +if [[ "$(kind get clusters)" =~ .*"${KIND_CLUSTER_NAME}".* ]]; then + echo "kind cluster already exists, moving on" + exit 0 +fi + + + +# 2. Create registry container unless it already exists +reg_name='kind-registry' +reg_port='5001' +if [ "$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)" != 'true' ]; then + docker run \ + -d --restart=always -p "127.0.0.1:${reg_port}:5000" --name "${reg_name}" \ + registry:2 +fi + +# 3. Create kind cluster with containerd registry config dir enabled +# TODO: kind will eventually enable this by default and this patch will +# be unnecessary. +# +# See: +# https://github.com/kubernetes-sigs/kind/issues/2875 +# https://github.com/containerd/containerd/blob/main/docs/cri/config.md#registry-configuration +# See: https://github.com/containerd/containerd/blob/main/docs/hosts.md +cat <