Как перестать отдавать деньги AWS, запустив KubeCF с Kind на MacOS
6 июня 2022 г.Фото Алекса Горцена на Flickr
Больше лайма, больше кокосов
В предыдущих сообщениях блога я рассмотрел, как развернуть KubeCF на EKS, что дает вам хорошее стабильное развертывание KubeCF
, недостатком которого является то, что вы платите деньги за каждый час его работы на AWS.
Я привык давать деньги Amazon, но обычно получаю взамен небольшую картонную коробку каждые несколько дней.
Итак, как запустить KubeCF
на своем Mac бесплатно? Настройтесь ниже.
Впереди драконы
На вашем устройстве с Apple MacOS должно быть установлено не менее 16 ГБ памяти. При установке будет использоваться около 11 ГБ памяти после полного запуска.
Установка ненадежна и временами разочаровывает, она больше ориентирована на операторов, которые пробуют работать на платформе, такие как тестирование пользовательских сборок, взлом запросов к базе данных и другие потенциально разрушительные действия. Установка НЕ выдерживает перезагрузки и становится очень хрупкой после 24+ часов работы. Это не вина KubeCF, при запуске на EKS он продолжит работать без проблем. Вас предупредили!
Обзор установки
- Установите Homebrew и Docker Desktop
- Установите
tuntap
и запустите прокладку - Установите
kind
и разверните кластер - Установите и настройте
metallb
- Установите
cf-operator
и развернитеkubecf
- Войдите и полюбуйтесь своим творением
Следующие несколько разделов в значительной степени заимствованы из https://www.thehumblelab.com/kind-and-metallb. -on-mac/, я рекомендую вам просмотреть этот документ, чтобы понять, зачем нужна прокладка tuntap
и как проверить конфигурацию для metallb
. р>
Установка Homebrew и Docker Desktop
Я не буду вдаваться в подробности, так как эти инструменты, скорее всего, уже установлены:
* Homebrew (полная информация здесь: https://docs.brew.sh/Installation) или просто запустите:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
* Docker Desktop (подробные сведения об установке приведены по адресу: https://docs.docker.com/desktop/mac/install/ ) или запустите:
brew install --cask docker
# Then launch docker from Applications to complete the install and start docker
Установите tuntap
и запустите прокладку
Запуск docker
в MacOS имеет некоторые «недостатки», которые можно устранить, установив сетевую оболочку для выполнения этой установки:
brew install git
brew install --cask tuntap
git clone https://github.com/AlmirKadric-Published/docker-tuntap-osx.git
cd docker-tuntap-osx
./sbin/docker_tap_install.sh
./sbin/docker_tap_up.sh
Установить вид
и развернуть кластер
Сладкий и простой:
brew install kind
kind create cluster
Установите и настройте metallb
Мы будем использовать metallb
в качестве ресурса LoadBalancer и откроем локальный маршрут, чтобы MacOS могла локально направлять трафик в кластер.
sudo route -v add -net 172.18.0.1 -netmask 255.255.0.0 10.0.75.2
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml
cat << EOF > metallb-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 172.18.0.150-172.18.0.200
EOF
kubectl create -f metallb-config.yaml
Установите cf-operator
и разверните kubecf
brew install wget
brew install helm
brew install watch
wget https://github.com/cloudfoundry-incubator/kubecf/releases/download/v2.7.13/kubecf-bundle-v2.7.13.tgz
tar -xvzf kubecf-bundle-v2.7.13.tgz
kubectl create namespace cf-operator
helm install cf-operator
--namespace cf-operator
--set "global.singleNamespace.name=kubecf"
cf-operator.tgz
--wait
helm install kubecf
--namespace kubecf
--set system_domain=172.18.0.150.nip.io
--set features.eirini.enabled=false
--set features.ingress.enabled=false
--set services.router.externalIPs={172.18.0.150}
https://github.com/cloudfoundry-incubator/kubecf/releases/download/v2.7.13/kubecf-v2.7.13.tgz
watch kubectl get pods -A
Теперь идите прогуляйтесь, потребуется 30-60 минут, чтобы диаграмма kubecf
была полностью принята CRD cf-operator
и запланирована для запуска. По завершении вы должны увидеть вывод, подобный следующему:
Every 2.0s: kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
cf-operator quarks-cd9d4b96f-rtkbt 1/1 Running 0 40m
cf-operator quarks-job-6d8d744bc6-pmfnd 1/1 Running 0 40m
cf-operator quarks-secret-7d76f854dc-9wp2f 1/1 Running 0 40m
cf-operator quarks-statefulset-f6dc85fb8-x6jfb 1/1 Running 0 40m
kube-system coredns-558bd4d5db-ncmh5 1/1 Running 0 41m
kube-system coredns-558bd4d5db-zlpgg 1/1 Running 0 41m
kube-system etcd-kind-control-plane 1/1 Running 0 41m
kube-system kindnet-w4m9n 1/1 Running 0 41m
kube-system kube-apiserver-kind-control-plane 1/1 Running 0 41m
kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 41m
kube-system kube-proxy-ln6hb 1/1 Running 0 41m
kube-system kube-scheduler-kind-control-plane 1/1 Running 0 41m
kubecf api-0 17/17 Running 1 19m
kubecf auctioneer-0 6/6 Running 2 20m
kubecf cc-worker-0 6/6 Running 0 20m
kubecf cf-apps-dns-76947f98b5-tbfql 1/1 Running 0 39m
kubecf coredns-quarks-7cf8f9f58d-msq9m 1/1 Running 0 38m
kubecf coredns-quarks-7cf8f9f58d-pbkt9 1/1 Running 0 38m
kubecf credhub-0 8/8 Running 0 20m
kubecf database-0 2/2 Running 0 38m
kubecf database-seeder-0bc49e7bcb1f9453-vnvjm 0/2 Completed 0 38m
kubecf diego-api-0 9/9 Running 2 20m
kubecf diego-cell-0 12/12 Running 2 20m
kubecf doppler-0 6/6 Running 0 20m
kubecf log-api-0 9/9 Running 0 20m
kubecf log-cache-0 10/10 Running 0 19m
kubecf nats-0 7/7 Running 0 20m
kubecf router-0 7/7 Running 0 20m
kubecf routing-api-0 6/6 Running 1 20m
kubecf scheduler-0 12/12 Running 2 19m
kubecf singleton-blobstore-0 8/8 Running 0 20m
kubecf tcp-router-0 7/7 Running 0 20m
kubecf uaa-0 9/9 Running 0 20m
local-path-storage local-path-provisioner-547f784dff-r8trf 1/1 Running 1 41m
metallb-system controller-fb659dc8-dhpnb 1/1 Running 0 41m
metallb-system speaker-h9lh9 1/1 Running 0 41m
Войти и полюбоваться своим творением
Чтобы войти в систему с учетной записью пользователя admin
uaa:
cf api --skip-ssl-validation "https://api.172.18.0.150.nip.io"
acp=$(kubectl get secret
--namespace kubecf var-cf-admin-password
-o jsonpath='{.data.password}'
| base64 --decode)
cf auth admin "${acp}"
cf create-space test -o system
cf target -o system -s test
Или, чтобы использовать учетную запись клиента smoke_tests
uaa (потому что вы бунтарь или что-то в этом роде):
cf api --skip-ssl-validation "https://api.172.18.0.150.nip.io"
myclient=$(kubectl get secret
--namespace kubecf var-uaa-clients-cf-smoke-tests-secret
-o jsonpath='{.data.password}'
| base64 --decode)
cf auth cf_smoke_tests "${myclient}" --client-credentials
cf create-space test -o system
cf target -o system -s test
Убрать и убрать игрушки
Если вы завершили развертывание KubeCF, у вас есть два варианта:
- Усыпите свое творение. Запустите Docker Desktop > Панель инструментов > Выберите
kind-control-place
и нажмите «Стоп». Иди развлекайся, когда вернешься, нажми «Старт». Через несколько минут стручки восстановятся и станут здоровыми. - Очистить. Чтобы удалить кластер и пользовательскую маршрутизацию:
kind delete cluster
sudo route delete 172.18.0.0
./sbin/docker_tap_uninstall.sh
Отладка проблем
Привыкайте видеть:
<цитата>Ошибка запроса: получите «https://api.172.18.0.150.nip.io»: наберите tcp 172.18.0.150:443: тайм-аут ввода/вывода
Сервер API глючит, повторите попытку, убедившись, что все модули запущены, как показано в разделе Установка cf-operator и развертывание kubecf
.
Продолжение
Есть вопросы? Существует отличное сообщество KubeCF, которое можно найти по адресу https://cloudfoundry.slack.com/archives/CQ2U3L6DC. kubecf-dev
в Slack. Вы можете связаться со мной через @cweibel
.
У меня также есть код Terraform, который будет запускать VPC + EKS + KubeCF для более постоянного решения для запуска KubeCF
не на Mac, проверьте https://github.com/cweibel/example-terraform-eks/tree/main/eks_for_kubecf_v2 для более подробной информации.
Наслаждайтесь!
Также опубликовано здесь
Оригинал