1

我多次遇到“IaaC”(或 IaC)这个词。当我用谷歌搜索它时,它告诉我:

基础设施即代码 (IaC) 是通过机器可读的定义文件而不是物理硬件配置或交互式配置工具来管理和配置计算机数据中心的过程。

Kubernetes 中使用的 yaml 文件可以作为 IaC 的示例吗?也许甚至 Dockerfile 也可以这样认为?如果没有,你能给我一些 IaC 的例子吗?

例如 :

apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

4

1 回答 1

2

IP Ops 需要执行许多步骤来发布/更新在 Internet 上运行的应用程序。任务的几个例子是

  1. 配置新的虚拟机,例如使用所需的内存和规格启动 VM。

  2. 安装所需的软件和依赖项

  3. 管理和扩展基础架构。

  4. 一次又一次地重复我们所做的所有配置。

基础设施即代码意味着自动化在互联网上部署我们的应用程序所需的步骤。由于使用 docker 和 k8s,我们正在自动化部署过程,它也被认为是基础设施即代码。

例子


# define services (containers) that should be running
services:
  mongo-database:
    image: mongo:3.2
    # what volumes to attach to this container
    volumes:
      - mongo-data:/data/db
    # what networks to attach this container
    networks:
     - raddit-network

  raddit-app:
    # path to Dockerfile to build an image and start a container
    build: .
    environment:
      - DATABASE_HOST=mongo-database
    ports:
      - 9292:9292
    networks:
     - raddit-network
    # start raddit-app only after mongod-database service was started
    depends_on:
      - mongo-database

# define volumes to be created
volumes:
  mongo-data:
# define networks to be created
networks:
  raddit-network:

这个 docker compose 文件自己安装依赖项 mongo-database,它还安装主应用程序 raddit-app,并指定应用程序侦听的端口。

资料来源Artemmkin / 基础设施即代码教程

于 2019-12-24T06:37:39.953 回答