Creación de una ampliación
Para desplegar cargas de trabajo en clústeres en sentido descendente, primero crea un repositorio de Git, luego crea un recurso GitRepo y aplícalo.
Este tutorial utiliza el repositorio fleet-examples.
|
Para más detalles sobre cómo estructurar el repositorio y configurar la ampliación de cada bundle, consulta GitRepo Contents. Para más detalles sobre las opciones disponibles por repositorio de Git, consulta Agregar un GitRepo. |
Ejemplos de un solo clúster
Todos los ejemplos desplegarán contenido en clústeres sin personalizaciones por clúster. Este es un buen punto de partida para entender los conceptos básicos de estructurar repositorios de Git paraSUSE® Rancher Prime Continuous Delivery.
-
Helm
-
Helm Multi Chart
-
Helm y Kustomize
-
Kustomize
-
Manifiestos
Un ejemplo utilizando Helm. Estamos desplegando el ejemplo de helm en el clúster local.
El repositorio contiene un gráfico de helm y un fleet.yaml opcional para configurar la ampliación:
namespace: fleet-helm-example
# Custom helm options
helm:
# The release name to use. If empty a generated release name will be used
releaseName: guestbook
# The directory of the chart in the repo. Also any valid go-getter supported
# URL can be used there is specify where to download the chart from.
# If repo below is set this value if the chart name in the repo
chart: ""
# An https to a valid Helm repository to download the chart from
repo: ""
# Used if repo is set to look up the version of the chart
version: ""
# Force recreate resource that can not be updated
force: false
# How long for helm to wait for the release to be active. If the value
# is less that or equal to zero, we will not wait in Helm
timeoutSeconds: 0
# Custom values that will be passed as values.yaml to the installation
values:
replicas: 2
Un ejemplo que despliega múltiples gráficos desde un solo repositorio. Esto es similar al ejemplo anterior, pero desplegará tres gráficos de helm desde las subcarpetas, cada uno configurado por su propio fleet.yaml.
kubectl apply -n fleet-local -f - <<EOF
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: helm
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- single-cluster/helm-multi-chart
EOF
Un ejemplo utilizando Kustomize para modificar un gráfico de Helm de terceros. Desplegará la aplicación de ejemplo de Kubernetes guestbook empaquetada como un gráfico de Helm descargado de una fuente de terceros y modificará el gráfico de helm utilizando Kustomize. La aplicación se desplegará en el espacio de nombres fleet-helm-kustomize-example.
kubectl apply -n fleet-local -f - <<EOF
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: helm
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- single-cluster/helm-kustomize
EOF
Ten en cuenta que el fleet.yaml tiene una clave kustomize: para especificar la vía al kustomization.yaml requerido:
kustomize:
# To use a kustomization.yaml different from the one in the root folder
dir: ""
kubectl apply -n fleet-local -f - <<EOF
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: helm
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- single-cluster/kustomize
EOF
kubectl apply -n fleet-local -f - <<EOF
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: helm
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- single-cluster/manifests
EOF
Ejemplos de múltiples clústeres
Los ejemplos a continuación desplegarán un repositorio git múltiple en varios clústeres a la vez y configurarán la aplicación de manera diferente para cada objetivo.
-
Helm
-
Helm Externo
-
Helm y Kustomize
-
Kustomize
-
Manifiestos
Un ejemplo utilizando Helm. Estamos desplegando el ejemplo de helm y personalizándolo por clúster objetivo.
El repositorio contiene un gráfico de helm y un fleet.yaml opcional para configurar la ampliación. El fleet.yaml se utiliza para configurar diferentes opciones de ampliación, dependiendo de las etiquetas del clúster:
namespace: fleet-mc-helm-example
targetCustomizations:
- name: dev
helm:
values:
replication: false
clusterSelector:
matchLabels:
env: dev
- name: test
helm:
values:
replicas: 3
clusterSelector:
matchLabels:
env: test
- name: prod
helm:
values:
serviceType: LoadBalancer
replicas: 3
clusterSelector:
matchLabels:
env: prod
Para crear la ampliación, aplicamos el recurso personalizado al clúster en sentido ascendente. El espacio de nombres fleet-default, por defecto, contiene los recursos del clúster en sentido descendente. El gráfico se desplegará en todos los clústeres en el espacio de nombres fleet-default, que tienen recursos de clúster etiquetados que coinciden con cualquier entrada bajo targets:.
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: helm
namespace: fleet-default
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- multi-cluster/helm
targets:
- name: dev
clusterSelector:
matchLabels:
env: dev
- name: test
clusterSelector:
matchLabels:
env: test
- name: prod
clusterSelector:
matchLabels:
env: prod
Al aplicar el recurso gitrepo al clúster en sentido ascendente, fleet comenzará a monitorear el repositorio y crear despliegues:
kubectl apply -n fleet-default -f gitrepo.yaml
Un ejemplo utilizando un gráfico de Helm que se descarga de una fuente de terceros y personalizándolo por clúster objetivo. La personalización es similar al ejemplo anterior.
Para crear la ampliación, aplicamos el recurso personalizado al clúster en sentido ascendente. El espacio de nombres fleet-default, por defecto, contiene los recursos del clúster en sentido descendente. El gráfico se desplegará en todos los clústeres en el espacio de nombres fleet-default, que tienen recursos de clúster etiquetados que coinciden con cualquier entrada bajo targets:.
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: helm-external
namespace: fleet-default
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- multi-cluster/helm-external
targets:
- name: dev
clusterSelector:
matchLabels:
env: dev
- name: test
clusterSelector:
matchLabels:
env: test
- name: prod
clusterSelector:
matchLabels:
env: prod
Al aplicar el recurso gitrepo al clúster en sentido ascendente, fleet comenzará a monitorear el repositorio y crear despliegues:
kubectl apply -n fleet-default -f gitrepo.yaml
Un ejemplo utilizando Kustomize para modificar un gráfico de Helm de terceros. Desplegará la aplicación de ejemplo de Kubernetes guestbook empaquetada como un gráfico de Helm descargado de una fuente de terceros y modificará el gráfico de Helm utilizando Kustomize. La aplicación se desplegará en el espacio de nombres fleet-helm-kustomize-example.
La aplicación se personalizará de la siguiente manera por entorno:
-
Clústeres de desarrollo: Solo se despliega el líder de redis y no los seguidores.
-
Clústeres de prueba: Escala la ampliación frontal a 3
-
Clústeres de producción: Escala la ampliación frontal a 3 y establece el tipo de servicio en LoadBalancer
El
fleet.yamlse utiliza para controlar qué superposiciones se utilizan, dependiendo de las etiquetas del clúster:fleet.yamlnamespace: fleet-mc-kustomize-example targetCustomizations: - name: dev clusterSelector: matchLabels: env: dev kustomize: dir: overlays/dev - name: test clusterSelector: matchLabels: env: test kustomize: dir: overlays/test - name: prod clusterSelector: matchLabels: env: prod kustomize: dir: overlays/prodPara crear la ampliación, aplicamos el recurso personalizado al clúster de origen. El espacio de nombres
fleet-default, por defecto, contiene los recursos del clúster de destino. El gráfico se desplegará en todos los clústeres en el espacio de nombres fleet-default, que tienen recursos de clúster etiquetados que coinciden con cualquier entrada bajotargets:.gitrepo.yamlkind: GitRepo apiVersion: fleet.cattle.io/v1alpha1 metadata: name: helm-kustomize namespace: fleet-default spec: repo: https://github.com/rancher/fleet-examples paths: - multi-cluster/helm-kustomize targets: - name: dev clusterSelector: matchLabels: env: dev - name: test clusterSelector: matchLabels: env: test - name: prod clusterSelector: matchLabels: env: prodAl aplicar el recurso gitrepo al clúster de origen, fleet comenzará a monitorear el repositorio y crear despliegues:
kubectl apply -n fleet-default -f gitrepo.yaml
Un ejemplo utilizando Kustomize y personalizándolo por clúster objetivo.
La personalización en fleet.yaml es idéntica al ejemplo de "Helm & Kustomize".
Para crear la ampliación, aplicamos el recurso personalizado al clúster en sentido ascendente. El espacio de nombres fleet-default, por defecto, contiene los recursos del clúster en sentido descendente. El gráfico se desplegará en todos los clústeres en el espacio de nombres fleet-default, que tienen recursos de clúster etiquetados que coinciden con cualquier entrada bajo targets:.
kubectl apply -n fleet-default -f - <<EOF
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
name: kustomize
namespace: fleet-default
spec:
repo: https://github.com/rancher/fleet-examples
paths:
- multi-cluster/kustomize
targets:
- name: dev
clusterSelector:
matchLabels:
env: dev
- name: test
clusterSelector:
matchLabels:
env: test
- name: prod
clusterSelector:
matchLabels:
env: prod
EOF
Al aplicar el recurso gitrepo al clúster en sentido ascendente, fleet comenzará a monitorear el repositorio y crear despliegues:
Un ejemplo utilizando YAML de Kubernetes en bruto y personalizándolo por clúster objetivo. La aplicación se personalizará de la siguiente manera por entorno:
-
Clústeres de desarrollo: Solo se despliega el líder de redis y no los seguidores.
-
Clústeres de prueba: Escala la ampliación frontal a 3
-
Clústeres de producción: Escala la ampliación frontal a 3 y establece el tipo de servicio en LoadBalancer
El
fleet.yamlse utiliza para controlar qué superposiciones 'yaml' se utilizan, dependiendo de las etiquetas del clúster:fleet.yamlnamespace: fleet-mc-manifest-example targetCustomizations: - name: dev clusterSelector: matchLabels: env: dev yaml: overlays: # Refers to overlays/noreplication folder - noreplication - name: test clusterSelector: matchLabels: env: test yaml: overlays: # Refers to overlays/scale3 folder - scale3 - name: prod clusterSelector: matchLabels: env: prod yaml: # Refers to overlays/servicelb, scale3 folders overlays: - servicelb - scale3Para crear la ampliación, aplicamos el recurso personalizado al clúster en sentido ascendente. El espacio de nombres
fleet-default, por defecto, contiene los recursos del clúster en sentido descendente. El gráfico se desplegará en todos los clústeres en el espacio de nombres fleet-default, que tienen recursos de clúster etiquetados que coinciden con cualquier entrada bajotargets:.gitrepo.yamlkind: GitRepo apiVersion: fleet.cattle.io/v1alpha1 metadata: name: manifests namespace: fleet-default spec: repo: https://github.com/rancher/fleet-examples paths: - multi-cluster/manifests targets: - name: dev clusterSelector: matchLabels: env: dev - name: test clusterSelector: matchLabels: env: test - name: prod clusterSelector: matchLabels: env: prodkubectl apply -n fleet-default -f gitrepo.yaml