Приложение A: Часто задаваемые вопросы
A.1 Концепция и определение
A.1.1 Kusion
Fusion Cloud Native on Kubernetes. Kusion — это слово, которое происходит от fusion (что означает «слияние») + kubernetes. Это основанная на облачной инфраструктуре система, которая через определение облачного программируемого уровня доступа предоставляет полный набор решений, включая язык конфигурации, интерфейс модели, инструменты автоматизации и лучшие практики. Она связывает облачную инфраструктуру с бизнес-приложениями, соединяет различные команды, которые определяют и используют инфраструктуру, и объединяет этапы разработки, тестирования, интеграции, публикации и обслуживания в жизненном цикле приложений. Система служит для автоматизации облачных систем и ускоряет внедрение облачных технологий.
Обычно, когда мы говорим о Kusion, мы имеем в виду этот комплексный набор решений. В то же время экосистема инструментов Kusion включает в себя такие инструменты, как kcl (Kusion Configuration Language), KusionCtl (Kusion Kubernetes Client) и KCL IDE. Эти инструменты пронизывают все аспекты системы Kusion и обеспечивают автоматизацию.
A.1.2 KCL (Kusion Configuration Language)
Это язык, разработанный командой облачной инженерии для определения и проверки динамических конфигураций строгих типов. Он фокусируется на конфигурации и стратегическом программировании и предназначен для проектирования облачных конфигурационных систем. Однако, как язык конфигурации, он не ограничивается облачными технологиями. KCL основан на концепциях декларативного и объектно-ориентированного программирования и был значительно оптимизирован и расширен для удовлетворения потребностей облачных конфигураций. Первоначально вдохновлённый языком Python 3, KCL теперь развился в независимый язык, ориентированный на стратегии конфигурации.
A.1.3 kcl (в нижнем регистре) — команда строки
kcl — это инструмент командной строки, который может компилировать код KCL в низкоуровневые данные, такие как YAML или JSON. Обычно KCL пишется заглавными буквами, а kcl используется для обозначения инструмента командной строки.
A.1.4 KCLVM
Virtual Machine to parse and compile KCL. Это проект разработки инструмента командной строки kcl, а также название репозитория кода для инструмента командной строки kcl. KCLVM использует такие языки, как Python и Rust, для смешанной разработки.
A.1.5 KusionCtl
Kusion Kubernetes Client. KusionCtl — это инструмент командной строки, предназначенный для упрощения использования Kubernetes пользователями. Он встроен в поддержку компиляции KCL, поддерживает аутентификацию с помощью функции входа в систему, поддерживает доступ к нескольким кластерам, предоставляет сводку состояния ресурсов и соответствующие белые экраны, отслеживает изменения моделей пользователей и связанных моделей, обеспечивает визуализацию ссылок, сравнение в реальном времени, визуализацию ключевых ресурсов и обнаружение аномалий.
A.1.6 Konfig
Kusion Config. Konfig — это репозиторий кода KCL, в котором организована конфигурация инфраструктуры для различных приложений в области муравьёв. Согласно иерархии команд, репозиторий Konfig делится на две части: «базовая конфигурация кода» и «бизнес-конфигурация кода». Используется стратегия разработки основной ветви и выпуска ветвей.
A.2 Языковой дизайн
A.2.1 Почему в KCL нет поддержки for-циклов?
В KCL не поддерживается использование for-циклов. Вместо этого предоставляются такие функции, как вывод выражений и all/any/map/filter, которые позволяют обрабатывать элементы коллекции. Хотя потребность в for-циклах существует, она не является острой в текущей ситуации, поэтому поддержка for-циклов пока не предоставляется. Тем не менее, можно использовать for-циклы и лямбда-функции для создания эквивалентных for-циклов в KCL.
result = [(lambda x: int, y: int -> int {
# 在其中书写过程式的 for 循环逻辑
z = x + y
x * 2
})(x, y) for x in [1, 2] for y in [1, 2]] # [2, 2, 4, 4]
A.2.2 Неизменность переменных по умолчанию
Переменные в KCL являются неизменяемыми, что означает, что переменные верхнего уровня, начинающиеся с подчёркивания (_), не могут быть изменены после инициализации.
schema Person:
name: str
age: int
a = 1 # a会输出到YAML中,一旦赋值不可修改
_b = 1 # _b变量以下划线开头命名,不会输出到YAML中, 可多次赋值修改
_b = 2
alice = Person {
name = "Alice"
age = 18
}
Существует два типа переменных, которые не могут быть изменены:
a = 1 # 不可变导出变量
_b = 2 # 可变非导出变量
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )