云容器实例 CCI-调用API创建负载:Wordpress

时间:2025-02-12 14:56:00

Wordpress

  1. 调用创建Deployment接口部署Wordpress。

    • Deployment名称为wordpress。
    • replicas值为2,表示创建2个pod。
    • 设置Pod的标签为app:wordpress。
    • 使用wordpress:latest镜像。
    • 设置容器环境变量WORDPRESS_DB_PASSWORD为“********”,请替换为您设置的密码。此处的密码必须与MySQL的MYSQL_ROOT_PASSWORD一致。
    {    "apiVersion": "apps/v1",    "kind": "Deployment",    "metadata": {        "name": "wordpress"    },    "spec": {        "replicas": 2,        "selector": {            "matchLabels": {                "app": "wordpress"            }        },        "template": {            "metadata": {                "labels": {                    "app": "wordpress"                }            },            "spec": {                "containers": [                    {                        "image": "wordpress:latest",                        "name": "container-0",                        "resources": {                            "limits": {                                "cpu": "500m",                                "memory": "1024Mi"                            },                            "requests": {                                "cpu": "500m",                                "memory": "1024Mi"                            }                        },                        "env": [                            {                                "name": "WORDPRESS_DB_PASSWORD",                                "value": "********"                            }                        ]                    }                ],                "imagePullSecrets": [                    {                        "name": "imagepull-secret"                    }                ]            }        }    }}

  2. 调用创建Service接口创建一个Service,定义1中创建的Pod的访问策略。

    • Service名称为wordpress。
    • 选择标签为app:wordpress的Pod,即关联1中创建的Pod。
    • 负载访问端口8080映射到容器的80端口,80端口为wordpress镜像的默认对外暴露的端口。
    • Service的访问类型为ClusterIP,即使用ClusterIP在内部访问Service。
    {    "apiVersion": "v1",    "kind": "Service",    "metadata": {        "name": "wordpress",        "labels": {            "app": "wordpress"        }    },    "spec": {        "selector": {            "app": "wordpress"        },        "ports": [            {                "name": "service0",                "targetPort": 80,                "port": 8080,                "protocol": "TCP"            }        ],        "type": "ClusterIP"    }}

  3. 调用创建Ingress接口创建一个Ingress,定义wordpress的外部访问策略,即关联ELB实例(ELB实例需要与Wordpress负载在同一个VPC内)。

    • metadata.annotations.kubernetes.io/elb.id:ELB实例的ID。
    • metadata.annotations.kubernetes.io/elb.ip:ELB实例的IP地址。
    • metadata.annotations.kubernetes.io/elb.port:ELB实例的端口。
    • spec.rules:访问服务的规则集合。path列表,每个path(比如:/)都关联一个backend(比如“wordpress:8080”)。backend是一个service:port的组合。Ingress的流量被转发到它所匹配的backend。

    这里配置完后,访问ELB的IP:端口的流量就会流向wordpress:8080这个Service,由于Service是关联了wordpress的Pod,所以最终访问的就是1中部署的wordpress容器。

    {    "apiVersion": "extensions/v1beta1",    "kind": "Ingress",    "metadata": {        "name": "wordpress",        "labels": {            "app": "wordpress",            "isExternal": "true",            "zone": "data"        },        "annotations": {            "kubernetes.io/elb.id": "2d48d034-6046-48db-8bb2-53c67e8148b5",            "kubernetes.io/elb.ip": "10.10.10.10",            "kubernetes.io/elb.port": "9012"        }    },    "spec": {        "rules": [            {                "http": {                    "paths": [                        {                            "path": "/",                            "backend": {                                "serviceName": "wordpress",                                "servicePort": 8080                            }                        }                    ]                }            }        ]    }}

support.huaweicloud.com/bestpractice-cci/cci_04_0005.html