В этом кратком руководстве вы узнаете, из чего состоит Kubeconfig и что означает каждая часть YAML.

Сначала запишите один из ваших Kubeconfigs на локальном компьютере. Обычно это ниже ~/.kube.

Описание изображения

Далее открываем config в редакторе по вашему выбору или с помощью cat команду для просмотра.

Ниже приведен образец config. Давайте сломаем его, разделив его на части.

clusters:
- cluster:
    certificate-authority-data: some_string_here
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority: /Users/michael/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Thu, 08 Sep 2022 12:50:41 EDT
        provider: minikube.sigs.k8s.io
        version: v1.25.1
      name: cluster_info
    server: https://127.0.0.1:64599
  name: minikube
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Thu, 08 Sep 2022 12:50:41 EDT
        provider: minikube.sigs.k8s.io
        version: v1.25.1
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: some_string_here
    client-key-data: some_string_here
- name: minikube
  user:
    client-certificate: /Users/michael/.minikube/profiles/minikube/client.crt
    client-key: /Users/michael/.minikube/profiles/minikube/client.key
Войти в полноэкранный режим

Выйти из полноэкранного режима

Перво-наперво — а kubeconfig это то, как вы, пользователь, взаимодействуете с Kubernetes. Для взаимодействия с кластером Kubernetes kubeconfig нужна информация о вашем кластере. Первый раздел конфигурации — это имя сервера, центр сертификации, URL-адрес сервера, версия API Kubernetes и метаданные о том, когда кластер был обновлен. Это фактическая часть соединения с кластером. У вас может быть несколько кластеров, перечисленных в Kubeconfig, в зависимости от того, к скольким кластерам вы подключаетесь.

clusters:
- cluster:
    certificate-authority-data: some_string_here
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority: /Users/michael/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Thu, 08 Sep 2022 12:50:41 EDT
        provider: minikube.sigs.k8s.io
        version: v1.25.1
      name: cluster_info
    server: https://127.0.0.1:64599
  name: minikube
Войти в полноэкранный режим

Выйти из полноэкранного режима

Далее идет контекст. Контекст — это сама конфигурация кластера. Как и в разделе кластера конфигурации, у вас может быть несколько контекстов. Контекст состоит из имени пользователя, использующего кластер Kubernetes, пространства имен пользователей по умолчанию и информации о кластере, к которому подключается пользователь.

contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Thu, 08 Sep 2022 12:50:41 EDT
        provider: minikube.sigs.k8s.io
        version: v1.25.1
      name: context_info
    namespace: default
    user: minikube
  name: minikube
Войти в полноэкранный режим

Выйти из полноэкранного режима

Текущий контекст указывает, какой кластер Kubernetes находится внутри конфигурации, которая есть на вашем компьютере, к которому вы в данный момент подключены. Вы можете изменить это, чтобы указать на другой кластер, если у вас есть соответствующий доступ к указанному кластеру.

current-context: minikube
Войти в полноэкранный режим

Выйти из полноэкранного режима

Последняя часть — это конфигурация, которая сама является ресурсом/объектом Kubernetes. Он указывает пользователя, который будет использоваться для подключения к текущему кластеру Kubernetes, имя текущего кластера Kubernetes в контексте и авторизацию (сертификат клиента и ключ), используемые для того, чтобы текущий пользователь, связанный с конфигурацией, мог подключиться к кластер.

kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: some_string_here
    client-key-data: some_string_here
- name: minikube
  user:
    client-certificate: /Users/michael/.minikube/profiles/minikube/client.crt
    client-key: /Users/michael/.minikube/profiles/minikube/client.key
Войти в полноэкранный режим

Выйти из полноэкранного режима