Kubernetes the hard way kube apiserver: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 57: Строка 57:
   
 
=Сертификаты которые использует <code>kube-apiserver</code>=
 
=Сертификаты которые использует <code>kube-apiserver</code>=
  +
  +
<code>--etcd-certfile</code>
  +
<code>--etcd-keyfile</code>
  +
  +
<code>--tls-cert-file</code>
  +
<code>--tls-private-key-file</code>
  +
  +
<code>--service-account-key-file</code>
  +
<code>--service-account-signing-key-file</code>
  +
  +
<code>--client-ca-file</code>
  +
  +
<code>--kubelet-certificate-authority</code>
  +
<code>--kubelet-client-certificate</code>
  +
<code>--kubelet-client-key</code>

Версия 17:00, 17 октября 2022

Kube-apiserver

Соглашение о расположении файлов

  • bin - /usr/local/bin/
  • конфиги, в том числе сертификаты - /etc/k8s/<имя сервиса> например /etc/k8s/kube-apiserver/
  • конфиги, в том числе сертификаты общие для нескольких сервисов - /etc/k8s/shared/

Загрузка

Общий для всех базовых компонентов скрипт

#!/bin/bash

VERSION="1.25.1"
ARCH="arm64"

mkdir -p k8s_${VERSION}
cd k8s_${VERSION}

wget -q --show-progress --https-only --timestamping \
  "https://storage.googleapis.com/kubernetes-release/release/v${VERSION}/bin/linux/${ARCH}/kube-apiserver" \
  "https://storage.googleapis.com/kubernetes-release/release/v${VERSION}/bin/linux/${ARCH}/kube-controller-manager" \
  "https://storage.googleapis.com/kubernetes-release/release/v${VERSION}/bin/linux/${ARCH}/kube-scheduler" \
  "https://storage.googleapis.com/kubernetes-release/release/v${VERSION}/bin/linux/${ARCH}/kubectl"

Шифрование и encryption-provider-config

encryption-config.yaml https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/
encryption-provider-config - конфигурация шифрования в etcd
Файл encryption-config.yaml должен быть одинаковый у всех участников кластера, для того что бы они могли расшифровать данные друг друга

В целом судя по документации может быть более сложная конфигурация чем "один ключ для всего", но особого смысла в этом я не вижу

head -c 32 /dev/urandom | base64
<PRE>
<PRE>
cat configs/encryption-config.yaml
kind: EncryptionConfig
apiVersion: v1
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: sCfG58h5SdUxSFephLyE6M6ppxYfnVFUi+GB2b5+kd4=
      - identity: {}

Сертификаты которые использует kube-apiserver

--etcd-certfile --etcd-keyfile

--tls-cert-file --tls-private-key-file

--service-account-key-file --service-account-signing-key-file

--client-ca-file

--kubelet-certificate-authority --kubelet-client-certificate --kubelet-client-key