Кластер Kubernetes на AWS с использованием копов без выхода в интернет - PullRequest
0 голосов
/ 08 мая 2018

Цель : установить кластер kubernetes на AWS, используя kops без доступа к Интернету.

Подход : инструмент kops обычно имеет много зависимостей от Интернета. Первый и самый важный - nodeup, который загружается с s3. Этот nodeup двоичный файл нуждается в передаче некоторых параметров в файл kube_env.yaml.

Assets:
- 125993c220d1a9b5b60ad20a867a0e7cda63e64c@https://storage.googleapis.com/kubernetes-release/release/v1.8.4/bin/linux/amd64/kubelet
- 8e2314db816b9b4465c5f713c1152cb0603db15e@https://storage.googleapis.com/kubernetes-release/release/v1.8.4/bin/linux/amd64/kubectl
- 1d9788b0f5420e1a219aad2cb8681823fc515e7c@https://storage.googleapis.com/kubernetes-release/network-plugins/cni-0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff.tar.gz
- f62360d3351bed837ae3ffcdee65e9d57511695a@https://kubeupv2.s3.amazonaws.com/kops/1.8.0/linux/amd64/utils.tar.gz
ClusterName: ${cluster_fqdn}
ConfigBase: s3://${config_base}
InstanceGroupName: ${instance_group}
Tags:
- _automatic_upgrades
- _aws
- _kubernetes_master
- _networking_cni
channels:
- s3://${config_base}/addons/bootstrap-channel.yaml
protokubeImage:
  hash: 1b972e92520b3cafd576893ae3daeafdd1bc9ffd
  name: protokube:1.8.0
  source: https://kubeupv2.s3.amazonaws.com/kops/1.8.0/images/protokube.tar.gz

Как видно из приведенного выше файла, пакеты и изображения загружаются из указанных источников. Довольно легко настроить источники и указать их на внутреннее хранилище для всех пакетов, упомянутых в файле. Но nodeup и protokube, кажется, вызывают изображения докера из google docker репозитория gcr.io, которому нужен выход в Интернет.

Мы попытались настроить манифесты так, чтобы они указывали на частное хранилище докеров, размещенное в сети, где хранятся все необходимые изображения. Но изображения, которые не будут извлечены из частного репозитория и кластера, не появятся. Это единственный блокатор, с которым мы сталкиваемся, чтобы создать кластер без интернета. Я предполагаю, что изображения жестко запрограммированы внутри двоичных файлов. Если это так, то единственное решение, которое я вижу, это создание пользовательского nodeup исполняемого файла.

Мы ищем другие решения или предложения по выбранному подходу. Изображения жестко запрограммированы в двоичном файле nodeup или происходит какая-то проверка хеша? Исходный код nodeup плохо документирован. Поэтому очень сложно точно определить, где именно вызываются изображения.

...