|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
ClusterClass
En esta sección cubrimos el uso de ClusterClass con el SUSE® Rancher Prime Cluster API.
Requisitos previos
-
Cluster de Rancher Manager con SUSE® Rancher Prime Cluster API instalado
-
El proveedor CAAPF debe estar instalado como un requisito previo para usar todas las ClusterClasses.
-
Ejemplo de instalación del proveedor CAAPF:
Haga clic para expandir
apiVersion: v1 kind: Namespace metadata: name: fleet-addon-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: fleet namespace: fleet-addon-system spec: name: rancher-fleet type: addon
-
|
CAAPF depende de la |
-
Dependiendo de su motor, es necesaria la instalación de Bootstrap/Control Plane ya sea de CAPRKE2 o de Kubeadm antes de la configuración adicional de CAPIProvider:
-
CAPRKE2
-
Kubeadm
Instalación del proveedor de Bootstrap y Control Plane:
Haga clic para expandir
apiVersion: v1 kind: Namespace metadata: name: rke2-bootstrap-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: rke2-bootstrap namespace: rke2-bootstrap-system spec: name: rke2 type: bootstrap --- apiVersion: v1 kind: Namespace metadata: name: rke2-control-plane-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: rke2-control-plane namespace: rke2-control-plane-system spec: name: rke2 type: controlPlaneInstalación del proveedor de Bootstrap y Control Plane:
Haga clic para expandir
apiVersion: v1 kind: Namespace metadata: name: capi-kubeadm-bootstrap-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: kubeadm-bootstrap namespace: capi-kubeadm-bootstrap-system spec: name: kubeadm type: bootstrap --- apiVersion: v1 kind: Namespace metadata: name: capi-kubeadm-control-plane-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: kubeadm-control-plane namespace: capi-kubeadm-control-plane-system spec: name: kubeadm type: controlPlane -
Configuración
-
Azure
-
AWS
-
GCP
-
Docker
-
vSphere
Para preparar el Cluster de gestión, vamos a instalar el Cluster API Provider Azure y crear una identidad de ServicePrincipal para aprovisionar un nuevo Cluster en Azure.
Antes de comenzar, se necesita crear un ServicePrincipal, con al menos acceso de Colaborador a una suscripción de Azure. Consulte la documentación de CAPZ para más detalles.
-
Instalación del proveedor
apiVersion: v1 kind: Namespace metadata: name: capz-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: azure namespace: capz-system spec: type: infrastructure name: azure -
Configuración de identidad
Autenticación para la provisión del clúster AKSSi está desplegando un clúster downstream en AKS, puede omitir el paso de Configuración de identidad y saltar a Crear un clúster desde un ClusterClass. En lugar de usar
AzureClusterIdentity, crearás unSecretcon las credenciales del Service Principal para que el Azure Service Operator las utilice al aplicar el manifiesto del clúster.En este ejemplo vamos a utilizar un
AzureClusterIdentitypara provisionar Clústeres de Azure. Primero se necesita crear un Secret que contenga las credenciales del Service Principal, para que sea referenciado por el recursoAzureClusterIdentity. Ten en cuenta que elAzureClusterIdentityes un recurso con espacio de nombres y debe ser creado en el mismo espacio de nombres que el Clúster. Para más información sobre las mejores prácticas al usar identidades de Azure, por favor consulta la documentación oficial.Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: v1 kind: Secret metadata: name: <AZURE_CLUSTER_IDENTITY_SECRET_NAME> namespace: <AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE> type: Opaque stringData: clientSecret: <AZURE_CLIENT_SECRET> --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureClusterIdentity metadata: labels: clusterctl.cluster.x-k8s.io/move-hierarchy: "true" name: cluster-identity spec: allowedNamespaces: {} clientID: <AZURE_APP_ID> clientSecret: name: <AZURE_CLUSTER_IDENTITY_SECRET_NAME> namespace: <AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE> tenantID: <AZURE_TENANT_ID> type: ServicePrincipal
Para preparar el clúster de gestión, vamos a instalar el Proveedor de API de Clúster AWS, y crear un secreto con las credenciales necesarias para provisionar un nuevo Clúster en AWS.
Las credenciales globales se establecen en blanco, ya que vamos a usar AWSClusterStaticIdentity en su lugar.
-
Instalación del proveedor
apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: aws namespace: capa-system spec: type: infrastructure variables: AWS_B64ENCODED_CREDENTIALS: "" -
Configuración de identidad
En este ejemplo vamos a utilizar un
AWSClusterStaticIdentitypara aprovisionar Clústeres de AWS.
Se necesita crear un Secret que contenga las credenciales en el espacio de nombres donde está instalado el proveedor de AWS.
Para más información sobre cómo configurar las credenciales, consulta la documentación clusterawsadm.
ElAWSClusterStaticIdentitypuede referenciar este Secret para permitir el aprovisionamiento del Clúster. Para este ejemplo estamos permitiendo el uso de la identidad en todos los espacios de nombres, para que pueda ser reutilizada fácilmente.
Puedes consultar la documentación oficial para aprender más sobre la gestión de identidades.Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: v1 kind: Secret metadata: name: <AWS_IDENTITY_SECRET_NAME> namespace: capa-system type: Opaque stringData: AccessKeyID: <AWS_ACCESS_KEY_ID> SecretAccessKey: <AWS_SECRET_ACCESS_KEY> --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: AWSClusterStaticIdentity metadata: name: cluster-identity spec: secretRef: <AWS_IDENTITY_SECRET_NAME> allowedNamespaces: {}
Para preparar el clúster de gestión, vamos a instalar el Proveedor de API de Clúster GCP y crear un secreto con las credenciales necesarias para aprovisionar un nuevo clúster en GCP.
Se requiere una cuenta de servicio para crear y gestionar clústeres en GCP y esto requerirá Editor permisos. Puedes seguir la guía oficial del Libro CAPG.
La clave de la cuenta de servicio codificada en base64 debe establecerse en la variable GCP_B64ENCODED_CREDENTIALS del proveedor.
-
Instalación del proveedor
apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: gcp namespace: capg-system spec: type: infrastructure variables: GCP_B64ENCODED_CREDENTIALS: xxx -
Configuración de la red
El aprovisionamiento de un clúster GCP autogestionado requiere que se configure una red GCP para permitir que los nodos de Kubernetes se comuniquen con el plano de control y extraigan imágenes del registro de contenedores, para lo cual las máquinas deben tener acceso NAT o una IP pública. El comportamiento predeterminado del proveedor es crear máquinas virtuales sin IP pública adjunta, por lo que se requiere un NAT en la Nube para permitir que los nodos establezcan una conexión con el equilibrador de carga y el mundo exterior. Por favor, consulta la guía oficial del Libro CAPG sobre cómo preparar tu red GCP para aprovisionar un clúster GCP autogestionado.
Los siguientes pasos son necesarios para preparar la red GCP para el aprovisionamiento del clúster:
-
Crea un enrutador.
-
Crea un NAT asociado al enrutador.
-
Para preparar el clúster de gestión, vamos a instalar el Proveedor de API de Clúster Docker.
-
Instalación del proveedor de infraestructura Docker
apiVersion: v1 kind: Namespace metadata: name: capd-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: docker namespace: capd-system spec: type: infrastructure
Para preparar el clúster de gestión, vamos a instalar el Proveedor de API de Clúster vSphere.
Las credenciales globales se establecen en blanco, ya que vamos a usar VSphereClusterIdentity en su lugar.
-
Instalación del proveedor
apiVersion: v1 kind: Namespace metadata: name: capv-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: vsphere namespace: capv-system spec: type: infrastructure variables: VSPHERE_USERNAME: "" VSPHERE_PASSWORD: "" -
Configuración de identidad
En este ejemplo, vamos a utilizar un
VSphereClusterIdentitypara aprovisionar clústeres vSphere.
Se necesita crear un secreto que contenga las credenciales en el espacio de nombres donde está instalado el proveedor vSphere. ElVSphereClusterIdentitypuede hacer referencia a este secreto para permitir el aprovisionamiento del clúster. Para este ejemplo estamos permitiendo el uso de la identidad en todos los espacios de nombres, para que pueda ser reutilizada fácilmente. Puedes consultar la documentación oficial para aprender más sobre la gestión de identidades.apiVersion: v1 kind: Secret metadata: name: cluster-identity namespace: capv-system type: Opaque stringData: username: xxx password: xxx --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: VSphereClusterIdentity metadata: name: cluster-identity spec: secretName: cluster-identity allowedNamespaces: selector: matchLabels: {}
Crea un clúster a partir de una ClusterClass.
-
Azure RKE2
-
Azure AKS
-
Azure Kubeadm
-
AWS EKS
-
AWS Kubeadm
-
AWS RKE2
-
GCP GKE
-
GCP Kubeadm
-
Docker Kubeadm
-
Docker RKE2
-
vSphere Kubeadm
-
vSphere RKE2
-
Se puede encontrar una Azure ClusterClass entre los ejemplos de Turtles.
Aplicaciones como el Proveedor de Nube de Azure y Calico CNI se instalarán en clústeres en sentido descendente. Esto se realiza automáticamente al crear el clúster mediante clústeres específicos con etiquetas, como
cloud-provider: azureycni: calico.-
CLI
-
kubectl
Se puede aplicar una Azure RKE2 ClusterClass y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r azure-rke2 | kubectl apply -f --
Alternativamente, se puede aplicar la Azure RKE2 ClusterClass directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/azure/rke2/clusterclass-rke2-example.yaml -
Además, se necesitará instalar el Proveedor de Nube de Azure en cada clúster en sentido descendente, para que los nodos se inicialicen correctamente. Para este ejemplo, también vamos a instalar Calico como el CNI predeterminado.
Podemos hacer esto automáticamente al crear el clúster utilizando el Proveedor de complemento de Cluster API Fleet. Primero se necesitan crear dos
HelmOps, para ser aplicados en el nuevo Cluster a través de selectores de etiquetas.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/azure/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml
-
-
Crea el clúster de Azure a partir del ejemplo de ClusterClass
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cloud-provider: azure cni: calico name: azure-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: azure-rke2-example controlPlane: replicas: 1 variables: - name: subscriptionID value: <AZURE_SUBSCRIPTION_ID> - name: location value: <AZURE_LOCATION> - name: resourceGroup value: <AZURE_RESOURCE_GROUP> - name: azureClusterIdentityName value: cluster-identity version: v1.34.3+rke2r1 workers: machineDeployments: - class: rke2-default-worker name: md-0 replicas: 1
-
Se puede encontrar una Azure AKS ClusterClass entre los ejemplos de Turtles.
-
CLI
-
kubectl
Se puede aplicar una Azure AKS ClusterClass utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r azure-aks | kubectl apply -f --
Alternativamente, se puede aplicar la Azure AKS ClusterClass directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/azure/aks/clusterclass-aks-example.yaml
-
-
Crea el clúster de Azure AKS a partir del ejemplo de ClusterClass.
El Azure AKS
ClusterClassdel que se crea elClusterutiliza los recursosAzureASOManagedCluster,AzureASOManagedControlPlaneyAzureASOManagedMachinePoolque son gestionados por Azure Service Operator. Por esta razón, no utilizarás unAzureClusterIdentitycomo lo harías para un cluster de Azure autogestionado (por ejemplo, Azure con RKE2). En su lugar, se crea unSecretcon las credenciales del Service Principal en el mismo espacio de nombres que elCluster. Ten en cuenta que la definiciónSecretestá incrustada en el manifiestoClusterpor simplicidad, pero también se puede crear de antemano.Puedes consultar la documentación de Azure Service Operator para obtener más información sobre este método de autenticación.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: v1 kind: Secret metadata: name: aks-credentials stringData: AZURE_SUBSCRIPTION_ID: <AZURE_SUBSCRIPTION_ID> AZURE_TENANT_ID: <AZURE_TENANT_ID> AZURE_CLIENT_ID: <AZURE_CLIENT_ID> AZURE_CLIENT_SECRET: <AZURE_CLIENT_SECRET> type: Opaque --- apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" name: azure-aks-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: class: azure-aks-example variables: - name: location value: <AZURE_LOCATION> - name: resourceGroup value: <AZURE_RESOURCE_GROUP> - name: asoCredentialSecretName value: aks-credentials version: v1.34.2 workers: machinePools: - class: default-system name: system-1 replicas: 1 - class: default-worker name: worker-1 replicas: 1
-
Se puede encontrar una Azure ClusterClass entre los ejemplos de Turtles.
Aplicaciones como el Proveedor de Nube de Azure y Calico CNI se instalarán en clústeres en sentido descendente. Esto se realiza automáticamente al crear el clúster mediante clústeres específicos con etiquetas, como
cloud-provider: azureycni: calico.-
CLI
-
kubectl
Se puede aplicar una Azure RKE2 ClusterClass y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r azure-rke2 | kubectl apply -f --
Alternativamente, se puede aplicar la Azure RKE2 ClusterClass directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/azure/kubeadm/clusterclass-kubeadm-example.yaml -
Además, se necesitará instalar el Proveedor de Nube de Azure en cada clúster en sentido descendente, para que los nodos se inicialicen correctamente. Para este ejemplo, también vamos a instalar Calico como el CNI por defecto.
Podemos hacer esto automáticamente en la creación del clúster utilizando el Proveedor de complemento de API de Cluster Fleet. Primero se necesitan crear dos
HelmOps, para ser aplicados en el nuevo clúster a través de selectores de etiquetas.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/azure/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml
-
-
Crea el clúster de Azure a partir del ejemplo de ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cloud-provider: azure cni: calico name: azure-kubeadm-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: azure-kubeadm-example controlPlane: replicas: 1 variables: - name: subscriptionID value: <AZURE_SUBSCRIPTION_ID> - name: location value: <AZURE_LOCATION> - name: resourceGroup value: <AZURE_RESOURCE_GROUP> - name: azureClusterIdentityName value: cluster-identity version: v1.34.3 workers: machineDeployments: - class: kubeadm-default-worker name: md-0 replicas: 1
-
Se puede encontrar una ClusterClass de AWS EKS entre los ejemplos de Turtles.
-
CLI
-
kubectl
Se puede aplicar una ClusterClass de AWS EKS y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@main -r aws-eks | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de AWS EKS directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/{turtles_version}/examples/clusterclasses/aws/eks/clusterclass-eks-example.yaml
-
-
Crea el clúster de AWS a partir del ejemplo de ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" name: aws-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: aws-eks-example variables: - name: region value: eu-west-2 - name: instanceType value: <AWS_NODE_MACHINE_TYPE> - name: awsClusterIdentityName value: cluster-identity version: v1.32.0 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Se puede encontrar una ClusterClass de AWS Kubeadm entre los ejemplos de Turtles.
Aplicaciones como Calico CNI, AWS Cloud Controller Manager y el AWS EBS CSI Driver se instalarán en los clústeres en sentido descendente. Esto se hace automáticamente al crear el clúster mediante clústeres dirigidos con etiquetas concretas, como
cni: calico,cloud-provider: awsycsi: aws-ebs-csi-driver.-
CLI
-
kubectl
Se puede aplicar una ClusterClass de AWS Kubeadm y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r aws-kubeadm | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de AWS Kubeadm directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/aws/kubeadm/clusterclass-kubeadm-example.yaml -
Para este ejemplo, también vamos a instalar Calico como el CNI por defecto.
-
El AWS Cloud Controller Manager deberá instalarse en cada clúster en sentido descendente para que los nodos sean funcionales.
-
Además, también habilitaremos AWS EBS CSI Driver.
Podemos hacer esto automáticamente en la creación del clúster utilizando el Proveedor de complemento de API de Cluster Fleet. Los
HelmOpsdeben crearse primero, para ser aplicados en el nuevo clúster a través de selectores de etiquetas. Esto se encargará de desplegar Calico, el EBS CSI Driver, y el AWS Cloud Controller Manager en el clúster de trabajo.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/aws/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/aws/calico/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/aws/helm-chart.yaml
-
-
Crea el clúster de AWS a partir del ejemplo ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cni: calico cloud-provider: aws csi: aws-ebs-csi-driver name: aws-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: aws-kubeadm-example controlPlane: replicas: 3 variables: - name: region value: eu-west-2 - name: sshKeyName value: <AWS_SSH_KEY_NAME> - name: controlPlaneMachineType value: <AWS_CONTROL_PLANE_MACHINE_TYPE> - name: workerMachineType value: <AWS_NODE_MACHINE_TYPE> - name: awsClusterIdentityName value: cluster-identity version: v1.32.0 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
|
Antes de crear un clúster de trabajo AWS+RKE2, es necesario construir una AMI para la versión de RKE2 que se va a instalar en el clúster o encontrar una que funcione para instalaciones no aisladas. Puedes seguir los pasos en el README del generador de imágenes RKE2 para construir la AMI. |
-
Se puede encontrar una ClusterClass de AWS RKE2 entre los ejemplos de Turtles.
Aplicaciones como Calico CNI, AWS Cloud Controller Manager y el AWS EBS CSI Driver se instalarán en los clústeres en sentido descendente. Esto se hace automáticamente al crear el clúster mediante clústeres dirigidos con etiquetas concretas, como
cni: calico,cloud-provider: awsycsi: aws-ebs-csi-driver.-
CLI
-
kubectl
Se puede aplicar una ClusterClass de AWS RKE2 y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r aws-rke2 | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de AWS RKE2 directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/aws/rke2/clusterclass-ec2-rke2-example.yaml
-
-
Para este ejemplo, también vamos a instalar Calico como el CNI por defecto.
-
El AWS Cloud Controller Manager deberá instalarse en cada clúster en sentido descendente para que los nodos sean funcionales.
-
Además, también habilitaremos AWS EBS CSI Driver.
Podemos hacer esto automáticamente en la creación del clúster utilizando el Proveedor de complemento de API de Cluster Fleet. Los
HelmOpsdeben crearse primero, para ser aplicados en el nuevo clúster a través de selectores de etiquetas. Esto se encargará de desplegar Calico, el EBS CSI Driver y el AWS Cloud Controller Manager en el clúster de trabajo.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/aws/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/aws/calico/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/aws/helm-chart.yaml -
Crea el clúster de AWS a partir del ejemplo de ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cloud-provider: aws cni: calico csi: aws-ebs-csi-driver cluster-api.cattle.io/rancher-auto-import: "true" name: aws-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: aws-rke2-example controlPlane: replicas: 3 variables: - name: cni value: none - name: region value: <AWS_REGION> - name: sshKeyName value: <AWS_SSH_KEY_NAME> - name: controlPlaneMachineType value: <AWS_RKE2_CONTROL_PLANE_MACHINE_TYPE> - name: workerMachineType value: <AWS_RKE2_NODE_MACHINE_TYPE> - name: amiID value: <AWS_AMI_ID> - name: awsClusterIdentityName value: cluster-identity version: v1.35.0+rke2r1 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Se puede encontrar una ClusterClass de GCP GKE entre los ejemplos de Turtles.
-
CLI
-
kubectl
Se puede aplicar una ClusterClass de GCP GKE y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@main -r gcp-gke | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de GCP GKE directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/{turtles_version}/examples/clusterclasses/gcp/gke/clusterclass-gke-example.yaml
-
-
Crea el clúster de GCP a partir del ejemplo ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" name: gcp-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: gcp-gke-example variables: - name: project value: ${GCP_PROJECT} - name: region value: ${GCP_REGION} - name: networkName value: ${GCP_NETWORK_NAME} version: v1.35.0 workers: machinePools: - class: default-system name: system-pool replicas: ${WORKER_MACHINE_COUNT} - class: default-worker name: worker-pool replicas: ${WORKER_MACHINE_COUNT}
|
Antes de crear un clúster de trabajo GCP+Kubeadm, es necesario construir una imagen para la versión de Kubernetes que se va a instalar en el clúster o encontrar una que funcione para tu caso de uso. Puedes seguir los pasos en el libro del generador de imágenes de Kubernetes GCP. |
-
Se puede encontrar una ClusterClass de GCP Kubeadm entre los ejemplos de Turtles.
Aplicaciones como Calico CNI y GCP Cloud Controller Manager se instalarán en los clústeres en sentido descendente. Esto se realiza automáticamente en la creación del clúster mediante clústeres específicos con etiquetas concretas, como
cni: calicoycloud-provider: gcp.-
CLI
-
kubectl
Se puede aplicar una ClusterClass de GCP Kubeadm y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r gcp-kubeadm | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de GCP Kubeadm directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/gcp/kubeadm/clusterclass-kubeadm-example.yaml -
Para este ejemplo, también vamos a instalar Calico como el CNI por defecto.
-
El GCP Cloud Controller Manager deberá ser instalado en cada clúster en sentido descendente para que los nodos sean funcionales.
Podemos hacer esto automáticamente al crear el clúster utilizando una combinación de Proveedor de complemento de API de Cluster Fleet y Fleet Bundle. El
HelmOpsdebe crearse primero, para ser aplicado en el nuevo clúster a través de selectores de etiquetas. Esto se encargará de desplegar Calico.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yamlUn
Bundlese encargará de desplegar el GCP Cloud Controller Manager. La razón por la que no se utiliza el Proveedor de complemento de API de Cluster Fleet es que GCP Cloud Controller Manager no proporciona un gráfico de Helm, por lo que optamos por crear el recurso FleetBundledirectamente.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/gcp/bundle.yaml
-
-
Crea el clúster de GCP a partir del ejemplo ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya. La configuración predeterminada del GCP Cloud Controller Manager está configurada para usar un clúster de zona única, por lo que la variable
clusterFailureDomainsse establece en una sola zona. Si necesitas aprovisionar un clúster de múltiples zonas, te recomendamos que inspecciones los parámetros proporcionados por GCP Cloud Controller Manager y cómo CAPG aprovecha estas variables para crear configuraciones específicas del clúster.apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cni: calico cloud-provider: gcp name: gcp-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: gcp-kubeadm-example controlPlane: replicas: 1 workers: machineDeployments: - class: "default-worker" name: "md-0" replicas: 1 variables: - name: gcpProject value: <GCP_PROJECT> - name: region value: <GCP_REGION> - name: gcpNetworkName value: <GCP_NETWORK_NAME> - name: clusterFailureDomains value: - "<GCP_REGION>-a" - name: imageId value: <GCP_IMAGE_ID> - name: machineType value: <GCP_MACHINE_TYPE> version: v1.34.1
-
Una Docker Kubeadm ClusterClass se puede encontrar entre los ejemplos de Turtles.
Aplicaciones como Calico CNI se instalarán en los clústeres en sentido descendente. Esto se hace automáticamente al crear el clúster mediante clústeres dirigidos con etiquetas específicas, como
cni: calico.-
CLI
-
kubectl
Se puede aplicar una ClusterClass de Docker Kubeadm y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r docker-kubeadm | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de Docker Kubeadm directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/docker/kubeadm/clusterclass-docker-kubeadm.yaml -
Para este ejemplo, también vamos a instalar Calico como el CNI por defecto.
Podemos hacer esto automáticamente en la creación del clúster utilizando el Proveedor de complemento de API de Cluster Fleet. Primero se necesitan crear dos
HelmOps, para ser aplicados en el nuevo clúster a través de selectores de etiquetas.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml
-
-
Crea el clúster de Docker Kubeadm a partir del ejemplo de ClusterClass.
Ten en cuenta que algunas variables quedan a cargo del usuario para que las sustituya.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: name: docker-kubeadm-quickstart labels: cni: calico spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 serviceDomain: cluster.local services: cidrBlocks: - 10.96.0.0/24 topology: classRef: name: docker-kubeadm-example controlPlane: replicas: 1 version: v1.35.0 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Se puede encontrar una ClusterClass de Docker RKE2 entre los ejemplos de Turtles.
Aplicaciones como Calico CNI se instalarán en los clústeres en sentido descendente. Esto se hace automáticamente al crear el clúster mediante clústeres dirigidos con etiquetas específicas, como
cni: calico.-
CLI
-
kubectl
Se puede aplicar una ClusterClass de Docker RKE2 y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r docker-rke2 | kubectl apply -f --
Alternativamente, puedes aplicar la ClusterClass de Docker RKE2 directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/docker/rke2/clusterclass-docker-rke2.yaml -
Para este ejemplo, también vamos a instalar Calico como el CNI por defecto.
Podemos hacer esto automáticamente en la creación del clúster utilizando el Proveedor de complemento de API de Cluster Fleet. Primero se necesitan crear dos
HelmOps, para ser aplicados en el nuevo clúster a través de selectores de etiquetas.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml -
Crea el ConfigMap de LoadBalancer para el clúster Docker RKEv2.
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/lb/docker/configmap.yaml
-
-
Crea el clúster Docker Kubeadm a partir de la ClusterClass de ejemplo.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: name: docker-rke2-example labels: cni: calico annotations: cluster-api.cattle.io/upstream-system-agent: "true" spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/24 serviceDomain: cluster.local topology: classRef: name: docker-rke2-example controlPlane: replicas: 1 variables: - name: rke2CNI value: none - name: dockerImage value: kindest/node:v1.35.0 version: v1.35.0+rke2r1 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Se puede encontrar una ClusterClass de vSphere entre los ejemplos de Tortugas.
Aplicaciones como el Proveedor de Nube de vSphere, el controlador CSI de vSphere y Calico CNI se instalarán en los clústeres descendentes. Esto se realiza automáticamente en la creación del clúster mediante clústeres específicos con etiquetas concretas, como
cloud-provider: vsphere,csi: vsphereycni: calico.-
CLI
-
kubectl
Se puede aplicar una ClusterClass de vSphere Kubeadm y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r vsphere-kubeadm | kubectl apply -f --
Alternativamente, se puede aplicar la ClusterClass de vSphere Kubeadm directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/vsphere/kubeadm/clusterclass-kubeadm-example.yaml -
Además, será necesario instalar el Proveedor de Nube de vSphere en cada clúster descendente, para que los nodos se inicialicen correctamente. Se utilizará el controlador de Interfaz de Almacenamiento de Contenedores (CSI) para vSphere como solución de almacenamiento. Finalmente, para este ejemplo vamos a instalar Calico como el CNI por defecto. Podemos instalar todas las aplicaciones automáticamente en la creación del clúster utilizando el Proveedor de complemento de API de clúster Fleet. Primero se deben crear dos
HelmOps, que se aplicarán en el nuevo clúster a través de selectores de etiquetas.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/vsphere/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yamlDado que el controlador CSI de vSphere no está empaquetado en Helm, vamos a incluir su manifiesto completo en un paquete Fleet, que se aplicará al clúster descendente.
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/vsphere/bundle.yaml
-
-
Configuración del clúster
El Proveedor de Nube de vSphere y el controlador CSI de vSphere necesitan una configuración adicional que se aplicará en el clúster descendente. De manera similar a los pasos anteriores, podemos crear dos paquetes Fleet adicionales, que se aplicarán al clúster descendente. Por favor, ten en cuenta que estos paquetes están configurados para dirigirse al clúster descendente por nombre:
vsphere-kubeadm-quickstart. Si utilizas un nombre diferente para tu clúster, cambia los objetivos de los paquetes en consecuencia.kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-csi-config spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-config-secret namespace: vmware-system-csi stringData: csi-vsphere.conf: |+ [Global] thumbprint = "<VSPHERE_THUMBPRINT>" [VirtualCenter "<VSPHERE_SERVER>"] user = "<VSPHERE_USER>" password = "<VSPHERE_PASSWORD>" datacenters = "<VSPHERE_DATACENTED>" [Network] public-network = "<VSPHERE_NETWORK>" [Labels] zone = "" region = "" targets: - clusterSelector: matchLabels: csi: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-kubeadm-quickstart' --- kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-cloud-credentials spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-cloud-secret namespace: kube-system stringData: <VSPHERE_SERVER>.password: "<VSPHERE_PASSWORD>" <VSPHERE_SERVER>.username: "<VSPHERE_USER>" targets: - clusterSelector: matchLabels: cloud-provider: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-kubeadm-quickstart' -
Crea el clúster vSphere a partir de la ClusterClass de ejemplo.
Ten en cuenta que para este ejemplo estamos utilizando kube-vip como un equilibrador de carga del plano de control. El
KUBE_VIP_INTERFACEse utilizará para enlazar elCONTROL_PLANE_IPen modo ARP. Dependiendo de tu sistema operativo y la configuración de tu dispositivo de red, necesitas configurar este valor en consecuencia - por ejemplo, aeth0. El manifiesto estáticokube-vipestá incrustado en la definición de ClusterClass. Para más información sobre cómo generar un manifiesto estático de kube-vip para tus propias ClusterClasses, por favor consulta la documentación oficial.apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cni: calico cloud-provider: vsphere csi: vsphere cluster-api.cattle.io/rancher-auto-import: "true" name: 'vsphere-kubeadm-quickstart' spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: vsphere-kubeadm-example version: v1.35.0 controlPlane: replicas: 3 workers: machineDeployments: - class: vsphere-kubeadm-example-worker name: md-0 replicas: 1 variables: - name: vSphereClusterIdentityName value: cluster-identity - name: vSphereTLSThumbprint value: <VSPHERE_THUMBPRINT> - name: vSphereDataCenter value: <VSPHERE_DATACENTER> - name: vSphereDataStore value: <VSPHERE_DATASTORE> - name: vSphereFolder value: <VSPHERE_FOLDER> - name: vSphereNetwork value: <VSPHERE_NETWORK> - name: vSphereResourcePool value: <VSPHERE_RESOURCE_POOL> - name: vSphereServer value: <VSPHERE_SERVER> - name: vSphereTemplate value: <VSPHERE_TEMPLATE> - name: controlPlaneIpAddr value: <CONTROL_PLANE_IP> - name: controlPlanePort value: 6443 - name: sshKey value: <SSH_KEY> - name: kubeVIPInterface value: <KUBE_VIP_INTERFACE>
-
Se puede encontrar una ClusterClass de vSphere entre los ejemplos de Tortugas.
Aplicaciones como el Proveedor de Nube de vSphere, el controlador CSI de vSphere y Calico CNI se instalarán en los clústeres descendentes. Esto se realiza automáticamente en la creación del clúster mediante clústeres específicos con etiquetas concretas, como
cloud-provider: vsphere,csi: vsphereycni: calico.-
CLI
-
kubectl
Se puede aplicar la ClusterClass de vSphere RKE2 y las aplicaciones asociadas utilizando la herramienta de ejemplos:
go run github.com/rancher/turtles/examples@v0.26.0 -r vsphere-rke2 | kubectl apply -f --
Alternativamente, se puede aplicar la ClusterClass de vSphere RKE2 directamente utilizando kubectl:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/vsphere/rke2/clusterclass-rke2-example.yaml -
Además, será necesario instalar el Proveedor de Nube de vSphere en cada clúster descendente, para que los nodos se inicialicen correctamente. Se utilizará el controlador de Interfaz de Almacenamiento de Contenedores (CSI) para vSphere como solución de almacenamiento. Finalmente, para este ejemplo vamos a instalar Calico como el CNI por defecto.
Podemos instalar todas las aplicaciones automáticamente al crear el clúster utilizando el Proveedor de complemento de API de clúster Fleet. Primero se necesitan crear dos
HelmOps, para ser aplicados en el nuevo clúster a través de selectores de etiquetas.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/vsphere/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yamlDado que el controlador CSI de vSphere no está empaquetado en Helm, vamos a incluir su manifiesto completo en un paquete Fleet, que se aplicará al clúster descendente.
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/vsphere/bundle.yaml
-
-
Configuración del clúster
El Proveedor de Nube de vSphere y el controlador CSI de vSphere necesitan una configuración adicional que se aplicará en el clúster descendente. De manera similar a los pasos anteriores, podemos crear dos paquetes Fleet adicionales, que se aplicarán al clúster descendente. Por favor, ten en cuenta que estos paquetes están configurados para dirigirse al clúster descendente por nombre:
vsphere-rke2-quickstart. Si utilizas un nombre diferente para tu clúster, cambia los objetivos de los paquetes en consecuencia.kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-csi-config spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-config-secret namespace: vmware-system-csi stringData: csi-vsphere.conf: |+ [Global] thumbprint = "<VSPHERE_THUMBPRINT>" [VirtualCenter "<VSPHERE_SERVER>"] user = "<VSPHERE_USER>" password = "<VSPHERE_PASSWORD>" datacenters = "<VSPHERE_DATACENTED>" [Network] public-network = "<VSPHERE_NETWORK>" [Labels] zone = "" region = "" targets: - clusterSelector: matchLabels: csi: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-rke2-quickstart' --- kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-cloud-credentials spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-cloud-secret namespace: kube-system stringData: <VSPHERE_SERVER>.password: "<VSPHERE_PASSWORD>" <VSPHERE_SERVER>.username: "<VSPHERE_USER>" targets: - clusterSelector: matchLabels: cloud-provider: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-rke2-quickstart' -
Crea el clúster vSphere a partir de la ClusterClass de ejemplo.
Ten en cuenta que para este ejemplo estamos utilizando kube-vip como un equilibrador de carga del plano de control. El
KUBE_VIP_INTERFACEse utilizará para enlazar elCONTROL_PLANE_IPen modo ARP. Dependiendo de tu sistema operativo y la configuración de tu dispositivo de red, necesitas configurar este valor en consecuencia - por ejemplo, aeth0. El manifiesto estáticokube-vipestá incrustado en la definición de ClusterClass. Para más información sobre cómo generar un manifiesto estático de kube-vip para tus propias ClusterClasses, por favor consulta la documentación oficial. En caso de que estés utilizando una plantilla de VM basada en SUSE Linux Micro, puedes proporcionar opcionalmente una variableproductKeypara habilitar el registro automático de SL Micro contra el Centro de Clientes de SUSE.apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cni: calico cloud-provider: vsphere csi: vsphere cluster-api.cattle.io/rancher-auto-import: "true" name: 'vsphere-rke2-quickstart' spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: vsphere-rke2-example version: v1.35.0+rke2r1 controlPlane: replicas: 3 workers: machineDeployments: - class: vsphere-rke2-example-worker name: md-0 replicas: 1 variables: - name: vSphereClusterIdentityName value: cluster-identity - name: vSphereTLSThumbprint value: <VSPHERE_THUMBPRINT> - name: vSphereDataCenter value: <VSPHERE_DATACENTER> - name: vSphereDataStore value: <VSPHERE_DATASTORE> - name: vSphereFolder value: <VSPHERE_FOLDER> - name: vSphereNetwork value: <VSPHERE_NETWORK> - name: vSphereResourcePool value: <VSPHERE_RESOURCE_POOL> - name: vSphereServer value: <VSPHERE_SERVER> - name: vSphereTemplate value: <VSPHERE_TEMPLATE> - name: controlPlaneIpAddr value: <CONTROL_PLANE_IP> - name: controlPlanePort value: 6443 - name: sshKey value: <SSH_KEY> - name: kubeVIPInterface value: <KUBE_VIP_INTERFACE> - name: productKey value: <SL_MICRO_PRODUCT_KEY>