mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-22 01:43:04 +00:00
Merge pull request #3199 from Jakob-Naucke/deploy-demo
github: Add workflow for deploying a CCv0 demo
This commit is contained in:
commit
bb7a722ce0
126
.github/workflows/deploy-ccv0-demo.yaml
vendored
Normal file
126
.github/workflows/deploy-ccv0-demo.yaml
vendored
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
on:
|
||||||
|
issue_comment:
|
||||||
|
types: [created, edited]
|
||||||
|
|
||||||
|
name: deploy-ccv0-demo
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-comment-and-membership:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: |
|
||||||
|
github.event.issue.pull_request
|
||||||
|
&& github.event_name == 'issue_comment'
|
||||||
|
&& github.event.action == 'created'
|
||||||
|
&& startsWith(github.event.comment.body, '/deploy-ccv0-demo')
|
||||||
|
steps:
|
||||||
|
- name: Check membership
|
||||||
|
uses: kata-containers/is-organization-member@1.0.1
|
||||||
|
id: is_organization_member
|
||||||
|
with:
|
||||||
|
organization: kata-containers
|
||||||
|
username: ${{ github.event.comment.user.login }}
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Fail if not member
|
||||||
|
run: |
|
||||||
|
result=${{ steps.is_organization_member.outputs.result }}
|
||||||
|
if [ $result == false ]; then
|
||||||
|
user=${{ github.event.comment.user.login }}
|
||||||
|
echo Either ${user} is not part of the kata-containers organization
|
||||||
|
echo or ${user} has its Organization Visibility set to Private at
|
||||||
|
echo https://github.com/orgs/kata-containers/people?query=${user}
|
||||||
|
echo
|
||||||
|
echo Ensure you change your Organization Visibility to Public and
|
||||||
|
echo trigger the test again.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
build-asset:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: check-comment-and-membership
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
asset:
|
||||||
|
- cloud-hypervisor
|
||||||
|
- firecracker
|
||||||
|
- kernel
|
||||||
|
- qemu
|
||||||
|
- rootfs-image
|
||||||
|
- rootfs-initrd
|
||||||
|
- shim-v2
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install docker
|
||||||
|
run: |
|
||||||
|
curl -fsSL https://test.docker.com -o test-docker.sh
|
||||||
|
sh test-docker.sh
|
||||||
|
|
||||||
|
- name: Prepare confidential container rootfs
|
||||||
|
if: ${{ matrix.asset == 'rootfs-initrd' }}
|
||||||
|
run: |
|
||||||
|
wget -P include_rootfs/etc/ https://raw.githubusercontent.com/confidential-containers/documentation/main/demos/ssh-demo/aa-offline_fs_kbc-keys.json
|
||||||
|
envsubst < docs/how-to/data/confidential-agent-config.toml.in > include_rootfs/etc/kata-config.toml
|
||||||
|
env:
|
||||||
|
AA_KBC_PARAMS: offline_fs_kbc::null
|
||||||
|
|
||||||
|
- name: Build ${{ matrix.asset }}
|
||||||
|
run: |
|
||||||
|
make "${KATA_ASSET}-tarball"
|
||||||
|
build_dir=$(readlink -f build)
|
||||||
|
# store-artifact does not work with symlink
|
||||||
|
sudo cp -r "${build_dir}" "kata-build"
|
||||||
|
env:
|
||||||
|
AA_KBC: offline_fs_kbc
|
||||||
|
INCLUDE_ROOTFS: include_rootfs
|
||||||
|
KATA_ASSET: ${{ matrix.asset }}
|
||||||
|
TAR_OUTPUT: ${{ matrix.asset }}.tar.gz
|
||||||
|
|
||||||
|
- name: store-artifact ${{ matrix.asset }}
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: kata-artifacts
|
||||||
|
path: kata-build/kata-static-${{ matrix.asset }}.tar.xz
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
create-kata-tarball:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build-asset
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: get-artifacts
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: kata-artifacts
|
||||||
|
path: kata-artifacts
|
||||||
|
- name: merge-artifacts
|
||||||
|
run: |
|
||||||
|
./tools/packaging/kata-deploy/local-build/kata-deploy-merge-builds.sh kata-artifacts
|
||||||
|
- name: store-artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: kata-static-tarball
|
||||||
|
path: kata-static.tar.xz
|
||||||
|
|
||||||
|
kata-deploy:
|
||||||
|
needs: create-kata-tarball
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: get-kata-tarball
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: kata-static-tarball
|
||||||
|
- name: build-and-push-kata-deploy-ci
|
||||||
|
id: build-and-push-kata-deploy-ci
|
||||||
|
run: |
|
||||||
|
tag=$(echo $GITHUB_REF | cut -d/ -f3-)
|
||||||
|
pushd $GITHUB_WORKSPACE
|
||||||
|
git checkout $tag
|
||||||
|
pkg_sha=$(git rev-parse HEAD)
|
||||||
|
popd
|
||||||
|
mv kata-static.tar.xz $GITHUB_WORKSPACE/tools/packaging/kata-deploy/kata-static.tar.xz
|
||||||
|
docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t quay.io/confidential-containers/kata-demo:$pkg_sha $GITHUB_WORKSPACE/tools/packaging/kata-deploy
|
||||||
|
docker login -u ${{ secrets.QUAY_DEPLOYER_USERNAME }} -p ${{ secrets.QUAY_DEPLOYER_PASSWORD }} quay.io
|
||||||
|
docker push quay.io/confidential-containers/kata-demo:$pkg_sha
|
||||||
|
mkdir -p packaging/kata-deploy
|
||||||
|
ln -s $GITHUB_WORKSPACE/tools/packaging/kata-deploy/action packaging/kata-deploy/action
|
||||||
|
echo "::set-output name=PKG_SHA::${pkg_sha}"
|
40
docs/how-to/data/confidential-agent-config.toml.in
Normal file
40
docs/how-to/data/confidential-agent-config.toml.in
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Copyright (c) 2021 IBM Corp.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
aa_kbc_params = "$AA_KBC_PARAMS"
|
||||||
|
[endpoints]
|
||||||
|
allowed = [
|
||||||
|
"AddARPNeighborsRequest",
|
||||||
|
"AddSwapRequest",
|
||||||
|
"CloseStdinRequest",
|
||||||
|
"CopyFileRequest",
|
||||||
|
"CreateContainerRequest",
|
||||||
|
"CreateSandboxRequest",
|
||||||
|
"DestroySandboxRequest",
|
||||||
|
"GetMetricsRequest",
|
||||||
|
"GetOOMEventRequest",
|
||||||
|
"GuestDetailsRequest",
|
||||||
|
"ListInterfacesRequest",
|
||||||
|
"ListRoutesRequest",
|
||||||
|
"MemHotplugByProbeRequest",
|
||||||
|
"OnlineCPUMemRequest",
|
||||||
|
"PauseContainerRequest",
|
||||||
|
"PullImageRequest",
|
||||||
|
"ReadStreamRequest",
|
||||||
|
"RemoveContainerRequest",
|
||||||
|
"ResumeContainerRequest",
|
||||||
|
"SetGuestDateTimeRequest",
|
||||||
|
"SignalProcessRequest",
|
||||||
|
"StartContainerRequest",
|
||||||
|
"StartTracingRequest",
|
||||||
|
"StatsContainerRequest",
|
||||||
|
"StopTracingRequest",
|
||||||
|
"TtyWinResizeRequest",
|
||||||
|
"UpdateContainerRequest",
|
||||||
|
"UpdateInterfaceRequest",
|
||||||
|
"UpdateRoutesRequest",
|
||||||
|
"WaitProcessRequest",
|
||||||
|
"WriteStreamRequest"
|
||||||
|
]
|
@ -28,6 +28,8 @@ spec:
|
|||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.nodeName
|
fieldPath: spec.nodeName
|
||||||
|
- name: CONFIGURE_CC
|
||||||
|
value: "yes"
|
||||||
securityContext:
|
securityContext:
|
||||||
privileged: false
|
privileged: false
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
@ -41,7 +41,7 @@ docker run ${TTY_OPT} \
|
|||||||
--env SKOPEO="${SKOPEO:-}" \
|
--env SKOPEO="${SKOPEO:-}" \
|
||||||
--env UMOCI="${UMOCI:-}" \
|
--env UMOCI="${UMOCI:-}" \
|
||||||
--env AA_KBC="${AA_KBC:-}" \
|
--env AA_KBC="${AA_KBC:-}" \
|
||||||
--env INCLUDE_ROOTFS="${INCLUDE_ROOTFS:-}" \
|
--env INCLUDE_ROOTFS="$(realpath "${INCLUDE_ROOTFS:-}" 2> /dev/null || true)" \
|
||||||
-v "${kata_dir}:${kata_dir}" \
|
-v "${kata_dir}:${kata_dir}" \
|
||||||
--rm \
|
--rm \
|
||||||
-w ${script_dir} \
|
-w ${script_dir} \
|
||||||
|
@ -18,6 +18,7 @@ shims=(
|
|||||||
"qemu"
|
"qemu"
|
||||||
"clh"
|
"clh"
|
||||||
)
|
)
|
||||||
|
[ "${CONFIGURE_CC:-}" == "yes" ] && shims+=("cc")
|
||||||
|
|
||||||
# If we fail for any reason a message will be displayed
|
# If we fail for any reason a message will be displayed
|
||||||
die() {
|
die() {
|
||||||
@ -171,7 +172,8 @@ function configure_containerd_runtime() {
|
|||||||
else
|
else
|
||||||
cat <<EOT | tee -a "$containerd_conf_file"
|
cat <<EOT | tee -a "$containerd_conf_file"
|
||||||
[$runtime_table]
|
[$runtime_table]
|
||||||
runtime_type = "${runtime_type}"
|
runtime_type = "${runtime_type}" \
|
||||||
|
$([ "$runtime" == "kata-cc" ] && printf '\n cri_handler = "cc"')
|
||||||
privileged_without_host_devices = true
|
privileged_without_host_devices = true
|
||||||
pod_annotations = ["io.katacontainers.*"]
|
pod_annotations = ["io.katacontainers.*"]
|
||||||
EOT
|
EOT
|
||||||
@ -207,6 +209,17 @@ function configure_containerd() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function configure_kata() {
|
||||||
|
if [ "${CONFIGURE_CC:-}" == "yes" ]; then
|
||||||
|
sed -E \
|
||||||
|
-e 's#^image = .+#initrd = "/opt/kata/share/kata-containers/kata-containers-initrd.img"#' \
|
||||||
|
-e 's#^(kernel_params = .+)"#\1 agent.config_file=/etc/kata-config.toml"#' \
|
||||||
|
-e 's#.*service_offload = .+#service_offload = true#' \
|
||||||
|
"/opt/kata/share/defaults/kata-containers/configuration-qemu.toml" > \
|
||||||
|
"/opt/kata/share/defaults/kata-containers/configuration-cc.toml"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function remove_artifacts() {
|
function remove_artifacts() {
|
||||||
echo "deleting kata artifacts"
|
echo "deleting kata artifacts"
|
||||||
rm -rf /opt/kata/
|
rm -rf /opt/kata/
|
||||||
@ -287,6 +300,7 @@ function main() {
|
|||||||
|
|
||||||
install_artifacts
|
install_artifacts
|
||||||
configure_cri_runtime "$runtime"
|
configure_cri_runtime "$runtime"
|
||||||
|
configure_kata
|
||||||
kubectl label node "$NODE_NAME" --overwrite katacontainers.io/kata-runtime=true
|
kubectl label node "$NODE_NAME" --overwrite katacontainers.io/kata-runtime=true
|
||||||
;;
|
;;
|
||||||
cleanup)
|
cleanup)
|
||||||
|
Loading…
Reference in New Issue
Block a user