Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

Розробник спробував 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 рекомендує ресурси для навчання. Крім того, я можу попросити його порекомендувати посилання та книги.

Мій висновок щодо цього чудового інструменту такий:

Використовуйте цей інструмент як помічника в роботі, щоб швидше виконувати прості завдання. Здебільшого це зменшить кількість роботи.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Це дуже круто, дозволить позбутися рутини.

Ну не знаю, як на мене зрілі команди вже мають достатній набір таких шаблонів, які пройшли бойове хрещення та команди їм довіряють. Тому такі рутинні штуки вирішуються cmd+с/cmd+v із інших проектів.
Усе що зрозумів про цю гравіцапу — альтернатива Google + StackOverflow. Той хто із google на ти може показати ті ж самі результати.
Тому ChatGPT для тих, хто не вміє гуглити. А я по досвіду спостереджень за тим як гуглять інші зрозумів що це окремий скіл. Ну що ж — OpenAI молодці. Чекаємо відповідь від Google

Підписатись на коментарі