SSH в kubernetes узлы, созданные через KOPS - PullRequest
2 голосов
/ 06 марта 2019

Я создал кластер Kubernetes через Kops.Конфигурация и ssh-ключи были на машине, к которой у меня больше нет доступа.Можно ли подключиться к ssh через kops, даже если я потерял ключ?Я вижу, что есть команда -

Копы получают секреты

Это дает мне все секреты.Могу ли я использовать это для получения доступа SSH к узлам и как это сделать?

Я вижу, что состояние кластера хранится в S3.Он также хранит секретный ключ?

Ответы [ 4 ]

1 голос
/ 09 мая 2019

Вы не можете восстановить закрытый ключ, но вы сможете установить новый открытый ключ, выполнив следующую процедуру:

kops delete secret --name <clustername> sshpublickey admin
kops create secret --name <clustername> sshpublickey admin -i ~/.ssh/newkey.pub
kops update cluster --yes to reconfigure the auto-scaling groups
kops rolling-update cluster --name <clustername> --yes to immediately roll all the machines so they have the new key (optional)

Взято из этого документа:

https://github.com/kubernetes/kops/blob/master/docs/security.md#ssh-access

0 голосов
/ 07 июля 2019

Вы можете запустить новый набор демонов с gcr.io / google-container / startup-script контейнерами, чтобы обновить открытый ключ на всех ваших узлах, это поможет вам в случае, если у вас новый узел вращается и заменит открытый ключ во всех существующих узлах.

kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
  name: startup-script
  labels:
    app: startup-script
spec:
  template:
    metadata:
      labels:
        app: startup-script
    spec:
      hostPID: true
      containers:
        - name: startup-script
          image: gcr.io/google-containers/startup-script:v1
          imagePullPolicy: Always
          securityContext:
            privileged: true
          env:
          - name: STARTUP_SCRIPT
            value: |
              #! /bin/bash
              touch /tmp/foo
              #echo "MYPUBLICKEY" > /home/admin/.ssh/authorized_keys
              echo done

замените MYPUBLICKEY вашим открытым ключом и именем пользователя после home, здесь admin получит замену в зависимости от того, какую ОС вы используете. Это поможет вам получить доступ к узлу через ssh без изменения / замены существующих узлов

Вы также можете добавить пользовательские данные в ig во время выполнения kops edit ig nodes и добавить небольшую строку для добавления вашего открытого ключа.

0 голосов
/ 27 апреля 2019

В моем случае, когда я установил кластер с помощью Kops, мне пришлось запустить ssh-keygen, как показано ниже, который создал ключи id_rsa.pub/pvt. Это позволяет мне просто сделать SSH или

ssh-keygen
kops create secret --name ${KOPS_CLUSTER_NAME} sshpublickey admin -i ~/.ssh/id_rsa.pub

, а затем создал кластер с

kops update cluster --name ${KOPS_CLUSTER_NAME} --yes
ssh admin@ec2-13-59-4-99.us-east-2.compute.amazonaws.com
0 голосов
/ 07 марта 2019

Это дает мне все секреты. Могу ли я использовать это для получения доступа SSH к узлам и как это сделать?

Не совсем. Это секреты доступа к kube-apiserver в кластере. Например, чтобы вы могли запускать kubectl команды.

Я вижу, что состояние кластера хранится в S3. Он также хранит секретный ключ?

Он хранится в S3, но не в ключах ssh для доступа к серверам. Они хранятся в AWS в разделе «Ключевые пары».

keypair

К сожалению, вы можете получить только свой закрытый ключ, который можно использовать для входа в систему только один раз (при создании пары ключей). Поэтому я думаю, что вам не повезло, если у вас нет личного ключа. Если у вас есть доступ к консоли AWS, вы можете сделать снимок корневого диска ваших экземпляров и воссоздать ваши узлы (или плоскость управления) один за другим с другой парой ключей AWS, для которой у вас есть закрытый ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...