Pull to refresh

Comments 6

Кажется, они изобрели заново свой же Vagrant, только теперь для контейнерной инфраструктуры.
На первый взгляд похоже на пайплайны, которые есть, например, в том же GitLab. Только вот я не очень себе представляю, что может побудить разработчиков перенести сборку и выкладку из уже существующего инструмента, который встроен в тот же GitLab, куда-то в отдельное место.
Это для таких как мы, кто себя добровльно почти намертво привязал к другим продуктам «Хашишкорпа» некоторое время назад.
hcl, всё та же боль с багами, которые могут не фиксить по несколько лет или до тех пор пока не «подгорит» и не пошлётся пулл-реквест, узнаваемый Го внутри, известная структура документации, всё тот же круг знакомых лиц, кто этим добром пользуется и успеет быстрее вас наступить на очередные грабли и рассказать об этом.
«Всё просто и знакомо. Милый дом.»

</почти-сарказм>
Напомнило язык программирования Ballerina. Две команды (сборка и деплой), и приложение уже запущено в кластере (в примере ниже — в Kubernetes):
ballerina build kubernetes_deployment.bal && kubectl apply -f ./kubernetes/


kubernetes_deployment.bal:
import ballerina/config;
import ballerina/http;
import ballerina/log;
import ballerina/kubernetes;
@kubernetes:Service {
    serviceType: "NodePort"
}
Service type is NodePort.
@kubernetes:Ingress {
    hostname: "abc.com"
}
listener http:Listener helloWorldEP = new(9090, config = {
    secureSocket: {
        keyStore: {
            path: "./security/ballerinaKeystore.p12",
            password: "ballerina"
        },
        trustStore: {
            path: "./security/ballerinaTruststore.p12",
            password: "ballerina"
        }
    }
});
@kubernetes:ConfigMap {
    conf: "./ballerina.conf"
}
@kubernetes:Deployment {
    livenessProbe: true,
    image: "kubernetes:v.1.0"
}
@http:ServiceConfig {
    basePath: "/helloWorld"
}
service helloWorld on helloWorldEP {
    @http:ResourceConfig {
        methods: ["GET"],
        path: "/config/{user}"
    }
    resource function getConfig(http:Caller outboundEP, http:Request request, string user) {
        string userId = getConfigValue(user, "userid");
        string groups = getConfigValue(user, "groups");
        json payload = {
            userId: userId,
            groups: groups
        };
        var responseResult = outboundEP->respond(payload);
        if (responseResult is error) {
            error err = responseResult;
            log:printError("Error sending response", err);
        }
    }
}
function getConfigValue(string instanceId, string property) returns (string) {
    string key = <@untainted string> (instanceId + "." + property);
    return config:getAsString(key, "Invalid User");
}


ballerina.conf (просто для демонстрации чтения конфига):
[john]
userid="john@ballerina.com"
groups="apim,esb"
[jane]
userid="jane3@ballerina.com"
groups="esb"

Прочитал


The "exec" plugin is meant to be an escape hatch from Waypoint. In working this way, you will lose many Waypoint benefits. For example, "waypoint destroy" functionality will not work with deploys created with the exec plugin.

увидел, что какого-нибудь ssh/shell плагина нет, и продолжил поиски хорошей базы для CI/CD где-то ещё.

бессерверность

Вот не пойму, зачем serverless переводить в лоб? зачем вообще переводить такого рода термины? Вы бы еще active directory перевели как активный каталог)
Sign up to leave a comment.