В своей предыдущей статье я углубился в увлекательный мир микросервисов — Microservice Architecture Patterns Part 1: Decomposition Patterns . Это было начало моей обширной серии статей о микросервисах и их шаблонах.
В этой статье мы стремимся прояснить процесс CI/CD посредством практического применения. Мы проведем вас через пошаговое руководство, разбив его по модулям, где вы вручную построите конвейер CI/CD. Для этого мы воспользуемся возможностями современных инструментов DevOps, таких как AWS, Docker, Kubernetes, Ansible, Git, Apache Maven и Jenkins . Итак, начнем это путешествие!
Нажмите кнопку Создать учетную запись AWS .
Перейдите на //console.aws.amazon.com/console/home. Нажмите кнопку «Войти» .
Выберите виртуальный сервер EC2, нажав EC2 Service .
Нажмите кнопку «Запустить экземпляр» .
Перейдите в раздел «Имя и теги» .
Укажите имя нового экземпляра виртуального сервера AWS EC2 в разделе «Имя» .
Вы также можете добавить дополнительные теги для своего виртуального сервера, нажав «Добавить дополнительные теги» .
Перейдите в раздел «Образы приложений и ОС (Amazon Machine Image)» .
Чтобы играть на виртуальном сервере БЕСПЛАТНО :
Перейдите в раздел «Тип экземпляра» .
Чтобы играть на виртуальном сервере БЕСПЛАТНО :
Выберите тип с тегом «Доступный уровень бесплатного пользования» в разделе «Тип экземпляра» .
Для меня это t2.micro (семейство: t2 1cCPU 1 ГиБ памяти. Текущее поколение: правда) .
Перейдите в раздел «Настроить хранилище» .
Чтобы играть на виртуальном сервере БЕСПЛАТНО :
Не меняйте настройки по умолчанию. Клиенты, соответствующие требованиям уровня бесплатного пользования, могут получить 30 ГБ накопителя EBS общего назначения (SSD) или магнитного накопителя .
Перейдите в раздел «Настройки сети» .
По умолчанию ваш виртуальный сервер доступен через ( Тип — SSH, Протокол — TCP, Порт — 22 ). Если вам нужны дополнительные типы подключений, добавьте их, добавив дополнительные правила группы безопасности для входящего трафика.
Перейдите в раздел «Пара ключей (Вход)» .
Если вы еще не создали «пару ключей» :
Запустите экземпляр виртуального сервера EC2, нажав кнопку «Запустить экземпляр» .
Затем вам следует перейти в раздел «Экземпляры» , нажав кнопку «Просмотреть все экземпляры» .
Теперь вы можете видеть, что ваш экземпляр виртуального сервера AWS EC2 работает.
Следуйте инструкциям из раздела [Модуль 1]: Виртуальный сервер AWS EC2 этого руководства, чтобы завершить этот шаг и создать экземпляр виртуального сервера EC2 с именем JenkinsServer.
Не забудьте добавить настройку группы безопасности. Это позволяет Jenkins и SSH работать через порты 8080 и 22 соответственно.
Используйте имя «JenkinsServer» , чтобы отличить экземпляр виртуального сервера EC2.
Создайте группу безопасности «CI_CD_Pipeline» и «CI_CD_Pipeline_Key_Pair» для нового экземпляра «JenkinsServer» AWS EC2. Вы можете повторно использовать их далее в статье.
Перейдите на домашнюю страницу консоли AWS → Панель управления консоли управления EC2 → Экземпляры.
Затем вам следует выбрать JenkinsServer и нажать кнопку «Подключиться» .
Затем вы увидите эту веб-страницу. Вам следует еще раз нажать кнопку «Подключиться» .
sudo wget -O /etc/yum.repos.d/jenkins.repo //pkg.jenkins.io/redhat-stable/jenkins.repo
Теперь Дженкинс загружен.
Чтобы импортировать ключ Jenkins, нам нужно скопировать команду «sudo rpm..» и выполнить ее.
sudo rpm --import //pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
Таким образом, менеджер пакетов «rpm» может убедиться, что устанавливаемые вами пакеты Jenkins — это именно те пакеты, которые опубликованы проектом Jenkins, и что они не были подделаны или повреждены.
Чтобы запустить Jenkins, нам нужно установить Java на наш экземпляр виртуального сервера EC2.
Чтобы установить Java , используйте эту команду.
sudo amazon-linux-extras install java-openjdk11 -y
Проверьте, правильно ли установлена Java , с помощью этой команды:
java -version
Чтобы запустить Jenkins, вам необходимо установить Fontconfig на наш экземпляр виртуального сервера EC2.
Используйте эту команду. sudo yum install fontconfig java-11-openjdk -y
sudo yum install jenkins -y
sudo systemctl start jenkins
sudo systemctl status jenkins
//<your-ec2-ip>:8080
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Теперь, когда Jenkins работает нормально, вы можете приступить к созданию конвейера Jenkins. Чтобы создать конвейер Jenkins, вам необходимо создать новый «Проект Freestyle». Чтобы создать новый «Проект Freestyle», вам нужно перейти на панель управления Jenkins и нажать кнопку «Новый элемент» .
Введите имя проекта Github «Freestyle project» (имя «конвейера» будет использоваться далее) и нажмите кнопку «ОК» .
Затем предоставьте описание конвейера.
Git — это кодом, предназначенная для того, чтобы помочь командам разработчиков программного обеспечения отслеживать каждое изменение кода в базе данных особого типа. Если допущена ошибка, разработчики могут повернуть время вспять и сравнить более ранние версии кода, чтобы исправить ошибку и свести к минимуму неудобства для всех членов команды. VCS особенно полезна для
sudo yum install git -y
git --version
Теперь Git отлично работает на экземпляре виртуального сервера EC2.
Нажмите кнопку «Управление Jenkins» , а затем кнопку «Управление плагинами» .
Нажмите кнопку «Доступные плагины» .
Найдите поле поиска плагина Github .
Выберите плагин Github .
Выберите плагин Github . А затем нажмите кнопку «Установить без перезагрузки» .
Затем на главной странице нужно нажать кнопку «Управление Jenkins» , а затем нажать кнопку «Глобальная конфигурация инструмента» .
Затем нажмите кнопки «Применить» и «Сохранить» .**.**
Просто скопируйте и вставьте его в поле « URL-адрес репозитория» . Затем нажмите кнопки «Применить» и «Сохранить» , чтобы завершить интеграцию Git с конвейером.
cd /var/lib/jenkins/workspace/{your pipeline name}
Apache Maven — широко используемый инструмент автоматизации сборки и управления проектами при разработке программного обеспечения. Он оптимизирует процесс компиляции, тестирования и упаковки кода, управляя зависимостями проекта и обеспечивая согласованный жизненный цикл сборки. Maven использует файлы конфигурации на основе XML (файлы POM) для определения структуры проекта, зависимостей и задач, что позволяет разработчикам эффективно управлять сложными программными проектами и развертывать их.
Чтобы загрузить Apache Maven, перейдите в каталог «/opt» .
cd /opt
sudo wget //dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
sudo tar -xvzf apache-maven-*.tar.gz
cd ~
Отредактируйте файл .bash_profile с помощью этой команды.
vi .bash_profile
Добавьте переменные JAVA_HOME и M2_HOME.
Назначьте путь к JDK11 для JAVA_HOME и путь к каталогу maven для переменной M2_HOME .
sudo find / -name java
Как использовать ВИМ
source .bash_profile
Чтобы проверить $PATH , используйте эту команду.
echo $PATH
Чтобы проверить Apache Maven , используйте эту команду.
mvn -v
Чтобы добиться этого, выполните следующие действия:
А затем нажмите кнопку «Вернуться на верхнюю страницу» .
Для этого выполните следующие действия:
Затем перейдите в раздел «Maven» . Нажмите кнопку «Добавить Maven» . Снимите флажок «Установить автоматически».
Затем добавьте имя и путь MAVEN_HOME .
Нажмите кнопки «Применить» и «Сохранить» .
На этом вы завершили настройку плагина Apache Maven Jenkins.
Чтобы интегрировать Apache Maven в конвейер, вам необходимо выполнить следующие шаги:
Наконец, вам следует нажать кнопки «Применить» и «Сохранить» , чтобы завершить интеграцию Apache Maven с конвейером.
cd /var/lib/jenkins/workspace/{your pipeline name}/target
Чтобы завершить этот шаг, используйте инструкции из раздела « Запуск экземпляра виртуального сервера AWS EC2» этого руководства. Не забудьте добавить настройку группы безопасности. Это позволяет Docker и SSH работать через порты 8080 и 22 соответственно.
sudo chown ansible-admin:ansible-admin /opt/docker
sudo mkdir /opt/docker
sudo yum install docker -y
Вам необходимо добавить текущего пользователя ansible-admin в группу Docker на виртуальном сервере EC2 AnsibleServer , чтобы предоставить права администратора Docker.
sudo usermod -a -G docker ansible-admin
id ansible-admin
sudo systemctl start docker
sudo systemctl status docker
Если вы использовали проект «Hello» , который предлагался в модуле « [Модуль 3]: Git и Github» , вам не нужно создавать новый Dockerfile, поскольку этот репозиторий проекта уже содержит Dockerfile.
FROM eclipse-temurin:17-jre-jammy ENV HOME=/opt/app WORKDIR $HOME ADD hello-0.0.1-SNAPSHOT.jar $HOME ENTRYPOINT ["java", "-jar", "/opt/app/hello-0.0.1-SNAPSHOT.jar" ]
sudo touch Dockerfile
vim Dockerfile
Dockerfile готов к использованию.
Теперь, когда ваш Dockerfile подготовлен к использованию, скопируйте артефакт JAR вашего проекта из экземпляра **"JenkinsServer"**EC2 и вставьте его в экземпляр EC2 "AnsibleServer" . Важно отметить, что в дальнейшем эта передача через конвейер будет автоматизирована.
Выполнив этот шаг, вы будете готовы протестировать свой Dockerfile вместе с настроенной вами средой Docker.
docker login
На этом вы завершили процесс входа в Docker и теперь готовы приступить к тестированию.
docker build -t hello:latest .
docker tag hello:latest zufarexplainedit/hello:latest
docker push zufarexplainedit/hello:latest
Следуйте инструкциям из раздела [Модуль 1]: Виртуальный сервер AWS EC2 этого руководства, чтобы завершить этот шаг и создать экземпляр виртуального сервера EC2 для Ansible.
Не забудьте добавить настройку группы безопасности. Это позволяет Ansible и SSH работать через порты 8080 и 22 соответственно.
Используйте имя «AnsibleServer» , чтобы отличить экземпляр виртуального сервера EC2.
Вы можете повторно использовать группу безопасности «CI_CD_Pipeline» и «CI_CD_Pipeline_Key_Pair» для нового экземпляра EC2 «AnsibleServer» .
Затем нажмите кнопку «Подключиться» .
Затем вы увидите эту веб-страницу. Вам следует еще раз нажать кнопку «Подключиться» .
sudo vi /etc/hostname
Замените это имя хоста на «ansible-server». Затем перезагрузите его.
sudo init 6
Теперь давайте добавим нового пользователя ansible-admin в экземпляр виртуального сервера AWS EC2.
Для этого используйте эту команду:
sudo useradd ansible-admin
Затем установите пароль для пользователя ansible-admin .
sudo passwd ansible-admin
Также вам необходимо настроить права пользователя, отредактировав файл sudoers .
sudo visudo
Добавьте «ansible-admin ALL=(ALL) ALL» в этот файл sudoers .
Кроме того, вам необходимо отредактировать файл /etc/ssh/sshd_config , чтобы включить проверку подлинности пароля.
sudo vi /etc/ssh/sshd_config
sudo service sshd reload
sudo su - ansible-admin
ssh-keygen
Теперь вы можете установить Ansible на свой экземпляр виртуального сервера EC2 «AnsibleServer» .
Давай сделаем это.
sudo amazon-linux-extras install ansible2
ansible --version
Поскольку Ansible установлен на вашем экземпляре виртуального сервера EC2 «AnsibleServer» , вы можете настроить Jenkins для его интеграции с Ansible. Вам необходимо установить плагин «Publish over SSH» , чтобы интегрировать Jenkins с экземпляром виртуального сервера EC2, на котором установлен Ansible, и с другими экземплярами виртуального сервера EC2, на которых установлен Kubernetes .
Перейдите в «Панель управления» → « Управление Jenkins» → «Настроить систему» → «Доступные плагины» .
Затем введите «Опубликовать через SSH» в поле поиска.
Нажмите кнопку «Установить без перезагрузки» . Дождитесь окончания процесса загрузки.
Для этого выполните следующие действия:
Перейдите в «Панель управления» → «Управление Jenkins» → «Настроить систему» → «Публикация через SSH» .
Затем нажмите кнопки «Применить» и «Сохранить» .
На этом вы завершили настройку плагина Jenkins «Публикация через SSH» .
Перейдите в папку «/opt» в экземпляре AnsibleServer EC2.
cd /opt
Создайте там новую папку «docker» .
sudo mkdir docker
Дайте привилегии этой папке «docker» .
sudo chown ansible-admin:ansible-admin docker
Теперь проверьте права доступа к папке «docker» , выполнив эту команду.
ll
Вы можете видеть, что папка «docker» доступна пользователю «ansible-admin» .
Теперь, когда плагин Github «Публикация через SSH» установлен и настроен, вы можете интегрировать его в конвейер, который вы создали в «[модуле 2]: Jenkins Server», для передачи артефакта jar проекта из « JenkinsServer» в «Ансиблсервер» .
Что ж, чтобы интегрировать плагин Github «Публикация через SSH» в конвейер, вам необходимо выполнить следующие шаги:
Наконец, вам следует нажать кнопки «Применить» и «Сохранить» , чтобы завершить интеграцию плагина «Публикация через SSH» с конвейером.
Теперь вы можете использовать обновленный конвейер для переноса артефакта jar проекта из JenkinsServer в AnsibleServer . Для этого вам нужно нажать кнопку «Построить сейчас» . В результате вы увидите успешный результат задания в истории сборки.
Если вы откроете терминал AWS EC2 «AnsibleServer» . Вы можете проверить, что конвейер работает хорошо.
Просто используйте эту команду.
cd /opt/docker
hosts
список IP-адресов или имен хостов./etc/ansible/hosts
.
Редактируя /etc/ansible/hosts
, вы можете легко управлять группами хостов без необходимости записывать их IP-адреса каждый раз, когда вы запускаете сборник сценариев.
sudo ifconfig
sudo vi /etc/ansible/hosts
sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}
sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected]
Теперь вы можете увидеть «Количество добавленных ключей: 1» . Это означает, что установка аутентификации SSH без пароля успешно завершена.
touch hello-app.yml
hello-app.yml
. Откройте его для редактирования с помощью этой команды. vi hello-app.yml
--- - hosts: ansible user: root tasks: - name: create docker image command: docker build -t hello:latest . args: chdir: /opt/docker - name: create tag to push image onto dockerhub command: docker tag hello:latest zufarexplainedit/hello:latest - name: push docker image onto dockerhub command: docker push zufarexplainedit/hello:latest
Сборник сценариев Ansible для задач Docker готов к использованию.
cd /opt/docker
sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml
Теперь, когда плагин Github «Публикация через SSH» , Ansible и Docker установлены и настроены, вы можете интегрировать их все в конвейер, который вы создали в «[модуле 2]: Jenkins Server», для передачи артефакта jar проекта. с « JenkinsServer» на «AnsibleServer» , а затем создайте новый образ Docker из своего проекта и затем отправьте этот образ Docker на Dockerhub.
Чтобы добиться этого, вам необходимо выполнить следующие шаги:
Наконец, нажмите кнопки «Применить» и «Сохранить» , чтобы завершить интеграцию задач Ansible Docker с конвейером.
Теперь вы можете протестировать обновленный конвейер, чтобы беспрепятственно перенести артефакт jar проекта из « JenkinsServer» в «AnsibleServer» , затем создать новый образ Docker из своего проекта и затем отправить этот образ Docker в Dockerhub. Для этого вам нужно нажать кнопку «Построить сейчас» . В результате вы увидите успешный результат задания в истории сборки.
Теперь давайте настроим K8s на экземпляре EC2. Вы собираетесь создать новый экземпляр EC2 и установить инструмент командной строки kubectl для дальнейшего взаимодействия с кластером Kubernetes .
Чтобы завершить этот шаг, используйте инструкции из раздела « Запуск экземпляра виртуального сервера AWS EC2» этого руководства.
Не забудьте добавить настройку группы безопасности. Это позволяет всем инструментам и SSH работать через порты 8080 и 22 соответственно.
Используйте имя «K8sServer» , чтобы отличить экземпляр виртуального сервера EC2.
Вы можете повторно использовать группу безопасности «CI_CD_Pipeline» и «CI_CD_Pipeline_Key_Pair» для нового экземпляра EC2 «K8sServer» .
sudo vi /etc/hostname
Замените это имя хоста на «kubernetes-server», а затем перезагрузите его.
sudo init 6
Используйте эту команду, чтобы проверить версию AWS .
aws --version
Если вы видите версию aws-cli/1.18 , вам следует загрузить последнюю версию.
Скопируйте и вставьте команду Curl .
curl "//awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
Подождите, пока начнется процесс загрузки.
unzip awscliv2.zip
sudo ./aws/install
aws --version
Kubectl — это фундаментальный инструмент командной строки для взаимодействия с любым кластером Kubernetes, независимо от базовой инфраструктуры. Он позволяет вам управлять ресурсами, развертывать приложения, настраивать сеть, получать доступ к журналам и выполнять различные другие задачи в кластере Kubernetes.
Теперь вам нужно установить инструмент командной строки kubectl для дальнейшего взаимодействия с кластером Kubernetes. Для этого вам нужно перейти в AWS → Документация → Amazon EKS → Руководство пользователя → Установка или обновление kubectl → Linux .
curl -O //s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin
kubectl version --output=yaml
Eksctl — еще один инструмент командной строки, специально разработанный для сервиса Amazon EKS. Eksctl можно использовать для создания кластеров AWS EKS, управления группами узлов и выполнения задач, специфичных для EKS, таких как интеграция с ролями IAM и другими сервисами AWS, абстрагируя большую часть настройки и управления инфраструктурой AWS.
curl --silent --location "//github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
Вам необходимо создать роль IAM и прикрепить ее к вашему экземпляру EC2 «KubernetesServer» .
Для этого вам нужно найти EC2 в поле поиска.
Перейдите в Панель управления IAM → Роли .
Нажмите кнопку «Создать роль» на веб-странице ролей IAM .
Затем выберите «Сервис AWS», «EC2». И нажмите кнопку «Далее» .
Затем найдите «AmazonEC2FullAccess» , «AmazonEC2FullAccess» , «IAMFullAccess» , «AWSCloudFormationFullAccess» в поле поиска и нажмите кнопку «Добавить разрешения» .
И затем нажмите кнопку «Далее» .
Затем введите «Eksctl_Role» в поле «Имя роли» .
И нажмите кнопку «Создать роль» .
Перейдите на веб-страницу экземпляра AWS EC2. Выберите «KuberbetesServer». Затем нажмите «Действия» → «Безопасность» → «Изменить роль IAM».
Выберите «Eksctl_Role» , а затем нажмите кнопку «Обновить роль IAM» .
Теперь ваша роль IAM связана с вашим «EKS_Server» и инструментом eksctl.
Кластер Amazon EKS (Elastic Kubernetes Service) — это управляемая среда Kubernetes на AWS, автоматизирующая сложные инфраструктурные задачи, такие как настройка, масштабирование и обслуживание. Это очень важно, поскольку оно обеспечивает эффективную, безопасную и оптимизированную для AWS платформу для развертывания, управления и масштабирования контейнерных приложений, оптимизации операций и позволяет разработчикам сосредоточиться на кодировании, а не на управлении базовой инфраструктурой.
Чтобы добиться этого, выполните следующие действия:
eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>
eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro
Выполните измененную команду и терпеливо дождитесь завершения процесса создания кластера. Вы заметите, что на веб-странице AWS CloudFormation статус кластера EKS указан как «создается» .
Кроме того, вы можете проверить статус успешного создания кластера EKS на веб-странице AWS CloudFormation.
YAML-файл развертывания Kubernetes — это сценарий конфигурации, написанный в формате YAML, который определяет, как управлять и поддерживать определенное приложение или службу в кластере Kubernetes. Он инкапсулирует инструкции по организации развертывания, масштабирования, обновления и мониторинга контейнеров, в которых выполняется приложение. Этот файл содержит такие сведения, как образ контейнера, желаемое количество реплик, ограничения ресурсов, переменные среды, настройки сети и многое другое. При применении к кластеру Kubernetes YAML-файл развертывания обеспечивает желаемое состояние приложения, автоматически управляя созданием, масштабированием и восстановлением контейнеров для поддержания желаемого уровня доступности и надежности.
touch hello-app-deployment.yaml
vi hello-app-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: zufarexplainedit-hello-app labels: app: hello-app spec: replicas: 2 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: zufarexplainedit/hello imagePullPolicy: Always ports: - containerPort: 8080 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1
YAML-файл службы Kubernetes — это сценарий конфигурации, написанный в формате YAML, который определяет сетевую абстракцию для набора модулей, обеспечивая согласованный доступ к ним в кластере Kubernetes. В этом файле описывается, как служба должна обнаруживаться, получать к ней доступ и распределять нагрузку другими службами или внешними клиентами. Он включает в себя такие характеристики, как тип службы (ClusterIP, NodePort, LoadBalancer), номера портов, селекторы для идентификации модулей и многое другое. При применении к кластеру Kubernetes файл YAML службы создает виртуальный IP-адрес и порт, которые направляют трафик к соответствующим модулям, абстрагируя изменения базового модуля и обеспечивая стабильную конечную точку для связи, обеспечивая плавное подключение и динамическое масштабирование.
touch hello-app-service.yaml
vi hello-app-service.yaml
apiVersion: v1 kind: Service metadata: name: zufarexplainedit-hello-app-service labels: app: hello-app spec: selector: app: hello-app ports: - port: 8080 targetPort: 8080 type: LoadBalancer
Теперь файл hello-app-service.yaml создан и готов к использованию.
Применить развертывание.
Используйте следующую команду, чтобы применить конфигурацию развертывания. kubectl apply -f hello-app-deployment.yaml
Это создаст развертывание с указанным количеством реплик и стратегией непрерывного обновления, гарантируя доступность и управляемость вашего приложения.
2. Применить Сервис.
Затем примените конфигурацию службы. kubectl apply -f hello-app-service.yaml
При этом будет настроена служба типа LoadBalancer, предоставляющая доступ к вашему приложению из Интернета. Обратите внимание, что подготовка LoadBalancer и получение внешнего IP-адреса может занять некоторое время.
Проверьте статус LoadBalancer.
Следите за статусом использования вашего сервиса. kubectl get service zufarexplainedit-hello-app-service
Когда назначен внешний IP-адрес, вы почти готовы получить доступ к своему приложению.
Получите доступ к вашему приложению.
Используя веб-браузер, введите назначенный внешний IP-адрес, а затем: 8080. Через некоторое время страница загрузится и отобразит сообщение «HelloWorld». Имейте в виду, что первоначальная загрузка может занять несколько секунд.
1. Удалите все развертывания .
Чтобы удалить все развертывания, вы можете использовать следующую команду. kubectl delete deployments --all
Это действие гарантирует, что в вашем кластере не останется активных экземпляров развертывания.
2. Удалить все модули .
Если вам нужно удалить все модули, независимо от того, управляются ли они развертыванием или нет, вы можете использовать следующую команду. kubectl delete pods --all
Очистка модулей может помочь сбросить состояние вашего кластера или подготовиться к новым развертываниям.
3. Удалить все службы .
Чтобы очистить службы, которые предоставляют доступ к вашим приложениям из сети, вы можете использовать следующую команду. kubectl delete services --all
Удаление служб может привести к простою, поэтому прежде чем продолжить, учтите последствия. Чтобы удалить все ресурсы, связанные с указанным кластером Amazon EKS, созданным с помощью eksctl
, включая рабочие узлы, сетевые компоненты и другие ресурсы, вы можете использовать следующую команду.
eksctl delete cluster --name {your cluster name} --region {your region name}
Для меня это. eksctl delete cluster --name zufarexplainedit --region eu-north-1
Убедитесь, что вы уверены в необходимости остановки кластера, поскольку это действие необратимо и приведет к потере данных.
Теперь давайте добавим нового пользователя ansible-admin в экземпляр виртуального сервера AWS EC2 «KubernetesServer» .
sudo useradd ansible-admin
Затем установите пароль для пользователя ansible-admin .
sudo passwd ansible-admin
Также вам необходимо настроить права пользователя, отредактировав файл sudoers .
sudo visudo
Добавьте «ansible-admin ALL=(ALL) ALL» в этот файл sudoers .
Кроме того, вам необходимо отредактировать файл /etc/ssh/sshd_config , чтобы включить проверку подлинности пароля.
sudo vi /etc/ssh/sshd_config
sudo service sshd reload
sudo su - ansible-admin
Далее в этой статье вы планируете управлять удаленными серверами, такими как экземпляр виртуального сервера K8s EC2. Вот почему вам необходимо настроить ключи SSH.
ssh-keygen
sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}
sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected]
Теперь вы можете увидеть «Количество добавленных ключей: 1» . Это означает, что установка аутентификации SSH без пароля успешно завершена.
Когда вы запускаете книгу воспроизведения Ansible, вы указываете хосты, на которых она должна работать. На этом этапе вам необходимо указать хост экземпляра KubernetesServer EC2. Для этого вам нужно повторить те же шаги, которые вы прошли в « [Модуль 6]: Ansible».
sudo ifconfig
sudo vi /etc/ansible/hosts
touch kubernetes-hello-app.yml
hello-app.yml
. Откройте его для редактирования с помощью этой команды. vi kubernetes-hello-app.yml
--- - hosts: kubernetes tasks: - name: deploy regapp on kubernetes command: kubectl apply -f hello-app-deployment.yaml - name: create service for regapp command: kubectl apply -f hello-app-service.yaml - name: update deployment with new pods if image updated in docker hub command: kubectl rollout restart deployment.apps/zufarexplainedit-hello-app
Сборник сценариев Ansible для задач Kubernetes готов к использованию.
sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml
Зуфар Сунагатов — опытный старший инженер-программист, увлеченный разработкой современных программных систем.