Vault PKI Intermediate SETUP CAs for ALL SERVICES Kubernetes the hard way v2: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) (→tls) |
||
Строка 38: | Строка 38: | ||
==<code>k8s_pki_intermediate_ca_for_service_kube_scheduler_tls/</code>== |
==<code>k8s_pki_intermediate_ca_for_service_kube_scheduler_tls/</code>== |
||
==<code>k8s_pki_intermediate_ca_for_service_kubelet_tls/</code>== |
==<code>k8s_pki_intermediate_ca_for_service_kubelet_tls/</code>== |
||
+ | |||
+ | Для всех TLS-PKI в целом настройка практически одинаковая |
||
+ | |||
+ | ==Общие переменные== |
||
+ | <PRE> |
||
+ | #!/bin/bash |
||
+ | |||
+ | |||
+ | export SERVICE_NAME='kube-apiserver' |
||
+ | #export SERVICE_NAME="kube-controller-manager" |
||
+ | #export SERVICE_NAME="kube-scheduler" |
||
+ | #export SERVICE_NAME="kubelet" |
||
+ | |||
+ | export PKI_PATH_PREFIX="k8s_pki_intermediate_ca_for_service" |
||
+ | export USAGE="TLS" |
||
+ | |||
+ | |||
+ | export SERVICE_NAME_UNDERSCORE=$(echo ${SERVICE_NAME} | sed 's/-/_/g') |
||
+ | export USAGE_LOWERCASE=$(echo "${USAGE,,}") |
||
+ | |||
+ | |||
+ | export PKI_PATH="${PKI_PATH_PREFIX}_${SERVICE_NAME_UNDERSCORE}_${USAGE_LOWERCASE}" |
||
+ | |||
+ | |||
+ | export VAULT_ADDR=http://vault.home:8200 |
||
+ | export VAULT_TOKEN="s.Yb1J2VamFyYoav3VVE2YQQ88" |
||
+ | |||
+ | export INTERMEDIATE_CA_DESCRIPTION="PKI Intermediate CA for K8S: ${SERVICE_NAME} ${USAGE}" |
||
+ | |||
+ | |||
+ | COMMON_NAME="Intermediate CA for service ${SERVICE_NAME} ${USAGE}" |
||
+ | COUNTRY="Ukraine" |
||
+ | LOCALITY="Kharkov" |
||
+ | STREET_ADDRESS="Lui Pastera st. 322 app. 131" |
||
+ | POSTAL_CODE="61172" |
||
+ | ORGNIZATION="K8s The Hardest Way Labs" |
||
+ | OU="IT" |
||
+ | TTL="175200h" |
||
+ | |||
+ | MAX_LEASE_TIME="175200h" |
||
+ | |||
+ | |||
+ | COMMON_SETTINGS=() |
||
+ | COMMON_SETTINGS+=( "common_name=${COMMON_NAME}") |
||
+ | COMMON_SETTINGS+=( "country=${COUNTRY}" ) |
||
+ | COMMON_SETTINGS+=( "locality=${LOCALITY}" ) |
||
+ | COMMON_SETTINGS+=( "street_address=${STREET_ADDRESS}" ) |
||
+ | COMMON_SETTINGS+=( "postal_address=${POSTAL_CODE}" ) |
||
+ | COMMON_SETTINGS+=( "organization=${ORGNIZATION}" ) |
||
+ | COMMON_SETTINGS+=( "ou=${OU}" ) |
||
+ | COMMON_SETTINGS+=( "ttl=${TTL}" ) |
||
+ | </PRE> |
||
+ | |||
=client_auth= |
=client_auth= |
||
Версия 15:03, 21 декабря 2022
Прежде чем начать
Для понимания ЗАЧЕМ это делается - можно просмотреть Описание СА и сертификатов (которые будут созданы в этой секции)
Однако это не требуется - можно сначала сделать все необходимые настройки, и только после разобрать зачем они нужны
Terraform
По-хорошему эту часть надо делать не скриптами на баше и вызовами vault
, а с помощью terraform
, но пока-что руки не дошли переделать.
Какие есть CA
В этой инсталляции используются следующие CA
k8s_pki_root_ca/
k8s Root CA, Корневой СА, которым подписаны промежуточные СА и только они. Все остальные сертификаты подписаны промежуточными СА.k8s_pki_intermediate_ca_for_service_etcd/
Intermediate CA for ETCd service, СА которым подписываются сертификаты дляetcd
k8s_pki_intermediate_ca_for_service_kube_apiserver_client_auth/
Intermediate CA for K8S: kube-apiserver CLIENT_AUTHk8s_pki_intermediate_ca_for_service_kube_apiserver_tls/
Intermediate CA for K8S: kube-apiserver TLSk8s_pki_intermediate_ca_for_service_kube_controller_manager_tls/
Intermediate CA for K8S: kube-controller-manager TLSk8s_pki_intermediate_ca_for_service_kube_scheduler_tls/
Intermediate CA for K8S: kube-scheduler TLSk8s_pki_intermediate_ca_for_service_kubelet_client_auth/
Intermediate CA for K8S: kubelet CLIENT_AUTHk8s_pki_intermediate_ca_for_service_kubelet_tls/
Intermediate CA for K8S: kubelet TLS
k8s_pki_intermediate_ca_for_service_etcd/
k8s_pki_intermediate_ca_for_service_etcd/
- используется для клиентских и серверных сертификатов etcd
.
Строго говоря, не является частью k8s и настраивается отдельно (Настройка PKI для etcd
)
- для шифрования endpoints
- для авторизации клиентов
tls
k8s_pki_intermediate_ca_for_service_kube_apiserver_tls/
k8s_pki_intermediate_ca_for_service_kube_controller_manager_tls/
k8s_pki_intermediate_ca_for_service_kube_scheduler_tls/
k8s_pki_intermediate_ca_for_service_kubelet_tls/
Для всех TLS-PKI в целом настройка практически одинаковая
Общие переменные
#!/bin/bash export SERVICE_NAME='kube-apiserver' #export SERVICE_NAME="kube-controller-manager" #export SERVICE_NAME="kube-scheduler" #export SERVICE_NAME="kubelet" export PKI_PATH_PREFIX="k8s_pki_intermediate_ca_for_service" export USAGE="TLS" export SERVICE_NAME_UNDERSCORE=$(echo ${SERVICE_NAME} | sed 's/-/_/g') export USAGE_LOWERCASE=$(echo "${USAGE,,}") export PKI_PATH="${PKI_PATH_PREFIX}_${SERVICE_NAME_UNDERSCORE}_${USAGE_LOWERCASE}" export VAULT_ADDR=http://vault.home:8200 export VAULT_TOKEN="s.Yb1J2VamFyYoav3VVE2YQQ88" export INTERMEDIATE_CA_DESCRIPTION="PKI Intermediate CA for K8S: ${SERVICE_NAME} ${USAGE}" COMMON_NAME="Intermediate CA for service ${SERVICE_NAME} ${USAGE}" COUNTRY="Ukraine" LOCALITY="Kharkov" STREET_ADDRESS="Lui Pastera st. 322 app. 131" POSTAL_CODE="61172" ORGNIZATION="K8s The Hardest Way Labs" OU="IT" TTL="175200h" MAX_LEASE_TIME="175200h" COMMON_SETTINGS=() COMMON_SETTINGS+=( "common_name=${COMMON_NAME}") COMMON_SETTINGS+=( "country=${COUNTRY}" ) COMMON_SETTINGS+=( "locality=${LOCALITY}" ) COMMON_SETTINGS+=( "street_address=${STREET_ADDRESS}" ) COMMON_SETTINGS+=( "postal_address=${POSTAL_CODE}" ) COMMON_SETTINGS+=( "organization=${ORGNIZATION}" ) COMMON_SETTINGS+=( "ou=${OU}" ) COMMON_SETTINGS+=( "ttl=${TTL}" )