Puedes autenticar Actions Runner Controller (ARC) en la API de mediante un App o mediante un personal access token (classic).
Nota:
No se puede autenticar mediante un App para los ejecutores en el nivel empresarial. Para más información, consulta Administración del acceso a los ejecutores autohospedados mediante grupos.
Crea un App que pertenezca a una organización. Para más información, consulta Registro de una instancia de App. Configura los datos de App como se indica a continuación.
En "Dirección URL de la página principal", escribe
https://.com/actions/actions-runner-controller
.En "Permisos", haz clic en Permisos de repositorio. A continuación, usa los menús desplegables para seleccionar los siguientes permisos de acceso.
Administración: lectura y escritura
Nota:
Administration: Read and write
solo es necesario al configurar Actions Runner Controller para registrarse en el ámbito del repositorio. No es necesario registrarse en el ámbito de la organización.Metadatos: solo lectura
En "Permisos", haz clic en Permisos de la organización. A continuación, usa los menús desplegables para seleccionar los siguientes permisos de acceso.
- Ejecutores autohospedados: lectura y escritura
Después de crear la App, en la página de la App, anota el valor de "Identificador de aplicación". Usarás este valor más adelante.
En "Claves privadas", haz clic en Generar una clave privada y guarda el archivo
.pem
. Usarás esta clave más adelante.En el menú de la esquina superior izquierda de la página, haz clic en Instalar aplicación y, junto a tu organización, haz clic en Instalar para instalar la aplicación en la organización.
Después de confirmar los permisos de instalación en la organización, anota el id. de instalación de la aplicación. Lo usará más adelante. Puedes encontrar el id. de instalación de la aplicación en la página de instalación de la aplicación, que tiene el siguiente formato de dirección URL:
https://.com/organizations/ORGANIZATION/settings/installations/INSTALLATION_ID
Registra el identificador de la aplicación, el identificador de instalación y el archivo de clave privada
.pem
descargado en Kubernetes como secreto en los pasos anteriores.Para crear un secreto de Kubernetes con los valores de la App, ejecuta el comando siguiente.
Nota:
Crea el secreto en el mismo espacio de nombres donde está instalado el gráfico
gha-runner-scale-set
. En este ejemplo, el espacio de nombres esarc-runners
para que corresponda a la documentación de inicio rápido. Para más información, consulta Inicio rápido para Actions Runner Controller.Bash kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=_app_id=123456 \ --from-literal=_app_installation_id=654321 \ --from-literal=_app_private_key='-----BEGIN RSA PRIVATE KEY-----********'
kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=_app_id=123456 \ --from-literal=_app_installation_id=654321 \ --from-literal=_app_private_key='-----BEGIN RSA PRIVATE KEY-----********'
Después, usa la propiedad
ConfigSecret
de tu copia del archivovalues.yaml
para pasar el nombre del secreto como referencia.ConfigSecret: pre-defined-secret
Para ver más opciones de configuración de Helm, consulta values.yaml
en el repositorio de ARC.
ARC puede usar personal access tokens (classic) para registrar ejecutores autohospedados.
Nota:
Autenticar ARC con un personal access token (classic) es el único método de autenticación admitido para registrar ejecutores en el nivel empresarial.
Crea una personal access token (classic) con los ámbitos requeridos. Los ámbitos necesarios son diferentes en función de si vas a registrar ejecutores en el nivel de repositorio, la organización o la empresa. Para más información sobre cómo crear un personal access token (classic), consulta Administración de tokens de acceso personal.
A continuación se muestra la lista de los ámbitos de personal access token para los ejecutores de ARC.
- Ejecutores del repositorio:
repo
- Ejecutores de la organización:
admin:org
- Ejecutores empresariales:
manage_runners:enterprise
- Ejecutores del repositorio:
Para crear un secreto de Kubernetes con el valor de tu personal access token (classic), usa el comando siguiente.
Nota:
Crea el secreto en el mismo espacio de nombres donde está instalado el gráfico
gha-runner-scale-set
. En este ejemplo, el espacio de nombres esarc-runners
para que corresponda a la documentación de inicio rápido. Para más información, consulta Inicio rápido para Actions Runner Controller.Bash kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=_token='YOUR-PAT'
kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=_token='YOUR-PAT'
En la copia del archivo
values.yaml
, pasa el nombre del secreto como referencia.ConfigSecret: pre-defined-secret
Para ver más opciones de configuración de Helm, consulta
values.yaml
en el repositorio de ARC.
Nota:
La integración del almacén está disponible actualmente en versión preliminar pública con compatibilidad con Azure Key Vault.
A partir de gha-runner-scale-set versión 0.12.0, ARC admite la recuperación de credenciales de desde un almacén externo. La integración del almacén se configura por conjunto de escalado de ejecutor. Esto significa que puedes ejecutar algunos conjuntos de escalado mediante secretos de Kubernetes, mientras que otros usan secretos basados en almacenes, en función de los requisitos operativos y de seguridad.
Para habilitar la integración del almacén para un conjunto de escalado de ejecutores:
- Establece el campo
ConfigSecret
del archivovalues.yaml
en el nombre de la clave secreta almacenada en el almacén. Este valor debe ser una cadena. - Quita la marca de comentario y configure la sección
keyVault
del archivovalues.yaml
con los detalles de acceso y proveedor adecuados. - Proporciona el certificado necesario (
.pfx
) al controlador y al agente de escucha. Puedes hacerlo al: *Volver a generar la imagen del controlador con el certificado incluido o *Montar el certificado como volumen tanto en el controlador como en el agente de escucha mediante los camposlistenerTemplate
ycontrollerManager
.
El secreto almacenado en Azure Key Vault debe estar en formato JSON. La estructura depende del tipo de autenticación que uses:
{
"_token": "TOKEN"
}
{
"_app_id": "APP_ID_OR_CLIENT_ID",
"_app_installation_id": "INSTALLATION_ID",
"_app_private_key": "PRIVATE_KEY"
}
El certificado se almacena como un archivo .pfx y se monta en el contenedor en /akv/cert.pfx. A continuación se muestra un ejemplo de cómo configurar la sección keyVault para usar este certificado para la autenticación:
keyVault:
type: "azure_key_vault"
proxy:
https:
url: "PROXY_URL"
credentialSecretRef: "PROXY_CREDENTIALS_SECRET_NAME"
http: {}
noProxy: []
azureKeyVault:
clientId: <AZURE_CLIENT_ID>
tenantId: <AZURE_TENANT_ID>
url: <AZURE_VAULT_URL>
certificatePath: "/akv/cert.pfx"
ARC requiere un certificado .pfx
para autenticarse con el almacén. Este certificado debe estar disponible tanto para el controlador como para los componentes del agente de escucha durante la instalación del controlador. Para ello, monta el certificado como volumen mediante los campos controllerManager
y listenerTemplate
del archivo values.yaml
:
volumes:
- name: cert-volume
secret:
secretName: my-cert-secret
volumeMounts:
- mountPath: /akv
name: cert-volume
readOnly: true
listenerTemplate:
volumeMounts:
- name: cert-volume
mountPath: /akv/certs
readOnly: true
volumes:
- name: cert-volume
secret:
secretName: my-cert-secret
El código siguiente es un ejemplo de un archivo values.yml
de conjunto de escalado.
listenerTemplate:
spec:
containers:
- name: listener
volumeMounts:
- name: cert-volume
mountPath: /akv
readOnly: true
volumes:
- name: cert-volume
secret:
secretName: my-cert-secret
Algunas partes se han adaptado a partir de https://.com/actions/actions-runner-controller/ con licencia Apache-2.0:
Copyright 2019 Moto Ishizawa
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.