Блог | Паршин Павел
Привет!

В моём блоге собраны технические статьи на различные темы, с которыми я сталкивался во время работы и учёбы.

В Kubernetes есть два распространённых способа предоставления внешнего доступа к сервисам - используя ресурс Ingress или сервисы типа LoadBalancer. В большинстве случаев это наиболее простые и удобные способы, которые покрывают большую часть потребностей конечных пользователей. В отдельных случаях администратору кластера необходимо обеспечить сетевую связность кластера с остальной инфраструктурой проекта, например, для прямого доступа к подам или сервисам типа ClusterIP и NodePort вне кластера.

Kubernetes оставляет выбор реализации сетевой инфраструктуры пользователю, предоставляя множество плагинов CNI. Я буду использовать в этой статье проект Calico. Для других реализаций CNI детали могут отличаться, но сам подход должен быть похожим.

В статье я рассмотрю наиболее часто встречаемые вопросы на собеседованиях Golang разработчика. Эта выборка основана только на личном опыте по результатам моих интервью в компании Авито, Тинькофф, SberCloud, МТС Cloud, NVIDIA, Acronis, Mail.ru Cloud Solutions, VK Pay. Всё действие происходило летом 2021 года.

При написании кода фейкового клиента для unit-тестов столкнулся с такой проблемой, что препроцессор MOC не обрабатывал мой класс, выдавая предупреждение:

Note: No relevant classes found. No output generated.

Данная проблема заинтересовала меня благодаря одному из вопросов на сайте ru.stackoverflow.com. При написании статьи я руководствовался стандартом C++11 и использовал компилятор GCC 6.2.0.

Рассмотрим возможность применения строковых литералов (string literals) в качестве аргументов шаблона при инстанцировании.

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

#include 
#include 

std::string foo() noexcept {
    return "foo_free_function";
}

template
class Base {
    public:
    std::st...