Kubernetes
December 11, 2022
Интеграция Kubernetes с Container Registry
После того как создали кластер k8s можно настроить интеграцию с CR для хранения docker имиджей в этом ресурсе.
Для начала создадим репозиторий в CR.
export FOLDER=$(yc config get folder-id) yc container registry create \ --folder-id $FOLDER \ --name cam-reg \ --labels prod=cr \ --async
Посмотреть информацию о реестре:
yc container registry list yc container registry get cam-reg yc container registry list-access-bindings cam-reg yc container registry list-ip-permissions cam-reg
export REGISTRY=$(yc container registry get cam-reg --format=json | jq -r ".id")
Аутентификация с помощью Docker Credential helper.
yc container registry configure-docker
Создадим Dockerfile и отправим его в реджистри.
mkdir -p ~/docker/nginx && cd ~/docker/nginx vi nginx.dockerfile
FROM nginx:latest LABEL maintainer="cameda4@yandex.ru" RUN apt update && apt -y install htop mc dstat COPY index.html /usr/share/nginx/html/index.html
docker build . -f nginx.dockerfile -t cr.yandex/$REGISTRY/nginx:a1
docker push cr.yandex/${REGISTRY}/nginx:a1yc container image list +----------------------+---------------------+-----------------------------------+--------+-----------------+ | ID | CREATED | NAME | TAGS | COMPRESSED SIZE | +----------------------+---------------------+-----------------------------------+--------+-----------------+ | crpj4725oa2pqefrk69q | 2022-11-30 16:29:00 | crpe6fbthgrqrd44cbio/ubuntu | hello | 29.0 MB | | crpusp769srnq5su3lo1 | 2021-12-25 10:22:37 | crpo4csb4geb92pb56d9/ubuntu-nginx | latest | 72.4 MB | +----------------------+---------------------+-----------------------------------+--------+-----------------+
Подключим имидж в кластере k8s:
kubectl get po
kubectl run --attach cam-test --image cr.yandex/${REGISTRY}/nginx:a1
kubectl get poЕсли имидж не нужен, то его всегда можно удалить:
yc container image delete crpusp769srnq5su3lo1 yc container image delete crpj4725oa2pqefrk69q
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: cam1-nginx
spec:
containers:
- image: cr.yandex/crpe6fbthgrqrd44cbio/nginx:a2
name: nginx
resources:
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 300m
memory: 150Mi
restartPolicy: OnFailure
EOFkubectl exec --stdin --tty cam-httpd -- /bin/bash
Также, можно создать Deployment с уже подготовленным имиджем.
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: cameda-nginx
labels:
app: nginx-prod
environment: prod
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: cr.yandex/crpe6fbthgrqrd44cbio/nginx:a2
ports:
- name: http
containerPort: 80
resources:
requests:
cpu: 300m
memory: 300Mi
limits:
cpu: 800m
memory: 800Mi
restartPolicy: Always
EOFDecember 11, 2022, 10:48
0 views
0 reposts