Ярлыки

четверг, 18 июня 2020 г.

Kubernetes tricks. How to get shell into a Kubernetes Node?


Question


I don't have SSH access to Kubernnetes nodes. How I can get into?

Answer


Get nodes names

kubectl get nodes -o wide
NAME                                 STATUS   ROLES   AGE   VERSION    INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
aks-agentpool1-81885468-vmss000000   Ready    agent   37d   v1.15.10   172.16.1.152   <none>        Ubuntu 16.04.6 LTS   4.15.0-1077-azure   docker://3.0.7
aks-agentpool1-81885468-vmss000001   Ready    agent   37d   v1.15.10   172.16.1.183   <none>        Ubuntu 16.04.6 LTS   4.15.0-1075-azure   docker://3.0.7
aks-agentpool1-81885468-vmss00000r   Ready    agent   16d   v1.15.10   172.16.0.206   <none>        Ubuntu 16.04.6 LTS   4.15.0-1075-azure   docker://3.0.7

Create YAML file

Update nodeName to name of the node you want access

helper.yaml


Run pod

kubectl apply -f .\helper.yaml

Attach to the pod

kubectl attach helper -i

Delete pod after you finish

kubectl delete pod/helper

пятница, 21 сентября 2018 г.

VSTS (Azure DevOps) tricks. Как посмотреть мои комиты за месяц?


Вопрос


Есть способ в VSTS сделать query и вытащить мои комиты за месяц?

Ответ


В VSTS (Azure DevOps) API есть поддержка работы с Git.
В PowerShell это можно сделать так.
Результат будет выглядеть так.


понедельник, 7 мая 2018 г.

Отправка Email из Azure Functions: secure way


Azure Functions - очень удобный инструмент для автоматизации каких-либо задач. Как-только автоматизация настроена - сразу возникает вопрос: как получать уведомления о результатах? Самое логичное решение - использовать электронную почту для отправки оповещений.
Как делать это безопасно и бесплатно расскажу ниже.

Подсказка: данный мануал можно использовать не только для отправки почты, но и впринципе для безопасной работы с любыми секретами/сертификатами/ключами.

Постановка задачи


Пускай у нас уже есть:

  • Function App с именем "test-azurefunctions-notifications"
  • Учётная запись от почтового сервера (пускай будет Office 365)

Сделаем так, чтобы мы могли:

  • Отправлять уведомления из Function App
  • Не хардкодить учётку в коде Function App

Все настройки можно выполнить при помощи Azure Portal.

Настройка Function App

Открываем: Function App -> Platform features -> NETWORKING -> Managed service identity


Включаем "Register with Azure Active Directory"


Это позволить приложению запрашивать access token для получения доступа к другим ресурсам Azure (в нашем случае Key Vault). Подробнее тут.

Настройка Azure Key Vault

Создаём Key Vault по инструкции. Добавляем логин и пароль от почтового аккаунта.

Key vault -> Secrets -> Generate/Import



Разрешаем нашему Function App запрашивать эти логин и пароль. Для этого идём в Key vault -> Access policies -> Add new  и выбираем:
  • Secret permissions: Get, List
  • Select principal: test-azurefunctions-notifications


Отправка уведомлений

Проверим, что мы можем использовать сохранённые учётные данные.

Приведу вариант реализации на PowerShell. Примеры для других языков можно посмотреть в документации Microsoft.



Результат будет выглядеть примерно так:



Код на PowerShell.

понедельник, 10 апреля 2017 г.

Миграция репозиториев из GitLab в VSTS

В VSTS есть возможность импортировать Git репозиторий прямо из веб-интерфейса


Однако, если не хочется делать это вручную - можно воспользоваться моим скриптом :)
https://github.com/DeV1L/gitlab-vsts-importer

Написан под задачу миграции из GitLab, но при необходимости, легко переделать под GitHub.
Инструкция в описании.

четверг, 19 января 2017 г.

Запуск службы от имени Managed Service Accounts (MSA)

Для запуска службы от имени MSA необходимо:

1) Создать MSA (объект AD) в соответствующем домене
Пример, аккаунт “elk” в домене “rackspace” для сервера “elastic”.


Можно удостовериться в наличии объекта при помощи оснастке “Users and Computers




2) Зарегистрировать аккаунт на соответствующем сервере

3) Настроить запуск служб от имени созданного аккаунта



4) Убедиться, что у данного аккаунта есть права на все необходимые файлы, каталоги и т.д.

воскресенье, 11 декабря 2016 г.

Мониторинг WordPress при помощи Application Insights

Устанавливаем в WordPress плагин Application Insights и активируем его.



В Azire Portal cоздаём экземпляр Application Insights и в разделе "Properties" копируем "INSTRUMENTATION KEY".


Далее идем в WordPress в раздел "Settings" -> "Application Insights" добавляем наш Instrumentation Key.


Сохраняем изменения и проверяем появление скрипта на страницах сайта.



Всё готово, через некоторое время данные начнут поступать в Application Insights и станут доступны на Azure Portal.




пятница, 9 декабря 2016 г.

VSTS tricks. Как изменить 100500 Build Definitions за один раз

Вопрос


Допустим Вы хотите изменить какой-то общий параметр сразу во всех Build Definitions. Например, путь для выгрузки артефактов.


Как это сделать? Ни экспорта/импорта, ни PowerShell модулей в 2016 году для VSTS не существует. Но зато есть REST API.

Ответ


И так, чтобы получить доступ к API необходимо сгенерировать Personal access token.
Переходим в VSTS в раздел Account -> Security -> Personal access tokens -> Add


Задаём название, срок действия, нажимаем "Create Token".


Теперь приступаем к скрипту на PowerShel.
Сначала зададим основные параметры

$PAT - Только что сгенерированный токен
$Instance, $Project URL Вашего VSTS и название проекта, подробнее здесь.
$Version Актуальная версия API

Далее сформируем HTTP Get запрос для получения списка ID всех Build Definitions.

В ответ мы получим JSON с которым довольно удобно работать в PowerShell.
Так можно получить все ID.

$BuildDefinitionsIDs = $BuildDefinitionsList.value.id

Далее сделаем цикл, который будет проходить по всем  Build Definitions, выгружать описание в JSON и заменять необходимые параметры.
Тут логично ограничиться работой с JSON, но в моём случае старый адрес \\KR-VSOBUILD01 присутствует в самых разных шагах билда. Поэтому мне проще сохранить его описание в файл, произвести замену при помощи -Replace и потом прочитать из файла.


В выводе скрипта - результат для каждой Build Definitions


Скрипт целиком