AC CLI Developer Command Reference
Этот справочник содержит описания и примеры команд разработчика AC CLI. Для команд администратора смотрите справочник команд администратора AC CLI.
Выполните ac help, чтобы вывести список всех команд, или ac <command> --help, чтобы получить дополнительные сведения по конкретной команде.
Содержание
ac annotate
Обновить аннотации ресурса
Пример использования
# Обновить pod 'foo' с аннотацией 'description' и значением 'my frontend'
# Если одна и та же аннотация установлена несколько раз, будет применено только последнее значение
ac annotate pods foo description='my frontend'
# Обновить pod, идентифицированный типом и именем в "pod.json"
ac annotate -f pod.json description='my frontend'
# Обновить pod 'foo' с аннотацией 'description' и значением 'my frontend running nginx', перезаписывая существующее значение
ac annotate --overwrite pods foo description='my frontend running nginx'
# Обновить все pod в namespace
ac annotate pods --all description='my frontend running nginx'
# Обновить pod 'foo' только если ресурс не изменился с версии 1
ac annotate pods foo description='my frontend running nginx' --resource-version=1
# Удалить аннотацию с именем 'description' у pod 'foo', если она существует
# Флаг --overwrite не требуется
ac annotate pods foo description-
ac api-resources
Вывести поддерживаемые API ресурсы на сервере
Пример использования
# Вывести поддерживаемые API ресурсы
ac api-resources
# Вывести поддерживаемые API ресурсы с дополнительной информацией
ac api-resources -o wide
# Вывести поддерживаемые API ресурсы, отсортированные по столбцу
ac api-resources --sort-by=name
# Вывести поддерживаемые ресурсы с namespace
ac api-resources --namespaced=true
# Вывести поддерживаемые ресурсы без namespace
ac api-resources --namespaced=false
# Вывести поддерживаемые API ресурсы для конкретной APIGroup
ac api-resources --api-group=rbac.authorization.k8s.io
ac api-versions
Вывести поддерживаемые версии API на сервере в формате "group/version"
Пример использования
# Вывести поддерживаемые версии API
ac api-versions
ac apply
Применить конфигурацию к ресурсу по имени файла или stdin
Пример использования
# Применить конфигурацию из pod.json к pod
ac apply -f ./pod.json
# Применить ресурсы из каталога с kustomization.yaml, например dir/kustomization.yaml
ac apply -k dir/
# Применить JSON, переданный через stdin, к pod
cat pod.json | ac apply -f -
# Применить конфигурацию из всех файлов, заканчивающихся на '.json'
ac apply -f '*.json'
# Примечание: --prune находится в Alpha
# Применить конфигурацию из manifest.yaml, соответствующую метке app=nginx, и удалить все другие ресурсы с этой меткой, отсутствующие в файле
ac apply --prune -f manifest.yaml -l app=nginx
# Применить конфигурацию из manifest.yaml и удалить все другие config maps, отсутствующие в файле
ac apply --prune -f manifest.yaml --all --prune-allowlist=core/v1/ConfigMap
ac apply edit-last-applied
Редактировать последние аннотации last-applied-configuration ресурса/объекта
Пример использования
# Редактировать last-applied-configuration по типу/имени в YAML
ac apply edit-last-applied deployment/nginx
# Редактировать last-applied-configuration по файлу в JSON
ac apply edit-last-applied -f deploy.yaml -o json
ac apply set-last-applied
Установить аннотацию last-applied-configuration на живом объекте в соответствии с содержимым файла
Пример использования
# Установить last-applied-configuration ресурса в соответствии с содержимым файла
ac apply set-last-applied -f deploy.yaml
# Выполнить set-last-applied для каждого файла конфигурации в каталоге
ac apply set-last-applied -f path/
# Установить last-applied-configuration ресурса в соответствии с содержимым файла; создать аннотацию, если она отсутствует
ac apply set-last-applied -f deploy.yaml --create-annotation=true
ac apply view-last-applied
Просмотреть последние аннотации last-applied-configuration ресурса/объекта
Пример использования
# Просмотреть last-applied-configuration по типу/имени в YAML
ac apply view-last-applied deployment/nginx
# Просмотреть last-applied-configuration по файлу в JSON
ac apply view-last-applied -f deploy.yaml -o json
ac attach
Подключиться к запущенному контейнеру
Пример использования
# Получить вывод из запущенного pod mypod; используется аннотация 'ac.kubernetes.io/default-container'
# для выбора контейнера, к которому подключаются, или выбирается первый контейнер в pod
ac attach mypod
# Получить вывод из контейнера ruby-container pod mypod
ac attach mypod -c ruby-container
# Переключиться в режим raw terminal; отправляет stdin в 'bash' в ruby-container pod mypod
# и возвращает stdout/stderr от 'bash' клиенту
ac attach mypod -c ruby-container -i -t
# Получить вывод из первого pod replica set с именем nginx
ac attach rs/nginx
ac auth
Проверить авторизацию
ac auth can-i
Проверить, разрешено ли действие
Пример использования
# Проверить, могу ли создавать pods в любом namespace
ac auth can-i create pods --all-namespaces
# Проверить, могу ли просматривать deployments в текущем namespace
ac auth can-i list deployments.apps
# Проверить, может ли сервисный аккаунт "foo" из namespace "dev" просматривать pods в namespace "prod"
# Для использования глобальной опции "--as" необходимо разрешение на имитацию
ac auth can-i list pods --as=system:serviceaccount:dev:foo -n prod
# Проверить, могу ли я делать всё в текущем namespace ("*" означает все)
ac auth can-i '*' '*'
# Проверить, могу ли получить job с именем "bar" в namespace "foo"
ac auth can-i list jobs.batch/bar -n foo
# Проверить, могу ли читать логи pod
ac auth can-i get pods --subresource=log
# Проверить, могу ли получить доступ к URL /logs/
ac auth can-i get /logs/
# Проверить, могу ли одобрять certificates.k8s.io
ac auth can-i approve certificates.k8s.io
# Вывести все разрешённые действия в namespace "foo"
ac auth can-i --list --namespace=foo
ac auth reconcile
Согласовать правила для объектов RBAC role, role binding, cluster role и cluster role binding
Пример использования
# Согласовать RBAC ресурсы из файла
ac auth reconcile -f my-rbac-rules.yaml
ac auth whoami
Экспериментально: проверить атрибуты субъекта
Пример использования
# Получить атрибуты субъекта
ac auth whoami
# Получить атрибуты субъекта в формате JSON
ac auth whoami -o json
ac autoscale
Автоматически масштабировать deployment, replica set, stateful set или replication controller
Пример использования
# Автоматически масштабировать deployment "foo" с количеством pod от 2 до 10, без указания целевого использования CPU (будет использована политика по умолчанию)
ac autoscale deployment foo --min=2 --max=10
# Автоматически масштабировать replication controller "foo" с количеством pod от 1 до 5, целевое использование CPU 80%
ac autoscale rc foo --max=5 --cpu-percent=80
ac cluster-info
Показать информацию о кластере
Пример использования
# Вывести адрес управляющей плоскости и сервисов кластера
ac cluster-info
ac cluster-info dump
Сбросить релевантную информацию для отладки и диагностики
Пример использования
# Сбросить текущее состояние кластера в stdout
ac cluster-info dump
# Сбросить текущее состояние кластера в /path/to/cluster-state
ac cluster-info dump --output-directory=/path/to/cluster-state
# Сбросить все namespace в stdout
ac cluster-info dump --all-namespaces
# Сбросить набор namespace в /path/to/cluster-state
ac cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state
ac completion
Вывести код автодополнения для указанной оболочки (bash, zsh, fish или powershell)
Пример использования
# Установка автодополнения bash на macOS через homebrew
## Если используется Bash 3.2, включённый в macOS
brew install bash-completion
## или, если Bash 4.1+
brew install bash-completion@2
## Если ac установлен через homebrew, автодополнение начнёт работать сразу
## Если установлен иным способом, возможно, потребуется добавить автодополнение в каталог автодополнений
ac completion bash > $(brew --prefix)/etc/bash_completion.d/ac
# Установка автодополнения bash на Linux
## Если bash-completion не установлен, установите пакет 'bash-completion'
## через менеджер пакетов вашей дистрибуции.
## Загрузить код автодополнения ac для bash в текущую оболочку
source <(ac completion bash)
## Записать код автодополнения bash в файл и подключить его из .bash_profile
ac completion bash > ~/.kube/completion.bash.inc
printf "
# ac shell completion
source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
source $HOME/.bash_profile
# Загрузить код автодополнения ac для zsh[1] в текущую оболочку
source <(ac completion zsh)
# Установить автодополнение ac для zsh[1] для автозагрузки при старте
ac completion zsh > "${fpath[1]}/_ac"
# Загрузить код автодополнения ac для fish[2] в текущую оболочку
ac completion fish | source
# Для загрузки автодополнений в каждой сессии выполните один раз:
ac completion fish > ~/.config/fish/completions/ac.fish
# Загрузить код автодополнения ac для powershell в текущую оболочку
ac completion powershell | Out-String | Invoke-Expression
# Установить автодополнение ac для powershell при старте
## Сохранить код автодополнения в скрипт и выполнить в профиле
ac completion powershell > $HOME\.kube\completion.ps1
Add-Content $PROFILE "$HOME\.kube\completion.ps1"
## Выполнить код автодополнения в профиле
Add-Content $PROFILE "if (Get-Command ac -ErrorAction SilentlyContinue) {
ac completion powershell | Out-String | Invoke-Expression
}"
## Добавить код автодополнения напрямую в скрипт $PROFILE
ac completion powershell >> $PROFILE
ac config
Изменять kubeconfig файлы
ac config current-context
Показать текущий контекст
Пример использования
# Показать текущий контекст
ac config current-context
ac config delete-cluster
Удалить указанный кластер из kubeconfig
Пример использования
# Удалить кластер minikube
ac config delete-cluster minikube
ac config delete-context
Удалить указанный контекст из kubeconfig
Пример использования
# Удалить контекст для кластера minikube
ac config delete-context minikube
ac config delete-user
Удалить указанного пользователя из kubeconfig
Пример использования
# Удалить пользователя minikube
ac config delete-user minikube
ac config get-clusters
Показать кластеры, определённые в kubeconfig
Пример использования
# Вывести список известных ac кластеров
ac config get-clusters
ac config get-contexts
Описать один или несколько контекстов
Пример использования
# Вывести все контексты в вашем kubeconfig файле
ac config get-contexts
# Описать один контекст в вашем kubeconfig файле
ac config get-contexts my-context
ac config get-sessions
Вывести все настроенные сессии ACP платформы
Пример использования
# Вывести все настроенные сессии ACP
ac config get-sessions
ac config get-users
Показать пользователей, определённых в kubeconfig
Пример использования
# Вывести список известных ac пользователей
ac config get-users
ac config rename-context
Переименовать контекст в kubeconfig файле
Пример использования
# Переименовать контекст 'old-name' в 'new-name' в вашем kubeconfig файле
ac config rename-context old-name new-name
ac config set
Установить отдельное значение в kubeconfig файле
Пример использования
# Установить поле server для кластера my-cluster в https://1.2.3.4
ac config set clusters.my-cluster.server https://1.2.3.4
# Установить поле certificate-authority-data для кластера my-cluster
ac config set clusters.my-cluster.certificate-authority-data $(echo "cert_data_here" | base64 -i -)
# Установить поле cluster в контексте my-context в значение my-cluster
ac config set contexts.my-context.cluster my-cluster
# Установить поле client-key-data для пользователя cluster-admin с опцией --set-raw-bytes
ac config set users.cluster-admin.client-key-data cert_data_here --set-raw-bytes=true
ac config set-cluster
Установить запись кластера в kubeconfig
Пример использования
# Установить только поле server для записи кластера e2e без изменения других значений
ac config set-cluster e2e --server=https://1.2.3.4
# Встроить данные сертификата для записи кластера e2e
ac config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
# Отключить проверку сертификата для записи кластера e2e
ac config set-cluster e2e --insecure-skip-tls-verify=true
# Установить пользовательское имя TLS сервера для проверки для записи кластера e2e
ac config set-cluster e2e --tls-server-name=my-cluster-name
# Установить URL прокси для записи кластера e2e
ac config set-cluster e2e --proxy-url=https://1.2.3.4
ac config set-context
Установить запись контекста в kubeconfig
Пример использования
# Установить поле user для записи контекста gce без изменения других значений
ac config set-context gce --user=cluster-admin
ac config set-credentials
Установить запись пользователя в kubeconfig
Пример использования
# Установить только поле "client-key" для "cluster-admin"
# без изменения других значений
ac config set-credentials cluster-admin --client-key=~/.kube/admin.key
# Установить базовую аутентификацию для "cluster-admin"
ac config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif
# Встроить данные клиентского сертификата в запись "cluster-admin"
ac config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true
# Включить провайдера аутентификации Google Compute Platform для "cluster-admin"
ac config set-credentials cluster-admin --auth-provider=gcp
# Включить провайдера аутентификации OpenID Connect для "cluster-admin" с дополнительными аргументами
ac config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-id=foo --auth-provider-arg=client-secret=bar
# Удалить значение "client-secret" для провайдера OpenID Connect для "cluster-admin"
ac config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-secret-
# Включить новый exec плагин аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1
# Включить новый exec плагин аутентификации для "cluster-admin" в интерактивном режиме
ac config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1 --exec-interactive-mode=Never
# Определить новые аргументы exec плагина аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-arg=arg1 --exec-arg=arg2
# Создать или обновить переменные окружения exec плагина аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-env=key1=val1 --exec-env=key2=val2
# Удалить переменные окружения exec плагина аутентификации для "cluster-admin"
ac config set-credentials cluster-admin --exec-env=var-to-remove-
ac config sync
Синхронизировать kubeconfig с состоянием ACP платформы
Пример использования
# Синхронизировать текущую сессию на основе активного контекста
ac config sync
# Синхронизировать конкретную сессию
ac config sync --session prod
# Синхронизировать все сессии
ac config sync --all
ac config unset
Сбросить отдельное значение в kubeconfig файле
Пример использования
# Сбросить current-context
ac config unset current-context
# Сбросить namespace в контексте foo
ac config unset contexts.foo.namespace
ac config use-cluster
Переключиться на конкретный ACP кластер по имени кластера
Пример использования
# Переключиться на существующий контекст для кластера workload-a
ac config use-cluster workload-a
# Создать новый контекст для workload-b с namespace
ac config use-cluster workload-b --namespace my-app
# Переключиться на глобальный кластер
ac config use-cluster global
ac config use-context
Установить current-context в kubeconfig файле
Пример использования
# Использовать контекст для кластера minikube
ac config use-context minikube
ac config use-session
Переключиться на указанную сессию ACP с интеллектуальным выбором контекста
Пример использования
# Переключиться на сессию staging (по умолчанию глобальный кластер)
ac config use-session staging
# Переключиться на сессию production с конкретным кластером
ac config use-session prod --cluster workload-b
# Переключиться на сессию с конкретным кластером и namespace
ac config use-session staging --cluster workload-a --namespace my-app
ac config view
Показать объединённые настройки kubeconfig или указанный kubeconfig файл
Пример использования
# Показать объединённые настройки kubeconfig
ac config view
# Показать объединённые настройки kubeconfig, необработанные данные сертификатов и раскрытые секреты
ac config view --raw
# Получить пароль для пользователя e2e
ac config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
ac cp
Копировать файлы и каталоги в контейнеры и из них
Пример использования
# !!!Важное замечание!!!
# Требуется наличие бинарника 'tar' в вашем контейнере
# Если 'tar' отсутствует, 'ac cp' завершится с ошибкой.
#
# Для продвинутых случаев, таких как символические ссылки, расширение шаблонов или сохранение прав доступа, рассмотрите использование 'ac exec'.
# Копировать локальный файл /tmp/foo в /tmp/bar в удалённом pod в namespace <some-namespace>
tar cf - /tmp/foo | ac exec -i -n <some-namespace> <some-pod> -- tar xf - -C /tmp/bar
# Копировать /tmp/foo из удалённого pod в локальный /tmp/bar
ac exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/bar
# Копировать локальный каталог /tmp/foo_dir в /tmp/bar_dir в удалённом pod в namespace по умолчанию
ac cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
# Копировать локальный файл /tmp/foo в /tmp/bar в удалённом pod в конкретном контейнере
ac cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
# Копировать локальный файл /tmp/foo в /tmp/bar в удалённом pod в namespace <some-namespace>
ac cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
# Копировать /tmp/foo из удалённого pod в локальный /tmp/bar
ac cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
ac create
Создать ресурс из файла или stdin
Пример использования
# Создать pod, используя данные из pod.json
ac create -f ./pod.json
# Создать pod на основе JSON, переданного через stdin
cat pod.json | ac create -f -
# Отредактировать данные в registry.yaml в JSON, затем создать ресурс с использованием отредактированных данных
ac create -f registry.yaml --edit -o json
ac create clusterrole
Создать cluster role
Пример использования
# Создать cluster role с именем "pod-reader", разрешающую пользователю выполнять "get", "watch" и "list" для pods
ac create clusterrole pod-reader --verb=get,list,watch --resource=pods
# Создать cluster role с именем "pod-reader" с указанными ResourceName
ac create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
# Создать cluster role с именем "foo" с указанной API Group
ac create clusterrole foo --verb=get,list,watch --resource=rs.apps
# Создать cluster role с именем "foo" с указанным SubResource
ac create clusterrole foo --verb=get,list,watch --resource=pods,pods/status
# Создать cluster role с именем "foo" с указанным NonResourceURL
ac create clusterrole "foo" --verb=get --non-resource-url=/logs/*
# Создать cluster role с именем "monitoring" с указанным AggregationRule
ac create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"
ac create clusterrolebinding
Создать cluster role binding для конкретной cluster role
Пример использования
# Создать cluster role binding для user1, user2 и group1 с использованием cluster role cluster-admin
ac create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1
ac create configmap
Создать config map из локального файла, каталога или литерального значения
Пример использования
# Создать новый config map с именем my-config на основе папки bar
ac create configmap my-config --from-file=path/to/bar
# Создать новый config map с именем my-config с указанными ключами вместо имён файлов на диске
ac create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
# Создать новый config map с именем my-config с key1=config1 и key2=config2
ac create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
# Создать новый config map с именем my-config из ключей и значений файла
ac create configmap my-config --from-file=path/to/bar
# Создать новый config map с именем my-config из env файла
ac create configmap my-config --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
ac create cronjob
Создать cron job с указанным именем
Пример использования
# Создать cron job
ac create cronjob my-job --image=busybox --schedule="*/1 * * * *"
# Создать cron job с командой
ac create cronjob my-job --image=busybox --schedule="*/1 * * * *" -- date
ac create deployment
Создать deployment с указанным именем
Пример использования
# Создать deployment с именем my-dep, использующий образ busybox
ac create deployment my-dep --image=busybox
# Создать deployment с командой
ac create deployment my-dep --image=busybox -- date
# Создать deployment с именем my-dep, использующий образ nginx с 3 репликами
ac create deployment my-dep --image=nginx --replicas=3
# Создать deployment с именем my-dep, использующий образ busybox и открывающий порт 5701
ac create deployment my-dep --image=busybox --port=5701
# Создать deployment с именем my-dep, использующий несколько контейнеров
ac create deployment my-dep --image=busybox:latest --image=ubuntu:latest --image=nginx
ac create ingress
Создать ingress с указанным именем
Пример использования
# Создать одиночный ingress с именем 'simple', который направляет запросы foo.com/bar к svc
# svc1:8080 с TLS секретом "my-cert"
ac create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"
# Создать ingress, перехватывающий все запросы по "/path", направляющий на сервис svc:port и с классом Ingress "otheringress"
ac create ingress catch-all --class=otheringress --rule="/path=svc:port"
# Создать ingress с двумя аннотациями: ingress.annotation1 и ingress.annotations2
ac create ingress annotated --class=default --rule="foo.com/bar=svc:port" \
--annotation ingress.annotation1=foo \
--annotation ingress.annotation2=bla
# Создать ingress с одним хостом и несколькими путями
ac create ingress multipath --class=default \
--rule="foo.com/=svc:port" \
--rule="foo.com/admin/=svcadmin:portadmin"
# Создать ingress с несколькими хостами и pathType как Prefix
ac create ingress ingress1 --class=default \
--rule="foo.com/path*=svc:8080" \
--rule="bar.com/admin*=svc2:http"
# Создать ingress с включённым TLS, используя сертификат ingress по умолчанию и разные типы путей
ac create ingress ingtls --class=default \
--rule="foo.com/=svc:https,tls" \
--rule="foo.com/path/subpath*=othersvc:8080"
# Создать ingress с включённым TLS, используя конкретный секрет и pathType как Prefix
ac create ingress ingsecret --class=default \
--rule="foo.com/*=svc:8080,tls=secret1"
# Создать ingress с backend по умолчанию
ac create ingress ingdefault --class=default \
--default-backend=defaultsvc:http \
--rule="foo.com/*=svc:8080,tls=secret1"
ac create job
Создать job с указанным именем
Пример использования
# Создать job
ac create job my-job --image=busybox
# Создать job с командой
ac create job my-job --image=busybox -- date
# Создать job из cron job с именем "a-cronjob"
ac create job test-job --from=cronjob/a-cronjob
ac create namespace
Создать namespace с указанным именем
Пример использования
# Создать новый namespace с именем my-namespace
ac create namespace my-namespace
ac create poddisruptionbudget
Создать pod disruption budget с указанным именем
Пример использования
# Создать pod disruption budget с именем my-pdb, который выбирает все pod с меткой app=rails
# и требует, чтобы хотя бы один из них был доступен в любой момент времени
ac create poddisruptionbudget my-pdb --selector=app=rails --min-available=1
# Создать pod disruption budget с именем my-pdb, который выбирает все pod с меткой app=nginx
# и требует, чтобы было доступно не менее половины выбранных pod в любой момент времени
ac create pdb my-pdb --selector=app=nginx --min-available=50%
ac create priorityclass
Создать priority class с указанным именем
Пример использования
# Создать priority class с именем high-priority
ac create priorityclass high-priority --value=1000 --description="high priority"
# Создать priority class с именем default-priority, считающийся глобальным приоритетом по умолчанию
ac create priorityclass default-priority --value=1000 --global-default=true --description="default priority"
# Создать priority class с именем high-priority, который не может вытеснять pod с более низким приоритетом
ac create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"
ac create quota
Создать quota с указанным именем
Пример использования
# Создать новый resource quota с именем my-quota
ac create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10
# Создать новый resource quota с именем best-effort
ac create quota best-effort --hard=pods=100 --scopes=BestEffort
ac create role
Создать роль с одним правилом
Пример использования
# Создать роль с именем "pod-reader", разрешающую выполнять "get", "watch" и "list" для pods
ac create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
# Создать роль с именем "pod-reader" с указанными ResourceName
ac create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
# Создать роль с именем "foo" с указанной API Group
ac create role foo --verb=get,list,watch --resource=rs.apps
# Создать роль с именем "foo" с указанным SubResource
ac create role foo --verb=get,list,watch --resource=pods,pods/status
ac create rolebinding
Создать role binding для конкретной роли или cluster role
Пример использования
# Создать role binding для user1, user2 и group1 с использованием cluster role admin
ac create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1
# Создать role binding для service account monitoring:sa-dev с использованием роли admin
ac create rolebinding admin-binding --role=admin --serviceaccount=monitoring:sa-dev
ac create secret
Создать секрет с использованием указанной подкоманды
ac create secret docker-registry
Создать секрет для использования с Docker registry
Пример использования
# Если у вас ещё нет файла .dockercfg, создайте секрет dockercfg напрямую
ac create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
# Создать новый секрет с именем my-secret из ~/.docker/config.json
ac create secret docker-registry my-secret --from-file=path/to/.docker/config.json
ac create secret generic
Создать секрет из локального файла, каталога или литерального значения
Пример использования
# Создать новый секрет с именем my-secret с ключами для каждого файла в папке bar
ac create secret generic my-secret --from-file=path/to/bar
# Создать новый секрет с именем my-secret с указанными ключами вместо имён на диске
ac create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-file=ssh-publickey=path/to/id_rsa.pub
# Создать новый секрет с именем my-secret с key1=supersecret и key2=topsecret
ac create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret
# Создать новый секрет с именем my-secret, используя комбинацию файла и литерала
ac create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-literal=passphrase=topsecret
# Создать новый секрет с именем my-secret из env файлов
ac create secret generic my-secret --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
ac create secret tls
Создать TLS секрет
Пример использования
# Создать новый TLS секрет с именем tls-secret с указанной парой ключей
ac create secret tls tls-secret --cert=path/to/tls.crt --key=path/to/tls.key
ac create service
Создать сервис с использованием указанной подкоманды
ac create service clusterip
Создать сервис типа ClusterIP
Пример использования
# Создать новый сервис ClusterIP с именем my-cs
ac create service clusterip my-cs --tcp=5678:8080
# Создать новый сервис ClusterIP с именем my-cs (в режиме headless)
ac create service clusterip my-cs --clusterip="None"
ac create service externalname
Создать сервис типа ExternalName
Пример использования
# Создать новый сервис ExternalName с именем my-ns
ac create service externalname my-ns --external-name bar.com
ac create service loadbalancer
Создать сервис типа LoadBalancer
Пример использования
# Создать новый сервис LoadBalancer с именем my-lbs
ac create service loadbalancer my-lbs --tcp=5678:8080
ac create service nodeport
Создать сервис типа NodePort
Пример использования
# Создать новый сервис NodePort с именем my-ns
ac create service nodeport my-ns --tcp=5678:8080
ac create serviceaccount
Создать service account с указанным именем
Пример использования
# Создать новый service account с именем my-service-account
ac create serviceaccount my-service-account
ac create token
Запросить токен service account
Пример использования
# Запросить токен для аутентификации в kube-apiserver как service account "myapp" в текущем namespace
ac create token myapp
# Запросить токен для service account в пользовательском namespace
ac create token myapp --namespace myns
# Запросить токен с пользовательским временем жизни
ac create token myapp --duration 10m
# Запросить токен с пользовательской аудиторией
ac create token myapp --audience https://example.com
# Запросить токен, привязанный к экземпляру объекта Secret
ac create token myapp --bound-object-kind Secret --bound-object-name mysecret
# Запросить токен, привязанный к экземпляру объекта Secret с конкретным UID
ac create token myapp --bound-object-kind Secret --bound-object-name mysecret --bound-object-uid 0d4691ed-659b-4935-a832-355f77ee47cc
ac delete
Удалить ресурсы по именам файлов, stdin, ресурсам и именам или по ресурсам и селектору меток
Пример использования
# Удалить pod, используя тип и имя, указанные в pod.json
ac delete -f ./pod.json
# Удалить ресурсы из каталога с kustomization.yaml, например dir/kustomization.yaml
ac delete -k dir
# Удалить ресурсы из всех файлов, заканчивающихся на '.json'
ac delete -f '*.json'
# Удалить pod на основе типа и имени из JSON, переданного через stdin
cat pod.json | ac delete -f -
# Удалить pods и services с одинаковыми именами "baz" и "foo"
ac delete pod,service baz foo
# Удалить pods и services с меткой name=myLabel
ac delete pods,services -l name=myLabel
# Удалить pod с минимальной задержкой
ac delete pod foo --now
# Принудительно удалить pod на мёртвом узле
ac delete pod foo --force
# Удалить все pods
ac delete pods --all
# Удалить все pods только после подтверждения пользователя
ac delete pods --all --interactive
ac describe
Показать детали конкретного ресурса или группы ресурсов
Пример использования
# Описать node
ac describe nodes kubernetes-node-emt8.c.myproject.internal
# Описать pod
ac describe pods/nginx
# Описать pod, идентифицированный типом и именем в "pod.json"
ac describe -f pod.json
# Описать все pods
ac describe pods
# Описать pods с меткой name=myLabel
ac describe pods -l name=myLabel
# Описать все pods, управляемые replication controller с именем 'frontend'
# (pods, созданные rc, получают имя rc в качестве префикса)
ac describe pods frontend
ac diff
Показать различия между живой версией и версией, которая будет применена
Пример использования
# Показать различия для ресурсов из pod.json
ac diff -f pod.json
# Показать различия для файла, прочитанного из stdin
cat service.yaml | ac diff -f -
ac edit
Редактировать ресурс на сервере
Пример использования
# Редактировать сервис с именем 'registry'
ac edit svc/registry
# Использовать альтернативный редактор
KUBE_EDITOR="nano" ac edit svc/registry
# Редактировать job 'myjob' в JSON с использованием API версии v1
ac edit job.v1.batch/myjob -o json
# Редактировать deployment 'mydeployment' в YAML и сохранить изменённую конфигурацию в аннотации
ac edit deployment/mydeployment -o yaml --save-config
# Редактировать подресурс 'status' для deployment 'mydeployment'
ac edit deployment mydeployment --subresource='status'
ac events
Список событий
Пример использования
# Список последних событий в namespace по умолчанию
ac events
# Список последних событий во всех namespace
ac events --all-namespaces
# Список последних событий для указанного pod, затем ожидать новые события и выводить их по мере поступления
ac events --for pod/web-pod-13je7 --watch
# Список последних событий в формате YAML
ac events -oyaml
# Список последних событий только типов 'Warning' или 'Normal'
ac events --types=Warning,Normal
ac exec
Выполнить команду в контейнере
Пример использования
# Получить вывод команды 'date' из pod mypod, по умолчанию из первого контейнера
ac exec mypod -- date
# Получить вывод команды 'date' из контейнера ruby-container pod mypod
ac exec mypod -c ruby-container -- date
# Переключиться в raw terminal режим; отправляет stdin в 'bash' в ruby-container pod mypod
# и возвращает stdout/stderr от 'bash' клиенту
ac exec mypod -c ruby-container -i -t -- bash -il
# Вывести содержимое /usr из первого контейнера pod mypod, отсортированное по времени изменения
# Если команда содержит флаги, совпадающие с флагами ac exec (например, -i),
# используйте двойной дефис (--) для разделения флагов команды и ac exec
# Не заключайте команду и её флаги в кавычки, если обычно не делаете этого (например, ls -t /usr, а не "ls -t /usr")
ac exec mypod -i -t -- ls -t /usr
# Получить вывод команды 'date' из первого pod deployment mydeployment, по умолчанию из первого контейнера
ac exec deploy/mydeployment -- date
# Получить вывод команды 'date' из первого pod сервиса myservice, по умолчанию из первого контейнера
ac exec svc/myservice -- date
ac explain
Получить документацию по ресурсу
Пример использования
# Получить документацию по ресурсу и его полям
ac explain pods
# Получить все поля ресурса
ac explain pods --recursive
# Получить объяснение для deployment в поддерживаемых версиях api
ac explain deployments --api-version=apps/v1
# Получить документацию по конкретному полю ресурса
ac explain pods.spec.containers
# Получить документацию по ресурсам в другом формате
ac explain deployment --output=plaintext-openapiv2
ac expose
Создать сервис Kubernetes для replication controller, service, deployment или pod
Пример использования
# Создать сервис для replicated nginx, который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose rc nginx --port=80 --target-port=8000
# Создать сервис для replication controller, идентифицированного типом и именем в "nginx-controller.yaml", который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose -f nginx-controller.yaml --port=80 --target-port=8000
# Создать сервис для pod valid-pod, который слушает порт 444 с именем "frontend"
ac expose pod valid-pod --port=444 --name=frontend
# Создать второй сервис на основе вышеуказанного, открывающий порт контейнера 8443 как порт 443 с именем "nginx-https"
ac expose service nginx --port=443 --target-port=8443 --name=nginx-https
# Создать сервис для replicated streaming приложения на порту 4100, балансирующий UDP трафик и с именем 'video-stream'
ac expose rc streamer --port=4100 --protocol=UDP --name=video-stream
# Создать сервис для replicated nginx с использованием replica set, который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose rs nginx --port=80 --target-port=8000
# Создать сервис для deployment nginx, который слушает порт 80 и подключается к контейнерам на порту 8000
ac expose deployment nginx --port=80 --target-port=8000
ac get
Показать один или несколько ресурсов
Пример использования
# Вывести все pods в формате ps
ac get pods
# Вывести все pods в формате ps с дополнительной информацией (например, имя node)
ac get pods -o wide
# Вывести один replication controller с указанным NAME в формате ps
ac get replicationcontroller web
# Вывести deployments в формате JSON, в версии "v1" группы API "apps"
ac get deployments.v1.apps -o json
# Вывести один pod в формате JSON
ac get -o json pod web-pod-13je7
# Вывести pod, идентифицированный типом и именем в "pod.yaml" в формате JSON
ac get -f pod.yaml -o json
# Вывести ресурсы из каталога с kustomization.yaml, например dir/kustomization.yaml
ac get -k dir/
# Вывести только значение поля phase указанного pod
ac get -o template pod/web-pod-13je7 --template={{.status.phase}}
# Вывести информацию о ресурсе в пользовательских столбцах
ac get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
# Вывести все replication controllers и services вместе в формате ps
ac get rc,services
# Вывести один или несколько ресурсов по типу и именам
ac get rc/web service/frontend pods/web-pod-13je7
# Вывести подресурс 'status' для одного pod
ac get pod web-pod-13je7 --subresource status
# Вывести все deployments в namespace 'backend'
ac get deployments.apps --namespace backend
# Вывести все pods во всех namespace
ac get pods --all-namespaces
ac kustomize
Построить цель kustomization из каталога или URL
Пример использования
# Построить текущий рабочий каталог
ac kustomize
# Построить из каталога с общей конфигурацией
ac kustomize /home/config/production
# Построить из github
ac kustomize https://github.com/kubernetes-sigs/kustomize.git/examples/helloWorld?ref=v1.0.6
ac label
Обновить метки ресурса
Пример использования
# Обновить pod 'foo' с меткой 'unhealthy' и значением 'true'
ac label pods foo unhealthy=true
# Обновить pod 'foo' с меткой 'status' и значением 'unhealthy', перезаписывая существующее значение
ac label --overwrite pods foo status=unhealthy
# Обновить все pods в namespace
ac label pods --all status=unhealthy
# Обновить pod, идентифицированный типом и именем в "pod.json"
ac label -f pod.json status=unhealthy
# Обновить pod 'foo' только если ресурс не изменился с версии 1
ac label pods foo status=unhealthy --resource-version=1
# Удалить метку с именем 'bar' у pod 'foo', если она существует
# Флаг --overwrite не требуется
ac label pods foo bar-
ac login
Войти в ACP платформу
Пример использования
# Интерактивный вход (запрашивает отсутствующие параметры)
ac login https://example.com --name prod
# Вход со всеми параметрами через флаги
ac login https://example.com --name prod --username=myuser --password=mypassword
# Вход с использованием переменных окружения (для автоматизации)
AC_LOGIN_PLATFORM_URL=https://example.com AC_LOGIN_SESSION=prod \
AC_LOGIN_USERNAME=myuser AC_LOGIN_PASSWORD=mypassword ac login
# Вход с указанием конкретного провайдера идентификации
ac login https://example.com --name prod --idp ldap-test
# Вход с указанием конкретного кластера и namespace
ac login https://example.com --name prod --cluster=my-cluster --namespace=my-namespace
# Вход с использованием пользовательского kubeconfig файла
ac login https://example.com --name prod --kubeconfig=/path/to/kubeconfig
ac logout
Завершить текущую сессию с ACP платформой
Пример использования
# Выйти из текущей сессии ACP платформы
ac logout
# Выйти из конкретной сессии
ac logout --session prod
# Выйти из всех сессий
ac logout --all
ac logs
Вывести логи контейнера в pod
Пример использования
# Получить моментальный снимок логов pod nginx с одним контейнером
ac logs nginx
# Получить моментальный снимок логов pod nginx, добавляя префикс с именем pod и контейнера к каждой строке
ac logs nginx --prefix
# Получить моментальный снимок логов pod nginx, ограничив вывод 500 байтами
ac logs nginx --limit-bytes=500
# Получить моментальный снимок логов pod nginx, ожидая до 20 секунд запуска pod
ac logs nginx --pod-running-timeout=20s
# Получить моментальный снимок логов pod nginx с несколькими контейнерами
ac logs nginx --all-containers=true
# Получить моментальный снимок логов всех pods в deployment nginx
ac logs deployment/nginx --all-pods=true
# Получить моментальный снимок логов всех контейнеров в pods с меткой app=nginx
ac logs -l app=nginx --all-containers=true
# Получить моментальный снимок логов всех pods с меткой app=nginx, ограничив одновременные запросы логов до 10 pods
ac logs -l app=nginx --max-log-requests=10
# Получить моментальный снимок логов предыдущего завершённого контейнера ruby из pod web-1
ac logs -p -c ruby web-1
# Начать потоковую передачу логов pod nginx, продолжая даже при ошибках
ac logs nginx -f --ignore-errors=true
# Начать потоковую передачу логов контейнера ruby в pod web-1
ac logs -f -c ruby web-1
# Начать потоковую передачу логов всех контейнеров в pods с меткой app=nginx
ac logs -f -l app=nginx --all-containers=true
# Показать только последние 20 строк вывода pod nginx
ac logs --tail=20 nginx
# Показать все логи pod nginx за последний час
ac logs --since=1h nginx
# Показать все логи с метками времени pod nginx начиная с 30 августа 2024, 06:00:00 UTC
ac logs nginx --since-time=2024-08-30T06:00:00Z --timestamps=true
# Показать логи kubelet с истёкшим сертификатом
ac logs --insecure-skip-tls-verify-backend nginx
# Получить моментальный снимок логов первого контейнера job с именем hello
ac logs job/hello
# Получить моментальный снимок логов контейнера nginx-1 deployment с именем nginx
ac logs deployment/nginx -c nginx-1
ac namespace
Показать или переключить текущий namespace контекста
Пример использования
# Показать текущий namespace и информацию о контексте
ac namespace
# Переключиться на другой namespace
ac namespace my-namespace
# Переключиться на namespace по умолчанию
ac namespace default
ac patch
Обновить поля ресурса
Пример использования
# Частично обновить node с помощью стратегического merge patch, указав патч в JSON
ac patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
# Частично обновить node с помощью стратегического merge patch, указав патч в YAML
ac patch node k8s-node-1 -p $'spec:\n unschedulable: true'
# Частично обновить node, идентифицированный типом и именем в "node.json" с помощью стратегического merge patch
ac patch -f node.json -p '{"spec":{"unschedulable":true}}'
# Обновить образ контейнера; spec.containers[*].name обязателен, так как это ключ слияния
ac patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'
# Обновить образ контейнера с помощью JSON patch с позиционными массивами
ac patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
# Обновить количество реплик deployment через подресурс 'scale' с помощью merge patch
ac patch deployment nginx-deployment --subresource='scale' --type='merge' -p '{"spec":{"replicas":2}}'
ac plugin
Утилиты для взаимодействия с плагинами
Пример использования
# Вывести список всех доступных плагинов
ac plugin list
# Вывести только имена бинарников доступных плагинов без путей
ac plugin list --name-only
ac plugin list
Вывести все видимые исполняемые плагины в PATH пользователя
Пример использования
# Вывести список всех доступных плагинов
ac plugin list
# Вывести только имена бинарников доступных плагинов без путей
ac plugin list --name-only
ac port-forward
Переадресовать один или несколько локальных портов на pod
Пример использования
# Прослушивать локально порты 5000 и 6000, переадресовывая данные на порты 5000 и 6000 в pod
ac port-forward pod/mypod 5000 6000
# Прослушивать локально порты 5000 и 6000, переадресовывая данные на порты 5000 и 6000 в pod, выбранном deployment
ac port-forward deployment/mydeployment 5000 6000
# Прослушивать локально порт 8443, переадресовывая на targetPort порта сервиса с именем "https" в pod, выбранном сервисом
ac port-forward service/myservice 8443:https
# Прослушивать локально порт 8888, переадресовывая на 5000 в pod
ac port-forward pod/mypod 8888:5000
# Прослушивать локально порт 8888 на всех адресах, переадресовывая на 5000 в pod
ac port-forward --address 0.0.0.0 pod/mypod 8888:5000
# Прослушивать локально порт 8888 на localhost и выбранном IP, переадресовывая на 5000 в pod
ac port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000
# Прослушивать локально случайный порт, переадресовывая на 5000 в pod
ac port-forward pod/mypod :5000
ac process
Обработать шаблон в список ресурсов
Пример использования
# Преобразовать файл template.json в список ресурсов и передать в create
ac process -f template.json | ac apply -f -
# Обработать файл локально без обращения к серверу
ac process -f template.json -o yaml
# Обработать шаблон с передачей пользовательской метки
ac process -f template.json -l name=mytemplate
# Преобразовать сохранённый шаблон в список ресурсов
ac process foo
# Преобразовать сохранённый шаблон в список ресурсов с установкой/переопределением значений параметров
ac process foo -p PARM1=VALUE1 -p PARM2=VALUE2
# Преобразовать шаблон, сохранённый в другом namespace, в список ресурсов
ac process cpaas-system//foo
# Преобразовать template.json в список ресурсов
cat template.json | ac process -f -
ac proxy
Запустить прокси к Kubernetes API серверу
Пример использования
# Прокси для всего Kubernetes API и ничего более
ac proxy --api-prefix=/
# Прокси для части Kubernetes API и некоторых статических файлов
# Можно получить информацию о pods с помощью 'curl localhost:8001/api/v1/pods'
ac proxy --www=/my/files --www-prefix=/static/ --api-prefix=/api/
# Прокси для всего Kubernetes API с другим корнем
# Можно получить информацию о pods с помощью 'curl localhost:8001/custom/api/v1/pods'
ac proxy --api-prefix=/custom/
# Запустить прокси к Kubernetes API серверу на порту 8011, обслуживая статический контент из ./local/www/
ac proxy --port=8011 --www=./local/www/
# Запустить прокси к Kubernetes API серверу на произвольном локальном порту
# Выбранный порт будет выведен в stdout
ac proxy --port=0
# Запустить прокси к Kubernetes API серверу, изменив префикс API на k8s-api
# Это делает, например, pods API доступным по адресу localhost:8001/k8s-api/v1/pods/
ac proxy --api-prefix=/k8s-api
ac replace
Заменить ресурс по имени файла или stdin
Пример использования
# Заменить pod, используя данные из pod.json
ac replace -f ./pod.json
# Заменить pod на основе JSON, переданного через stdin
cat pod.json | ac replace -f -
# Обновить версию образа (тег) pod с одним контейнером на v4
ac get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | ac replace -f -
# Принудительно заменить, удалив и затем создав ресурс заново
ac replace --force -f ./pod.json
ac rollout
Управлять развертыванием ресурса
Пример использования
# Откатиться к предыдущему deployment
ac rollout undo deployment/abc
# Проверить статус rollout daemonset
ac rollout status daemonset/foo
# Перезапустить deployment
ac rollout restart deployment/abc
# Перезапустить deployments с меткой 'app=nginx'
ac rollout restart deployment --selector=app=nginx
ac rollout history
Просмотреть историю rollout
Пример использования
# Просмотреть историю rollout deployment
ac rollout history deployment/abc
# Просмотреть детали ревизии 3 daemonset
ac rollout history daemonset/abc --revision=3
ac rollout pause
Пометить указанный ресурс как приостановленный
Пример использования
# Пометить deployment nginx как приостановленный
# Текущее состояние deployment продолжит работу; новые обновления
# не будут применяться, пока deployment приостановлен
ac rollout pause deployment/nginx
ac rollout restart
Перезапустить ресурс
Пример использования
# Перезапустить все deployments в namespace test-namespace
ac rollout restart deployment -n test-namespace
# Перезапустить deployment
ac rollout restart deployment/nginx
# Перезапустить daemonset
ac rollout restart daemonset/abc
# Перезапустить deployments с меткой app=nginx
ac rollout restart deployment --selector=app=nginx
ac rollout resume
Возобновить приостановленный ресурс
Пример использования
# Возобновить уже приостановленный deployment
ac rollout resume deployment/nginx
ac rollout status
Показать статус rollout
Пример использования
# Отслеживать статус rollout deployment
ac rollout status deployment/nginx
ac rollout undo
Отменить предыдущий rollout
Пример использования
# Откатиться к предыдущему deployment
ac rollout undo deployment/abc
# Откатиться к ревизии 3 daemonset
ac rollout undo daemonset/abc --to-revision=3
# Откатиться к предыдущему deployment с dry-run
ac rollout undo --dry-run=server deployment/abc
ac run
Запустить конкретный образ в кластере
Пример использования
# Запустить pod nginx
ac run nginx --image=nginx
# Запустить pod hazelcast и открыть порт 5701 в контейнере
ac run hazelcast --image=hazelcast/hazelcast --port=5701
# Запустить pod hazelcast и установить переменные окружения "DNS_DOMAIN=cluster" и "POD_NAMESPACE=default" в контейнере
ac run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
# Запустить pod hazelcast и установить метки "app=hazelcast" и "env=prod" в контейнере
ac run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
# Dry run; вывести соответствующие API объекты без создания
ac run nginx --image=nginx --dry-run=client
# Запустить pod nginx с использованием команды по умолчанию, но с пользовательскими аргументами (arg1 .. argN)
ac run nginx --image=nginx -- <arg1> <arg2> ... <argN>
# Запустить pod nginx с другой командой и пользовательскими аргументами
ac run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>
# Запустить pod busybox и держать его на переднем плане, не перезапуская при выходе
ac run -i -t busybox --image=busybox --restart=Never
ac scale
Установить новый размер для deployment, replica set или replication controller
Пример использования
# Масштабировать replica set с именем 'foo' до 3
ac scale --replicas=3 rs/foo
# Масштабировать ресурс, идентифицированный типом и именем в "foo.yaml" до 3
ac scale --replicas=3 -f foo.yaml
# Если текущий размер deployment mysql равен 2, масштабировать mysql до 3
ac scale --current-replicas=2 --replicas=3 deployment/mysql
# Масштабировать несколько replication controllers
ac scale --replicas=5 rc/example1 rc/example2 rc/example3
# Масштабировать stateful set с именем 'web' до 3
ac scale --replicas=3 statefulset/web
ac set
Установить конкретные параметры объектов
ac set env
Обновить переменные окружения в шаблоне pod
Пример использования
# Обновить deployment 'registry' с новой переменной окружения
ac set env deployment/registry STORAGE_DIR=/local
# Вывести список переменных окружения, определённых в deployment 'sample-build'
ac set env deployment/sample-build --list
# Вывести список переменных окружения, определённых во всех pods
ac set env pods --all --list
# Вывести изменённый deployment в YAML, не изменяя объект на сервере
ac set env deployment/sample-build STORAGE_DIR=/data -o yaml
# Обновить все контейнеры во всех replication controllers проекта, установив ENV=prod
ac set env rc --all ENV=prod
# Импортировать переменные окружения из секрета
ac set env --from=secret/mysecret deployment/myapp
# Импортировать переменные окружения из config map с префиксом
ac set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp
# Импортировать конкретные ключи из config map
ac set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp
# Удалить переменную окружения ENV из контейнера 'c1' во всех deployment configs
ac set env deployments --all --containers="c1" ENV-
# Удалить переменную окружения ENV из определения deployment на диске и
# обновить deployment config на сервере
ac set env -f deploy.json ENV-
# Установить часть локальных переменных окружения shell в deployment config на сервере
env | grep RAILS_ | ac set env -e - deployment/registry
ac set image
Обновить образ в шаблоне pod
Пример использования
# Установить образ контейнера nginx в deployment на 'nginx:1.9.1', а образ контейнера busybox на 'busybox'
ac set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
# Обновить образ контейнера nginx во всех deployments и rc на 'nginx:1.9.1'
ac set image deployments,rc nginx=nginx:1.9.1 --all
# Обновить образ всех контейнеров daemonset abc на 'nginx:1.9.1'
ac set image daemonset abc *=nginx:1.9.1
# Вывести результат (в формате yaml) обновления образа контейнера nginx из локального файла без обращения к серверу
ac set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
ac set resources
Обновить запросы/лимиты ресурсов у объектов с шаблонами pod
Пример использования
# Установить лимиты CPU "200m" и памяти "512Mi" для контейнера nginx в deployment
ac set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
# Установить запросы и лимиты ресурсов для всех контейнеров в nginx
ac set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
# Удалить запросы ресурсов для контейнеров в nginx
ac set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0
# Вывести результат (в формате yaml) обновления лимитов контейнера nginx из локального файла без обращения к серверу
ac set resources -f path/to/file.yaml --limits=cpu=200m,memory=512Mi --local -o yaml
ac set selector
Установить селектор на ресурсе
Пример использования
# Установить метки и селектор перед созданием пары deployment/service
ac create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client | ac set selector --local -f - 'environment=qa' -o yaml | ac create -f -
ac create deployment my-dep -o yaml --dry-run=client | ac label --local -f - environment=qa -o yaml | ac create -f -
ac set serviceaccount
Обновить service account ресурса
Пример использования
# Установить service account deployment nginx-deployment в serviceaccount1
ac set serviceaccount deployment nginx-deployment serviceaccount1
# Вывести результат (в формате YAML) обновления nginx deployment с service account из локального файла без обращения к API серверу
ac set sa -f nginx-deployment.yaml serviceaccount1 --local --dry-run=client -o yaml
ac set subject
Обновить пользователя, группу или service account в role binding или cluster role binding
Пример использования
# Обновить cluster role binding для serviceaccount1
ac set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1
# Обновить role binding для user1, user2 и group1
ac set subject rolebinding admin --user=user1 --user=user2 --group=group1
# Вывести результат (в формате YAML) обновления subjects rolebinding из локального файла без обращения к серверу
ac create rolebinding admin --role=admin --user=admin -o yaml --dry-run=client | ac set subject --local -f - --user=foo -o yaml
ac version
Вывести информацию о версиях клиента и сервера
Пример использования
# Вывести информацию о версиях клиента и сервера
ac version
# Вывести только версию клиента
ac version --client
# Вывести версию в формате JSON
ac version -o json
ac wait
Экспериментально: ждать определённого условия для одного или нескольких ресурсов
Пример использования
# Ждать, пока pod "busybox1" не будет содержать статус condition типа "Ready"
ac wait --for=condition=Ready pod/busybox1
# Значение статуса condition по умолчанию true; можно ждать другие значения после знака равенства (сравнение с учётом Unicode простого регистра)
ac wait --for=condition=Ready=false pod/busybox1
# Ждать, пока pod "busybox1" не будет содержать статус фазы "Running"
ac wait --for=jsonpath='{.status.phase}'=Running pod/busybox1
# Ждать, пока pod "busybox1" не будет Ready
ac wait --for='jsonpath={.status.conditions[?(@.type=="Ready")].status}=True' pod/busybox1
# Ждать, пока сервис "loadbalancer" не получит ingress
ac wait --for=jsonpath='{.status.loadBalancer.ingress}' service/loadbalancer
# Ждать создания секрета "busybox1" с таймаутом 30 секунд
ac create secret generic busybox1
ac wait --for=create secret/busybox1 --timeout=30s
# Ждать удаления pod "busybox1" с таймаутом 60 секунд после выполнения команды удаления
ac delete pod/busybox1
ac wait --for=delete pod/busybox1 --timeout=60s