Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
devops:skaffold [2021/02/18 18:48] – [Настройка деплоя во внешний кластер] admin | devops:skaffold [2021/02/18 21:19] – [Настройка деплоя во внешний кластер] admin | ||
---|---|---|---|
Line 175: | Line 175: | ||
namespace: vrm | namespace: vrm | ||
rules: | rules: | ||
- | - apiGroups: ["", " | + | - apiGroups: ["*"] |
resources: [" | resources: [" | ||
verbs: [" | verbs: [" | ||
Line 195: | Line 195: | ||
</ | </ | ||
Дальше получаем имя токена: | Дальше получаем имя токена: | ||
- | TOKEN_NAME=`kubectl get secret -n kube-system -o name | grep vrm-ns-admin-token` | + | |
и его содержимое: | и его содержимое: | ||
- | TOKEN=`kubectl get $TOKEN_NAME -n kube-system -o " | + | |
+ | а также корневой сертификат кластера: | ||
+ | TOKEN_CA=`kubectl get $TOKEN_NAME -n kube-system -o " | ||
+ | и **URL** для **control plane**: | ||
+ | CONTROL_PLANE=`kubectl cluster-info | grep ' | ||
+ | И, наконец, | ||
+ | < | ||
+ | apiVersion: v1 | ||
+ | kind: Config | ||
+ | preferences: | ||
+ | # Define the cluster | ||
+ | clusters: | ||
+ | - cluster: | ||
+ | certificate-authority-data: | ||
+ | server: $CONTROL_PLANE | ||
+ | name: cluster | ||
+ | # Define the user | ||
+ | users: | ||
+ | - name: vrm-ns-admin | ||
+ | user: | ||
+ | as-user-extra: | ||
+ | client-key-data: | ||
+ | token: $TOKEN | ||
+ | |||
+ | # Define the context: linking a user to a cluster | ||
+ | contexts: | ||
+ | - context: | ||
+ | cluster: cluster | ||
+ | namespace: vrm | ||
+ | user: vrm-ns-admin | ||
+ | name: vrm | ||
+ | |||
+ | # Define current context | ||
+ | current-context: | ||
+ | EOF</ | ||
+ | Проверяем, | ||
+ | KUBECONFIG=./ | ||
+ | Теперь - добавляем содержимое этого файла в свойтсвах проекта в переменную типа **File**. В итоге -содержимое файла будет доставлено в контейнер **skaffold** | ||
+ | А gitlab-ci.yml станет такой: | ||
+ | < | ||
+ | # - name: docker.rdleas.ru/ | ||
+ | # Последнюю версию dind (20+) не удается использовать из-за ошибки: | ||
+ | # Нужно обновлять container.d на хостах | ||
+ | # В остальном - всё уже готово. | ||
+ | - name: docker.rdleas.ru/ | ||
+ | command: | ||
+ | - /bin/sh | ||
+ | - -c | ||
+ | - | | ||
+ | openssl s_client -showcerts -connect docker.rdleas.ru: | ||
+ | update-ca-certificates | ||
+ | unset DOCKER_TLS_CERTDIR | ||
+ | dockerd-entrypoint.sh | ||
+ | |||
+ | stages: | ||
+ | - build | ||
+ | |||
+ | variables: | ||
+ | DOCKER_DRIVER: | ||
+ | DOCKER_TLS_CERTDIR: | ||
+ | DOCKER_HOST: | ||
+ | |||
+ | build: | ||
+ | image: | ||
+ | name: docker.rdleas.ru/ | ||
+ | stage: build | ||
+ | before_script: | ||
+ | - docker login -u `echo $DOCKER_REGISTRY_LOGIN` -p `echo $DOCKER_REGISTRY_PASS` `echo $DOCKER_REGISTRY_URL` | ||
+ | # | ||
+ | script: | ||
+ | - | | ||
+ | openssl s_client -showcerts -connect ${DOCKER_REGISTRY_URL}: | ||
+ | update-ca-certificates | ||
+ | env | ||
+ | echo " | ||
+ | timeout 60 bash -c 'until printf "" | ||
+ | case $CI_COMMIT_BRANCH in | ||
+ | DEV) | ||
+ | VALUES=" | ||
+ | ;; | ||
+ | TEST) | ||
+ | VALUES=" | ||
+ | KUBECONFIG=$KUBECONFIG_TEST \ | ||
+ | skaffold run -f skaffold-run.yaml \ | ||
+ | --default-repo ${DOCKER_REGISTRY_URL}/ | ||
+ | ;; | ||
+ | PROD) | ||
+ | KUBECONFIG=$KUBECONFIG_PROD \ | ||
+ | VALUES=" | ||
+ | skaffold run -f skaffold-run.yaml \ | ||
+ | --default-repo ${DOCKER_REGISTRY_URL}/ | ||
+ | ;; | ||
+ | *) | ||
+ | skaffold build -f skaffold-build.yaml | ||
+ | ;; | ||
+ | esac</ |