пятница, 19 июля 2019 г.

Continious Deployment через pod с kubectl

В данный момент играюсь с GitLab, Kubernetes и CI/CD.

Легенда:
Kubernetes 1.14.3
kubectl pod 1.14.3


Для того чтобы делать CD, нашел специально собранный для этого образ.

Для Continious Deployment в GitLab понадобится добавить следующие переменные в Settings > Variables.




1) CERTIFICATE_AUTHORITY_DATA
2) CI_REGISTRY_PASSWORD
3) CI_REGISTRY_USER
4) SERVER
5) USER_TOKEN




1) Значения для переменной берем из /root/.kube/config




2 и 3) ваш репозитории из Docker Hub.

4) Значение SERVER это IP вашего Kubernetes сервера: https//YOURIP:6443/

5) Для этого шага понадобится создать учетку с правами cluster-admin и получить его токен: kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')

eyJhbGci.....





2) Стадия CD у меня выглядит так:

# This file is a template, and might need editing before it works on your project.
stages:
    - build
    - deploy


build-master:
  # Official docker image.
  image: docker:latest
  stage: build
  services:
    - docker:dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
  script:
    - docker build --pull -t "$CI_REGISTRY_USER"/test-pipeline:v1.0 .
    - docker push "$CI_REGISTRY_USER"/test-pipeline
  only:
    - master

deploy:
  stage: deploy
  image: dtzar/helm-kubectl:2.14.1
  script:
  script:
    - kubectl config set-cluster k8s --server="${SERVER}"
    - kubectl config set clusters.k8s.certificate-authority-data ${CERTIFICATE_AUTHORITY_DATA}
    - kubectl config set-credentials gitlab-admin --token="${USER_TOKEN}"
    - kubectl config set-context default --cluster=k8s --user=gitlab-admin
    - kubectl config use-context default
    - curl -k https://gitlab.com/yourrepository/test-pipeline/raw/master/nginx.yaml >> /config/app.yaml
    - sed -i "s/<VERSION>/${CI_COMMIT_SHORT_SHA}/g" $PWD/app.yaml
    - kubectl apply -f $PWD/app.yaml --insecure-skip-tls-verify

3) После пуша вашего проекта должна начаться в pipeline стадия билда и деплоя.

git init 
git add . 
git commit -m "my deployment" 
git remote add origin https://gitlab.com/myrepository
git push origin master





Комментариев нет:

Отправить комментарий