Kubernetes
June 2, 2023
Подключение к кластеру с помощью статического файла конфигурации
Одним из способов, который чаще всего используют в целях автоматизации, является подключение с помощью статического файла. В нём будет храниться вся информация о соединении.
1. Определимся в начале с кластером, к которому будем подключаться.
2. На ВМ с которой подключаемся создадим каталог, в котором и будет лежать файл статического доступа.
3.Подключимся к кластеру чтобы создать в нём необходимые объекты.
export CLUSTER_ID=catgjoa9q28mah39srg6 mkdir statfile-for-k8s-cluster && cd statfile-for-k8s-cluster yc managed-kubernetes cluster get-credentials --id catgjoa9q28mah39srg6 --external --force
# Получаем корневой сертификат кластера. С помощью этого сертификата подтверждается подлинность кластера Kubernetes.
yc k8s cluster get --id $CLUSTER_ID --format json | \
jq -r .master.master_auth.cluster_ca_certificate | \
awk '{gsub(/\\n/,"\n")}1' > ca.pemcat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system EOF
# Получаем токен для SA
export SA_TOKEN=$(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | \
grep admin-user | \
awk '{print $1}') -o json | \
jq -r .data.token | \
base64 --d)# Получаем ip мастера. export MASTER_ENDPOINT=$(yc managed-kubernetes cluster get --id $CLUSTER_ID \ --format json | \ jq -r .master.endpoints.external_v4_endpoint)
kubectl config set-cluster sa-test2 \ --certificate-authority=ca.pem \ --server=$MASTER_ENDPOINT \ --kubeconfig=test.kubeconfig
kubectl config set-credentials admin-user \ --token=$SA_TOKEN \ --kubeconfig=test.kubeconfig
kubectl config set-context default \ --cluster=sa-test2 \ --user=admin-user \ --kubeconfig=test.kubeconfig
kubectl config use-context default \ --kubeconfig=test.kubeconfig
kubectl create ns test23 kubectl get ns --kubeconfig=test.kubeconfig NAME STATUS AGE default Active 11d kube-node-lease Active 11d kube-public Active 11d kube-system Active 11d test23 Active 13s yandex-system Active 11d
Подключимся к другому кластеру
yc managed-kubernetes cluster get-credentials --id cateh2jib1g8ja8v811a --external --force
# Смотрим ns в новом кластере kubectl get ns NAME STATUS AGE default Active 21d kube-node-lease Active 21d kube-public Active 21d kube-system Active 21d yandex-system Active 21d
# А если использовать статический файл, то подключение идёт к старому кластеру kubectl get ns --kubeconfig=test.kubeconfig NAME STATUS AGE default Active 11d kube-node-lease Active 11d kube-public Active 11d kube-system Active 11d test23 Active 3m47s yandex-system Active 11d
June 2, 2023, 19:46
0 views
0 reposts