Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Ativar um Workflow de Ações GitHub para Acessar um Cluster do Kubernetes usando a Autenticação do OKE OpenID Connect
Introdução
Neste tutorial, autorizamos um workflow de Ações GitHub para executar um comando do Kubernetes em um cluster do Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE). Usando a autenticação nativa do OpenID Connect (OIDC) do GitHub, você pode evitar o gerenciamento de credenciais de longa duração e simplificar o acesso seguro e automatizado aos seus clusters do OKE, permitindo fluxos de trabalho de Integração Contínua e Implantação Contínua (CI/CD) mais eficientes.
Objetivos
- Ative o workflow de Ações GitHub para acessar um cluster do Kubernetes usando a autenticação do OKE OIDC.
Tarefa 1: Criar um Repositório GitHub
Crie um novo repositório na sua conta GitHub. Digite o nome da sua conta ou da sua organização e o nome do seu repositório.
Tarefa 2: Configurar um Cluster do OKE
-
Crie um cluster do Kubernetes com o OKE ou selecione um cluster existente para atualizar e anotar o OCID (Oracle Cloud Identifier) do cluster. Para obter mais informações, consulte Criando Clusters do Kubernetes Usando Workflows da Console.
-
Crie um arquivo JSON para atualizar o cluster com as informações a seguir.
- isOpenIdConnectAuthEnabled: Digite
true
. - issuerUrl: Digite
"https://token.actions.githubusercontent.com"
. - clientId: Informe seu valor. Neste exemplo, usamos
"oke-kubernetes-cluster"
. Esse valor deve corresponder ao público-alvo no workflow de Ações GitHub. - requiredClaim: Digite
["repository=GH_ACCOUNT/REPO", "workflow=NAME", "ref=refs/heads/main"]
. - usernameClaim: Digite
"sub"
. - usernamePrefix: Digite
"actions-oidc:"
.
Substitua os valores
GH_ACCOUNT
eREPO
pelos seus valores. O arquivo JSON deve ter a seguinte aparência:{ "openIdConnectTokenAuthenticationConfig": { "isOpenIdConnectAuthEnabled": true, "clientId": "oke-kubernetes-cluster", "issuerUrl": "https://token.actions.githubusercontent.com", "usernameClaim": "sub", "usernamePrefix": "actions-oidc:", "requiredClaim": [ "repository=gregvers/testoidc", "workflow=oke-oidc", "ref=refs/heads/main" ], "caCertificate": null, "signingAlgorithms": [ "RS256" ] } }
- isOpenIdConnectAuthEnabled: Digite
-
Execute o comando CLI (Interface de Linha de Comando) do OCI para atualizar o cluster com seu arquivo JSON. Substitua
CLUSTER_OCID
pelos seus valores.oci ce cluster update --cluster-id CLUSTER_OCID --from-json file://./update.json
Tarefa 3: Configurar o Tráfego de Rede de Saída
Permita que o servidor de API do cluster saia do tráfego para GitHub adicionando uma regra de segurança à lista de segurança da sub-rede de suas regras de segurança designadas ao ponto final da API do Kubernetes do cluster.
Tarefa 4: Configurar o Controle de Acesso Baseado em Atribuição (RBAC) do Kubernetes
Configure o RBAC no cluster do Kubernetes para autorizar o workflow de Ações GitHub a executar determinadas operações (get/watch/list pods e get/watch/list/create/update/delete deployments) usando o arquivo YAML a seguir. Atualize a seguinte linha: "name: actions-oidc:repo:GH-ACCOUNT/REPO:ref:refs/heads/main"
com o nome da conta GitHub e o nome do repositório.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: actions-oidc-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "watch", "list", "create", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: actions-oidc-binding
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: actions-oidc-role
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: actions-oidc:repo:GH-ACCOUNT/REPO:ref:refs/heads/main
Tarefa 5: Configurar Ações GitHub
Crie um workflow de Ações GitHub no repositório GitHub.
-
Clique em Ações e Configurar um workflow você mesmo.
-
Cole o código a seguir no editor e atualize
server="https://X.X.X.X:6443"
com o IP público do seu cluster.name: OKE-OIDC on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: permissions: id-token: write # Required to receive OIDC tokens # This workflow generates a GitHub Actions OIDC token and runs kubectl command in an OKE cluster jobs: oke-oidc: runs-on: ubuntu-latest steps: - name: Create OIDC Token id: create-oidc-token run: | AUDIENCE="oke-kubernetes-cluster" OIDC_URL_WITH_AUDIENCE="$ACTIONS_ID_TOKEN_REQUEST_URL&audience=$AUDIENCE" IDTOKEN=$(curl \ -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \ -H "Accept: application/json; api-version=2.0" \ "$OIDC_URL_WITH_AUDIENCE" | jq -r .value) echo "::add-mask::${IDTOKEN}" echo "idToken=${IDTOKEN}" >> $GITHUB_OUTPUT - name: Check Permissions in Kubernetes run: | kubectl \ --token=$ \ --server="https://X.X.X.X:6443" \ --insecure-skip-tls-verify \ auth can-i --list
O workflow Ações do Github será executado automaticamente. O comando
kubectl
retornará as operações autorizadas com a configuração RBAC (get/watch/list pods e get/watch/list/create/update/delete deployments).
Confirmações
-
Autor - Greg Verstraeten (Gerente Sênior de Produtos)
-
Colaborador - Gavin Scheele (Membro Sênior da Equipe Técnica)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Enable a GitHub Actions Workflow to Access a Kubernetes Cluster using OKE OpenID Connect Authentication
G17274-01
October 2024