Розробник спробував ChatGPT: приклади та висновки для DevOps
Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!
Розробник Rohit Ghumare спробував, як підказки ChatGPT можуть допомогти DevOps під час роботи над розгортанням програми.
Публікуємо переклад його статті з Medium.
Давайте обговоримо деякі випадки використання ChatGPT, коли вам потрібно писати код (а ви не дуже любите це робити).
1. Код Terraform для запуску кластера Kubernetes на хмарній платформі
provider "aws" { region = "us-west-2" } resource "aws_iam_role" "k8s_master_role" { name = "k8s-master-role" assume_role_policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF } resource "aws_iam_role_policy" "k8s_master_policy" { name = "k8s-master-policy" role = aws_iam_role.k8s_master_role.id policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "autoscaling:*" ], "Resource": "*" } ] } EOF } resource "aws_launch_configuration" "k8s_master_config" { image_id = "ami-0ff8a91507f77f867" instance_type = "t2.micro" iam_instance_profile = aws_iam_role.k8s_master_role.name key_name = "my-key-pair" security_groups = [aws_security_group.k8s_master_security_group.name] user_data = <<EOF #!/usr/bin/env bash apt-get update apt-get install -y kubeadm kubectl kubelet EOF } resource "aws_security_group" "k8s_master_security_group" { name = "k8s-master-security-group" description = "Security group for k8s master nodes" ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_autoscaling_group" "k8s_master_asg" { name = "k8s-master-asg" launch_configuration = aws_launch_configuration.k8s_master_config.name min_size = 1 max_size = 3 desired_capacity = 1 vpc_zone_identifier = [aws_subnet.k8s_master_subnet.id] }
Сподіваюся, вас це теж вражає. Ми наймаємо інженерів для написання цього типу коду. Це не схоже на go to production код, але це ідеальний помічник у роботі. Тепер у мене є достатньо часу, щоб займатися іншими справами, коли мій час на кодування скорочено завдяки ChatGPT.
Це лише початок. Подивіться — що станеться, коли я попрошу ChatGPT додати трохи security до цього коду за допомогою Elastic File System and NFS.
Мені найбільше сподобалися пропозиції та примітки в кінці.
Цей код створює екземпляр Elastic File System та монтує в підмережі, заданій в subnet_id. Для створеного екземпляру атрибут security_groups вказує на security групу, створену раніше, що дозволяє вузлам у кластері отримувати доступ до EFS. Він також створює два правила security groups, одне для TCP, інше для протоколу UDP, щоб дозволити трафік NFS у security groups, створеній раніше.
Це лише приклад і може не включати всі необхідні ресурси чи конфігурації для вашого конкретного випадку використання. Крім того, добре протестувати код у середовищі розробки перед використанням у виробництві.
resource "aws_efs_file_system" "k8s_efs" { creation_token = "k8s-efs" performance_mode = "generalPurpose" } resource "aws_efs_mount_target" "k8s_efs_mount_target" { file_system_id = aws_efs_file_system.k8s_efs.id subnet_id = aws_subnet.k8s_master_subnet.id security_groups = [aws_security_group.k8s_master_security_group.id] } resource "aws_security_group_rule" "efs_nfs_rule" { type = "ingress" from_port = 2049 to_port = 2049 protocol = "tcp" security_group_id = aws_security_group.k8s_master_security_group.id source_security_group_id = aws_security_group.k8s_master_security_group.id } resource "aws_security_group_rule" "efs_nfs_udp_rule" { type = "ingress" from_port = 2049 to_port = 2049 protocol = "udp" security_group_id = aws_security_group.k8s_master_security_group.id source_security_group_id = aws_security_group.k8s_master_security_group.id }
2. Що таке Istio service Mesh і як його встановити
Чесно кажучи, мені це подобається. Те, як він спілкується з нами та рекомендує рішення, а також те, що є правильним, а що ні, що важливо. Погляньте на цю відповідь для запиту вище.
Давайте спробуємо — приклад розгортання програми BookInfo за допомогою Istio Service Mesh:
Ось приклад розгортання програми bookinfo із сіткою служби Istio за допомогою кластера Kubernetes:
Встановіть Istio на кластер:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.11.0 sh - cd istio-1.11.0 export PATH=$PWD/bin:$PATH istioctl install --set profile=demo
Розгорніть програму bookinfo:
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Створіть віртуальний сервіс для програми bookinfo:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Переконайтеся, що програма bookinfo запущена:
kubectl get services
Отримайте доступ до програми, виконавши:
istioctl dashboard
Ви можете отримати доступ до програми за URL-адресою:
http://{GATEWAY_URL}/productpage
Це базовий приклад того, як розгорнути зразок програми bookinfo з Istio service mesh на кластері Kubernetes. Вам може знадобитися змінити команди або конфігураційні файли на основі вашого конкретного середовища або вимог.
Давайте подивимося — чи знає ChatGPT про нещодавні оновлення в Istio Ambient Mesh.
Я хотів би запитати ChatGPT: чи може він допомогти мені встановити Ambient Mesh. Давайте перевіримо 🙇🏻
Переглянувши це, я на кілька хвилин подумав, що тепер моя робота в небезпеці. Хоч команди некоректні, але ChatGPT рекомендує кілька чудових пропозицій, на які ви повинні звернути увагу:
Istio Ambient Mesh наразі перебуває на ранній стадії розробки та офіційно ще не випущений. Однак ви можете встановити його з репозиторію Istio GitHub.
Майте на увазі, що Istio Ambient Mesh зараз знаходиться на експериментальній стадії, і в ньому можуть виникати деякі помилки або проблеми. Крім того, команди можуть змінюватися в міру розвитку проекту.
Важливо перевіряти офіційну документацію Istio, щоб мати найновішу інформацію. Крім того, завжди доцільно протестувати інсталяцію в середовищі розробки перед використанням у виробництві.
Це так захоплює, що я захотів спробувати ще:
Цю відповідь знають не всі, і її дуже важко знайти в Google. Тому я задоволений відповіддю та тим, як ChatGPT рекомендує ресурси для навчання. Крім того, я можу попросити його порекомендувати посилання та книги.
Мій висновок щодо цього чудового інструменту такий:
Використовуйте цей інструмент як помічника в роботі, щоб швидше виконувати прості завдання. Здебільшого це зменшить кількість роботи.
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів