hetzner: Move out of alpha and drop feature flag

This commit is contained in:
Ciprian Hacman 2022-09-19 09:57:24 +03:00
parent d8ce157d81
commit 81b4bb0717
14 changed files with 25 additions and 258 deletions

View File

@ -1,221 +0,0 @@
# kOps - Operaciones con Kubernetes
[![Go Report Card](https://goreportcard.com/badge/k8s.io/kops)](https://goreportcard.com/report/k8s.io/kops) [![GoDoc Widget]][GoDoc]
[GoDoc]: https://pkg.go.dev/k8s.io/kops
[GoDoc Widget]: https://godoc.org/k8s.io/kops?status.svg
La forma más fácil de poner en marcha un cluster Kubernetes en producción.
## ¿Qué es kOps?
Queremos pensar que es algo como `kubectl` para clusters.
`kops` ayuda a crear, destruir, mejorar y mantener un grado de producción, altamente
disponible, desde las líneas de commando de Kubernetes clusters. AWS (Amazon Web Services)
está oficialmente soportado actualmente, con GCE en soporte beta , y VMware vSphere
en alpha, y otras plataformas planeadas.
## ¿Puedo verlo en acción?
<p align="center">
<a href="https://asciinema.org/a/97298">
<img src="https://asciinema.org/a/97298.png" width="885"></image>
</a>
</p>
## Lanzando un anfitrión de Kubernetes cluster en AWS o GCE
Para reproducir exactamente el demo anterior, visualizalo en el [tutorial](/docs/getting_started/aws.md) para
lanzar un anfitrión de Kubernetes cluster en AWS.
Para instalar un Kubernetes cluster en GCE por fabor siga esta [guide](/docs/getting_started/gce.md).
## Caracteristicas
* Automatiza el aprovisionamiento de Kubernetes clusters en [AWS](/docs/getting_started/aws.md) y [GCE](/docs/getting_started/gce.md)
* Un Despliegue Altamente Disponible (HA) Kubernetes Masters
* Construye en un modelo de estado sincronizado para **dry-runs** y **idempotency** automático
* Capacidad de generar [Terraform](/docs/terraform.md)
* Soporta un Kubernetes personalizado [add-ons](/docs/operations/addons.md)
* Línea de commando [autocompletion](/docs/cli/kops_completion.md)
* YAML Archivo de Manifiesto Basado en API [Configuration](/docs/manifests_and_customizing_via_api.md)
* [Templating](/docs/cluster_template.md) y ejecutar modos de simulacro para crear
Manifiestos
* Escoge de ocho proveedores CNI diferentes [Networking](/docs/networking.md)
* Capacidad para añadir contenedores, como enganches, y archivos a nodos vía [cluster manifest](/docs/cluster_spec.md)
## Documentación
La documentación está en el directorio `/docs`, [and the index is here.](docs/README.md)
## Compatibilidad de Kubernetes con el Lanzamiento
### Soporte de la Versión Kubernetes
kOps está destinado a ser compatible con versiones anteriores. Siempre es recomendado utilizar la
última versión de kOps con cualquier versión de Kubernetes que estés utilizando. Siempre
utilize la última versión de kOps.
Una excepción, en lo que respecta a la compatibilidad, kOps soporta el equivalente a
un número de versión menor de Kubernetes. Una versión menor es el segundo dígito en el
número de versión. la versión de kOps 1.8.0 tiene una versión menor de 8. La numeración
sigue la especificación de versión semántica, MAJOR.MINOR.PATCH.
Por ejemplo kOps, 1.8.0 no soporta Kubernetes 1.9.2, pero kOps 1.9.0
soporta Kubernetes 1.9.2 y versiones anteriores de Kubernetes. Sólo cuando coincide la versión
menor de kOps, La versión menor de kubernetes hace que kOps soporte oficialmente
el lanzamiento de kubernetes. kOps no impide que un usuario instale versiones
no coincidentes de K8, pero las versiones de Kubernetes siempre requieren kOps para instalar
versiones de componentes como docker, probado contra la versión
particular de Kubernetes.
#### Compatibilidad Matrix
| kOps version | k8s 1.19.x | k8s 1.20.x | k8s 1.21.x | k8s 1.22.x | k8s 1.23.x |
|---------------|------------|------------|------------|------------|------------|
| 1.23.0 | ✔ | ✔ | ✔ | ✔ | ✔ |
| 1.22.x | ✔ | ✔ | ✔ | ✔ | ⚫ |
| ~~1.21.x~~ | ✔ | ✔ | ✔ | ⚫ | ⚫ |
| ~~1.20.x~~ | ✔ | ✔ | ⚫ | ⚫ | ⚫ |
| ~~1.19.x~~ | ✔ | ⚫ | ⚫ | ⚫ | ⚫ |
Utilice la última versión de kOps para todas las versiones de Kubernetes, con la advertencia de que las versiones más altas de Kubernetes no cuentan con el respaldo _oficial_ de kOps.
### Cronograma de Lanzamiento de kOps
Este proyecto no sigue el cronograma de lanzamiento de Kubernetes. `kops` tiene como objetivo
proporcionar una experiencia de instalación confiable para Kubernetes, y, por lo general, se lanza
aproximadamente un mes después de la publicación correspondiente de Kubernetes. Esta vez, permite que el proyecto Kubernetes resuelva los problemas que presenta la nueva versión y garantiza que podamos admitir las funciones más recientes. kOps lanzará pre-lanzamientos alfa y beta para las personas que están ansiosas por probar la última versión de Kubernetes.
Utilice únicamente lanzamientos pre-GA kOps en ambientes que puedan tolerar las peculiaridades de las nuevas versiones, e informe cualquier problema que surja.
## Instalación
### Requisito previo
`kubectl` es requerido, visualize [here](http://kubernetes.io/docs/user-guide/prereqs/).
### OSX desde Homebrew
```console
brew update && brew install kops
```
El binario `kops` también está disponible a través de nuestro [releases](https://github.com/kubernetes/kops/releases/latest).
### Linux
```console
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops
```
## Historial de Versiones
visualize el [releases](https://github.com/kubernetes/kops/releases) para más
información sobre cambios entre lanzamientos.
## Involucrarse y Contribuir
¿Estás interesado en contribuir con kOps? Nosotros, los mantenedores y la comunidad,
nos encantaría sus sugerencias, contribuciones y ayuda.
Tenemos una guía de inicio rápido en [adding a feature](/docs/development/adding_a_feature.md). Además, se
puede contactar a los mantenedores en cualquier momento para obtener más información sobre
cómo involucrarse.
Con el interés de involucrar a más personas con kOps, estamos comenzando a
etiquetar los problemas con `good-starter-issue`. Por lo general, se trata de problemas que tienen
un alcance menor, pero que son buenas maneras de familiarizarse con la base de código.
También alentamos a TODOS los participantes activos de la comunidad a actuar como si fueran
mantenedores, incluso si no tiene permisos de escritura "oficiales".Este es un
esfuerzo de la comunidad, estamos aquí para servir a la comunidad de Kubernetes.
Si tienes un interés activo y quieres involucrarte, ¡tienes verdadero poder!
No asuma que las únicas personas que pueden hacer cosas aquí son los "mantenedores".
También nos gustaría agregar más mantenedores "oficiales", así que
¡muéstranos lo que puedes hacer!
Lo que esto significa:
__Issues__
* Ayude a leer y clasifique los problemas, ayúdelo cuando sea posible.
* Señale los problemas que son duplicados, desactualizados, etc.
- Incluso si no tiene permisos para etiquetar, tome nota y etiquete mantenedores (`/close`,`/dupe #127`).
__Pull Requests__
* Lee y revisa el código. Deja comentarios, preguntas y críticas (`/lgtm` ).
* Descargue, compile y ejecute el código y asegúrese de que las pruebas pasen (make test).
- También verifique que la nueva característica parezca cuerda, siga los mejores patrones arquitectónicos e incluya pruebas.
Este repositorio usa los bots de Kubernetes. Hay una lista completa de los commandos [aqui](https://go.k8s.io/bot-commands).
## Horas de Oficina
Los mantenedores de kOps reservaron una hora cada dos semanas para **horas de oficina** públicas. Los horarios de oficina se alojan en un [zoom video chat](https://zoom.us/j/97072789944?pwd=VVlUR3dhN2h5TEFQZHZTVVd4SnJUdz09) los viernes en [5 pm UTC/12 noon ET/9 am US Pacific](http://www.worldtimebuddy.com/?pl=1&lid=100,5,8,12), en semanas impares numeradas. Nos esforzamos por conocer y ayudar a los programadores, ya sea trabajando en `kops` o interesados en conocer más sobre el proyecto.
### Temas Abiertos en Horas de Oficina
Incluye pero no limitado a:
- Ayuda y guía para aquellos que asisten, que están interesados en contribuir.
- Discuta el estado actual del proyecto kOps, incluidas las versiones.
- Diseña estrategias para mover `kops` hacia adelante.
- Colabora sobre PRs abiertos y próximos.
- Presenta demos.
Esta vez se enfoca en los programadores, aunque nunca rechazaremos a un participante cortés. Pase por alto, incluso si nunca ha instalado kOps.
Le recomendamos que se comunique **de antemano** si planea asistir. Puedes unirte a cualquier sesión y no dudes en agregar un elemento a la [agenda](https://docs.google.com/document/d/12QkyL0FkNbWPcLFxxRGSPt_tNPBHbmni3YLY-lHny7E/edit) donde rastreamos notas en el horario de oficina.
Los horarios de oficina están alojados en una [Zoom](https://zoom.us/j/97072789944?pwd=VVlUR3dhN2h5TEFQZHZTVVd4SnJUdz09) video conferencia, celebrada los viernes a las [5 pm UTC/12 noon ET/9 am US Pacific](http://www.worldtimebuddy.com/?pl=1&lid=100,5,8,12) cada otra semana impare numerada.
Puede verificar su número de semana utilizando:
```bash
date +%V
```
Los mantenedores y otros miembros de la comunidad están generalmente disponibles en [kubernetes slack](https://github.com/kubernetes/community/blob/master/communication.md#social-media) en [#kops](https://kubernetes.slack.com/messages/kops/), ¡así que ven y conversa con nosotros sobre cómo los kOps pueden ser mejores para ti!
## GitHub Issues
### Errores
Si cree que ha encontrado un error, siga las instrucciones a continuación.
- Dedique una pequeña cantidad de tiempo a prestar la debida diligencia al rastreador de problemas. Tu problema puede ser un duplicado.
- Establezca la `-v 10` línea de commando y guarde la salida de los registros. Por favor pegue esto en su issue.
- Note the version of kOps you are running (from `kops version`), and the command line options you are using.
- Abra un [new issue](https://github.com/kubernetes/kops/issues/new).
- Recuerde que los usuarios pueden estar buscando su issue en el futuro, por lo que debe darle un título significativo para ayudar a otros.
- No dude en comunicarse con la comunidad de kOps en [kubernetes slack](https://github.com/kubernetes/community/blob/master/communication.md#social-media).
### Caracteristicas
También usamos el rastreador de problemas para rastrear características. Si tiene una idea para una función, o cree que puede ayudar a que los kOps se vuelvan aún más impresionantes, siga los pasos a continuación.
- Abra un [new issue](https://github.com/kubernetes/kops/issues/new).
- Recuerde que los usuarios pueden estar buscando su issue en el futuro, por lo que debe darle un título significativo para ayudar a otros.
- Defina claramente el caso de uso, usando ejemplos concretos. P EJ: Escribo `esto` y kOps hace `eso`.
- Algunas de nuestras características más grandes requerirán algún diseño. Si desea incluir un diseño técnico para su función, inclúyalo en el problema.
- Después de que la nueva característica sea bien comprendida, y el diseño acordado, podemos comenzar a codificar la característica. Nos encantaría que lo codificaras. Por lo tanto, abra una **WIP** *(trabajo en progreso)* solicitud de extracción, y que tenga una feliz codificación.

View File

@ -15,7 +15,7 @@ We like to think of it as `kubectl` for clusters.
`kops` will not only help you create, destroy, upgrade and maintain production-grade, highly
available, Kubernetes cluster, but it will also provision the necessary cloud infrastructure.
AWS (Amazon Web Services) is currently officially supported, with DigitalOcean, GCE, and OpenStack in beta support, and Azure and AliCloud in alpha.
AWS (Amazon Web Services) and GCE (Google Cloud Platform) are currently officially supported, with DigitalOcean, Hetzner and OpenStack in beta support, and Azure in alpha.
## Can I see it in action?
@ -26,7 +26,7 @@ AWS (Amazon Web Services) is currently officially supported, with DigitalOcean,
</p>
## Installing and launching a Kubernetes cluster hosted on AWS, GCE, DigitalOcean or OpenStack
## Installing and launching a Kubernetes cluster hosted on AWS, GCE, DigitalOcean, Hetzner, OpenStack, Azure
See [Getting Started](https://kops.sigs.k8s.io/getting_started/install/)

View File

@ -58,12 +58,6 @@ func TestCreateClusterMinimal(t *testing.T) {
// TestCreateClusterHetzner runs kops create cluster minimal.k8s.local --zones fsn1
func TestCreateClusterHetzner(t *testing.T) {
t.Setenv("HCLOUD_TOKEN", "REDACTED")
featureflag.ParseFlags("+Hetzner")
unsetFeatureFlags := func() {
featureflag.ParseFlags("-Hetzner")
}
defer unsetFeatureFlags()
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/ha_hetzner", "v1alpha2")
runCreateClusterIntegrationTest(t, "../../tests/integration/create_cluster/minimal_hetzner", "v1alpha2")
}

View File

@ -276,12 +276,6 @@ func TestMinimal_v1_26(t *testing.T) {
// TestHetzner runs the test on a minimum configuration
func TestHetzner(t *testing.T) {
t.Setenv("HCLOUD_TOKEN", "REDACTED")
featureflag.ParseFlags("+Hetzner")
unsetFeatureFlags := func() {
featureflag.ParseFlags("-Hetzner")
}
defer unsetFeatureFlags()
newIntegrationTest("minimal.k8s.local", "minimal_hetzner").
runTestTerraformHetzner(t)
}

View File

@ -73,7 +73,7 @@ kops create cluster [CLUSTER] [flags]
--authorization string Authorization mode: AlwaysAllow or RBAC (default "RBAC")
--bastion Enable a bastion instance group. Only applies to private topology.
--channel string Channel for default versions and configuration to use (default "stable")
--cloud string Cloud provider to use - aws, digitalocean, gce, openstack
--cloud string Cloud provider to use - aws, digitalocean, gce, hetzner, openstack
--cloud-labels string A list of key/value pairs used to tag all instance groups (for example "Owner=John Doe,Team=Some Team").
--container-runtime string Container runtime to use: containerd, docker
--disable-subnet-tags Disable automatic subnet tagging

View File

@ -1,6 +1,7 @@
# Getting Started with kOps on DigitalOcean
**WARNING**: digitalocean support on kOps promoted to **beta** currently meaning it is subject to change, so please use with caution.
**WARNING**: digitalocean support on kOps promoted to **beta**, which means it is in good shape and could be used for production.
However, it is not as rigorously tested as the stable cloud providers and there are some features that might be missing.
## Requirements
@ -94,6 +95,6 @@ kOps for DigitalOcean currently does not support these features:
* kops terraform support for DO
# Next steps
## Next steps
Now that you have a working kOps cluster, read through the [recommendations for production setups guide](production.md) to learn more about how to configure kOps for production workloads.

View File

@ -185,6 +185,6 @@ the command. When run without `--yes` it shows a preview of the objects it will
After you've double-checked you're deleting exactly what you want to delete, run `kops delete cluster simple.k8s.local --yes`.
# Next steps
## Next steps
Now that you have a working kOps cluster, read through the [recommendations for production setups guide](production.md) to learn more about how to configure kOps for production workloads.

View File

@ -1,7 +1,7 @@
# Getting Started with kOps on Hetzner Cloud
**WARNING**: Hetzner Cloud support on kOps is currently in **alpha**, meaning it is subject to change, so please use with caution.
The original issue ticket is [#8983](https://github.com/kubernetes/kops/issues/8983).
**WARNING**: Hetzner Cloud support on kOps is currently in **beta**, which means it is in good shape and could be used for production.
However, it is not as rigorously tested as the stable cloud providers and there are some features that might be missing.
## Requirements
* kOps version >= 1.24
@ -15,7 +15,6 @@ The original issue ticket is [#8983](https://github.com/kubernetes/kops/issues/8
It is important to set the following environment variables:
```bash
export KOPS_FEATURE_FLAGS=Hetzner
export HCLOUD_TOKEN=<token>
export S3_ENDPOINT=<endpoint>
export S3_ACCESS_KEY_ID=<acces-key>
@ -46,10 +45,17 @@ kops create cluster --name=my-cluster.example.k8s.local \
--node-size cpx31
kops update cluster --name=my-cluster.example.k8s.local --yes
# update a cluster
kops update cluster --name=my-cluster.example.k8s.local
kops update cluster --name=my-cluster.example.k8s.local --yes
kops rolling-update cluster --name=my-cluster.example.k8s.local
kops rolling-update cluster --name=my-cluster.example.k8s.local --yes
# validate a cluster
kops validate cluster --name=my-cluster.example.k8s.local
# delete a cluster
kops delete cluster --name=my-cluster.example.k8s.local
kops delete cluster --name=my-cluster.example.k8s.local --yes
# export kubecfg
@ -63,10 +69,9 @@ kops delete cluster --name=my-cluster.example.k8s.local --yes
kOps for Hetzner Cloud currently does not support the following features:
* Multiple SSH keys
* Autoscaling using [Cluster Autoscaler](https://github.com/hetznercloud/autoscaler)
* [Terraform](https://github.com/hetznercloud/terraform-provider-hcloud) support
* Terraform support using [terraform-provider-hcloud](https://github.com/hetznercloud/terraform-provider-hcloud)
# Next steps
## Next steps
Now that you have a working kOps cluster, read through the recommendations for [production setups guide](production.md) to learn more about how to configure kOps for production workloads.

View File

@ -218,6 +218,6 @@ spec:
insecureSkipVerify: true
```
# Next steps
## Next steps
Now that you have a working kOps cluster, read through the [recommendations for production setups guide](production.md) to learn more about how to configure kOps for production workloads.

View File

@ -18,7 +18,7 @@ We like to think of it as `kubectl` for clusters.
`kops` will not only help you create, destroy, upgrade and maintain production-grade, highly
available, Kubernetes cluster, but it will also provision the necessary cloud infrastructure.
[AWS](getting_started/aws.md) (Amazon Web Services) is currently officially supported, with [DigitalOcean](getting_started/digitalocean.md), [GCE](getting_started/gce.md) and [OpenStack](getting_started/openstack.md) in beta support, and [Azure](getting_started/azure.md) in alpha.
[AWS](getting_started/aws.md) (Amazon Web Services) and [GCE](getting_started/gce.md) (Google Cloud Platform) are currently officially supported, with [DigitalOcean](getting_started/digitalocean.md), [Hetzner](getting_started/hetzner.md) and [OpenStack](getting_started/openstack.md) in beta support, and [Azure](getting_started/azure.md) in alpha.
## Can I see it in action?

View File

@ -38,11 +38,11 @@ nav:
- Getting Started:
- Installing: "getting_started/install.md"
- Deploying to AWS: "getting_started/aws.md"
- Deploying to GCE - Alpha: "getting_started/gce.md"
- Deploying to OpenStack - Beta: "getting_started/openstack.md"
- Deploying to GCE: "getting_started/gce.md"
- Deploying to Digital Ocean - Beta: "getting_started/digitalocean.md"
- Deploying to Hetzner - Beta: "getting_started/hetzner.md"
- Deploying to OpenStack - Beta: "getting_started/openstack.md"
- Deploying to Azure - Alpha: "getting_started/azure.md"
- Deploying to Hetzner - Alpha: "getting_started/hetzner.md"
- Deploying to Spot Ocean - Alpha: "getting_started/spot-ocean.md"
- kOps Commands: "getting_started/commands.md"
- kOps Arguments: "getting_started/arguments.md"

View File

@ -26,14 +26,12 @@ func SupportedClouds() []kops.CloudProviderID {
kops.CloudProviderAWS,
kops.CloudProviderDO,
kops.CloudProviderGCE,
kops.CloudProviderHetzner,
kops.CloudProviderOpenstack,
}
if featureflag.Azure.Enabled() {
clouds = append(clouds, kops.CloudProviderAzure)
}
if featureflag.Hetzner.Enabled() {
clouds = append(clouds, kops.CloudProviderHetzner)
}
return clouds
}

View File

@ -90,8 +90,6 @@ var (
Karpenter = new("Karpenter", Bool(false))
// ImageDigest remaps all manifests with image digests
ImageDigest = new("ImageDigest", Bool(true))
// Hetzner toggles the Hetzner Cloud support.
Hetzner = new("Hetzner", Bool(false))
)
// FeatureFlag defines a feature flag

View File

@ -427,9 +427,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
case kops.CloudProviderHetzner:
{
if !featureflag.Hetzner.Enabled() {
return fmt.Errorf("Hetzner Cloud support is currently alpha, and is feature-gated. export KOPS_FEATURE_FLAGS=Hetzner")
}
// Hetzner Cloud support is currently in beta
}
case kops.CloudProviderDO: